File manager - Edit - /home/watersyst/public_html/wp-includes/blocks/comment-content/js.zip
Back
PK ��\s�"H H utils.min.jsnu �[��� /*! This file is auto-generated */ window.wpCookies={each:function(e,t,n){var i,s;if(!e)return 0;if(n=n||e,void 0!==e.length){for(i=0,s=e.length;i<s;i++)if(!1===t.call(n,e[i],i,e))return 0}else for(i in e)if(e.hasOwnProperty(i)&&!1===t.call(n,e[i],i,e))return 0;return 1},getHash:function(e){var t,e=this.get(e);return e&&this.each(e.split("&"),function(e){e=e.split("="),(t=t||{})[e[0]]=e[1]}),t},setHash:function(e,t,n,i,s,r){var o="";this.each(t,function(e,t){o+=(o?"&":"")+t+"="+e}),this.set(e,o,n,i,s,r)},get:function(e){var t,n,i=document.cookie,e=e+"=";if(i){if(-1===(n=i.indexOf("; "+e))){if(0!==(n=i.indexOf(e)))return null}else n+=2;return-1===(t=i.indexOf(";",n))&&(t=i.length),decodeURIComponent(i.substring(n+e.length,t))}},set:function(e,t,n,i,s,r){var o=new Date;n="object"==typeof n&&n.toGMTString?n.toGMTString():parseInt(n,10)?(o.setTime(o.getTime()+1e3*parseInt(n,10)),o.toGMTString()):"",document.cookie=e+"="+encodeURIComponent(t)+(n?"; expires="+n:"")+(i?"; path="+i:"")+(s?"; domain="+s:"")+(r?"; secure":"")},remove:function(e,t,n,i){this.set(e,"",-1e3,t,n,i)}},window.getUserSetting=function(e,t){var n=getAllUserSettings();return n.hasOwnProperty(e)?n[e]:void 0!==t?t:""},window.setUserSetting=function(e,t,n){var i,s,r,o;return"object"==typeof userSettings&&(i=userSettings.uid,s=wpCookies.getHash("wp-settings-"+i),r=userSettings.url,o=!!userSettings.secure,e=e.toString().replace(/[^A-Za-z0-9_-]/g,""),t="number"==typeof t?parseInt(t,10):t.toString().replace(/[^A-Za-z0-9_-]/g,""),s=s||{},n?delete s[e]:s[e]=t,wpCookies.setHash("wp-settings-"+i,s,31536e3,r,"",o),wpCookies.set("wp-settings-time-"+i,userSettings.time,31536e3,r,"",o),e)},window.deleteUserSetting=function(e){return setUserSetting(e,"",1)},window.getAllUserSettings=function(){return"object"==typeof userSettings&&wpCookies.getHash("wp-settings-"+userSettings.uid)||{}};PK ��\�o's9 9 hoverIntent.jsnu �[��� /*! * hoverIntent v1.10.2 // 2020.04.28 // jQuery v1.7.0+ * http://briancherne.github.io/jquery-hoverIntent/ * * You may use hoverIntent under the terms of the MIT license. Basically that * means you are free to use hoverIntent as long as this header is left intact. * Copyright 2007-2019 Brian Cherne */ /** * hoverIntent is similar to jQuery's built-in "hover" method except that * instead of firing the handlerIn function immediately, hoverIntent checks * to see if the user's mouse has slowed down (beneath the sensitivity * threshold) before firing the event. The handlerOut function is only * called after a matching handlerIn. * * // basic usage ... just like .hover() * .hoverIntent( handlerIn, handlerOut ) * .hoverIntent( handlerInOut ) * * // basic usage ... with event delegation! * .hoverIntent( handlerIn, handlerOut, selector ) * .hoverIntent( handlerInOut, selector ) * * // using a basic configuration object * .hoverIntent( config ) * * @param handlerIn function OR configuration object * @param handlerOut function OR selector for delegation OR undefined * @param selector selector OR undefined * @author Brian Cherne <brian(at)cherne(dot)net> */ ;(function(factory) { 'use strict'; if (typeof define === 'function' && define.amd) { define(['jquery'], factory); } else if (typeof module === 'object' && module.exports) { module.exports = factory(require('jquery')); } else if (jQuery && !jQuery.fn.hoverIntent) { factory(jQuery); } })(function($) { 'use strict'; // default configuration values var _cfg = { interval: 100, sensitivity: 6, timeout: 0 }; // counter used to generate an ID for each instance var INSTANCE_COUNT = 0; // current X and Y position of mouse, updated during mousemove tracking (shared across instances) var cX, cY; // saves the current pointer position coordinates based on the given mousemove event var track = function(ev) { cX = ev.pageX; cY = ev.pageY; }; // compares current and previous mouse positions var compare = function(ev,$el,s,cfg) { // compare mouse positions to see if pointer has slowed enough to trigger `over` function if ( Math.sqrt( (s.pX-cX)*(s.pX-cX) + (s.pY-cY)*(s.pY-cY) ) < cfg.sensitivity ) { $el.off(s.event,track); delete s.timeoutId; // set hoverIntent state as active for this element (permits `out` handler to trigger) s.isActive = true; // overwrite old mouseenter event coordinates with most recent pointer position ev.pageX = cX; ev.pageY = cY; // clear coordinate data from state object delete s.pX; delete s.pY; return cfg.over.apply($el[0],[ev]); } else { // set previous coordinates for next comparison s.pX = cX; s.pY = cY; // use self-calling timeout, guarantees intervals are spaced out properly (avoids JavaScript timer bugs) s.timeoutId = setTimeout( function(){compare(ev, $el, s, cfg);} , cfg.interval ); } }; // triggers given `out` function at configured `timeout` after a mouseleave and clears state var delay = function(ev,$el,s,out) { var data = $el.data('hoverIntent'); if (data) { delete data[s.id]; } return out.apply($el[0],[ev]); }; // checks if `value` is a function var isFunction = function(value) { return typeof value === 'function'; }; $.fn.hoverIntent = function(handlerIn,handlerOut,selector) { // instance ID, used as a key to store and retrieve state information on an element var instanceId = INSTANCE_COUNT++; // extend the default configuration and parse parameters var cfg = $.extend({}, _cfg); if ( $.isPlainObject(handlerIn) ) { cfg = $.extend(cfg, handlerIn); if ( !isFunction(cfg.out) ) { cfg.out = cfg.over; } } else if ( isFunction(handlerOut) ) { cfg = $.extend(cfg, { over: handlerIn, out: handlerOut, selector: selector } ); } else { cfg = $.extend(cfg, { over: handlerIn, out: handlerIn, selector: handlerOut } ); } // A private function for handling mouse 'hovering' var handleHover = function(e) { // cloned event to pass to handlers (copy required for event object to be passed in IE) var ev = $.extend({},e); // the current target of the mouse event, wrapped in a jQuery object var $el = $(this); // read hoverIntent data from element (or initialize if not present) var hoverIntentData = $el.data('hoverIntent'); if (!hoverIntentData) { $el.data('hoverIntent', (hoverIntentData = {})); } // read per-instance state from element (or initialize if not present) var state = hoverIntentData[instanceId]; if (!state) { hoverIntentData[instanceId] = state = { id: instanceId }; } // state properties: // id = instance ID, used to clean up data // timeoutId = timeout ID, reused for tracking mouse position and delaying "out" handler // isActive = plugin state, true after `over` is called just until `out` is called // pX, pY = previously-measured pointer coordinates, updated at each polling interval // event = string representing the namespaced event used for mouse tracking // clear any existing timeout if (state.timeoutId) { state.timeoutId = clearTimeout(state.timeoutId); } // namespaced event used to register and unregister mousemove tracking var mousemove = state.event = 'mousemove.hoverIntent.hoverIntent'+instanceId; // handle the event, based on its type if (e.type === 'mouseenter') { // do nothing if already active if (state.isActive) { return; } // set "previous" X and Y position based on initial entry point state.pX = ev.pageX; state.pY = ev.pageY; // update "current" X and Y position based on mousemove $el.off(mousemove,track).on(mousemove,track); // start polling interval (self-calling timeout) to compare mouse coordinates over time state.timeoutId = setTimeout( function(){compare(ev,$el,state,cfg);} , cfg.interval ); } else { // "mouseleave" // do nothing if not already active if (!state.isActive) { return; } // unbind expensive mousemove event $el.off(mousemove,track); // if hoverIntent state is true, then call the mouseOut function after the specified delay state.timeoutId = setTimeout( function(){delay(ev,$el,state,cfg.out);} , cfg.timeout ); } }; // listen for mouseenter and mouseleave return this.on({'mouseenter.hoverIntent':handleHover,'mouseleave.hoverIntent':handleHover}, cfg.selector); }; }); PK ��\��3 �3 wp-emoji-loader.jsnu �[��� /** * @output wp-includes/js/wp-emoji-loader.js */ /* eslint-env es6 */ // Note: This is loaded as a script module, so there is no need for an IIFE to prevent pollution of the global scope. /** * Emoji Settings as exported in PHP via _print_emoji_detection_script(). * @typedef WPEmojiSettings * @type {object} * @property {?object} source * @property {?string} source.concatemoji * @property {?string} source.twemoji * @property {?string} source.wpemoji */ const settings = /** @type {WPEmojiSettings} */ ( JSON.parse( document.getElementById( 'wp-emoji-settings' ).textContent ) ); // For compatibility with other scripts that read from this global, in particular wp-includes/js/wp-emoji.js (source file: js/_enqueues/wp/emoji.js). window._wpemojiSettings = settings; /** * Support tests. * @typedef SupportTests * @type {object} * @property {?boolean} flag * @property {?boolean} emoji */ const sessionStorageKey = 'wpEmojiSettingsSupports'; const tests = [ 'flag', 'emoji' ]; /** * Checks whether the browser supports offloading to a Worker. * * @since 6.3.0 * * @private * * @returns {boolean} */ function supportsWorkerOffloading() { return ( typeof Worker !== 'undefined' && typeof OffscreenCanvas !== 'undefined' && typeof URL !== 'undefined' && URL.createObjectURL && typeof Blob !== 'undefined' ); } /** * @typedef SessionSupportTests * @type {object} * @property {number} timestamp * @property {SupportTests} supportTests */ /** * Get support tests from session. * * @since 6.3.0 * * @private * * @returns {?SupportTests} Support tests, or null if not set or older than 1 week. */ function getSessionSupportTests() { try { /** @type {SessionSupportTests} */ const item = JSON.parse( sessionStorage.getItem( sessionStorageKey ) ); if ( typeof item === 'object' && typeof item.timestamp === 'number' && new Date().valueOf() < item.timestamp + 604800 && // Note: Number is a week in seconds. typeof item.supportTests === 'object' ) { return item.supportTests; } } catch ( e ) {} return null; } /** * Persist the supports in session storage. * * @since 6.3.0 * * @private * * @param {SupportTests} supportTests Support tests. */ function setSessionSupportTests( supportTests ) { try { /** @type {SessionSupportTests} */ const item = { supportTests: supportTests, timestamp: new Date().valueOf() }; sessionStorage.setItem( sessionStorageKey, JSON.stringify( item ) ); } catch ( e ) {} } /** * Checks if two sets of Emoji characters render the same visually. * * This is used to determine if the browser is rendering an emoji with multiple data points * correctly. set1 is the emoji in the correct form, using a zero-width joiner. set2 is the emoji * in the incorrect form, using a zero-width space. If the two sets render the same, then the browser * does not support the emoji correctly. * * This function may be serialized to run in a Worker. Therefore, it cannot refer to variables from the containing * scope. Everything must be passed by parameters. * * @since 4.9.0 * * @private * * @param {CanvasRenderingContext2D} context 2D Context. * @param {string} set1 Set of Emoji to test. * @param {string} set2 Set of Emoji to test. * * @return {boolean} True if the two sets render the same. */ function emojiSetsRenderIdentically( context, set1, set2 ) { // Cleanup from previous test. context.clearRect( 0, 0, context.canvas.width, context.canvas.height ); context.fillText( set1, 0, 0 ); const rendered1 = new Uint32Array( context.getImageData( 0, 0, context.canvas.width, context.canvas.height ).data ); // Cleanup from previous test. context.clearRect( 0, 0, context.canvas.width, context.canvas.height ); context.fillText( set2, 0, 0 ); const rendered2 = new Uint32Array( context.getImageData( 0, 0, context.canvas.width, context.canvas.height ).data ); return rendered1.every( ( rendered2Data, index ) => { return rendered2Data === rendered2[ index ]; } ); } /** * Checks if the center point of a single emoji is empty. * * This is used to determine if the browser is rendering an emoji with a single data point * correctly. The center point of an incorrectly rendered emoji will be empty. A correctly * rendered emoji will have a non-zero value at the center point. * * This function may be serialized to run in a Worker. Therefore, it cannot refer to variables from the containing * scope. Everything must be passed by parameters. * * @since 6.8.2 * * @private * * @param {CanvasRenderingContext2D} context 2D Context. * @param {string} emoji Emoji to test. * * @return {boolean} True if the center point is empty. */ function emojiRendersEmptyCenterPoint( context, emoji ) { // Cleanup from previous test. context.clearRect( 0, 0, context.canvas.width, context.canvas.height ); context.fillText( emoji, 0, 0 ); // Test if the center point (16, 16) is empty (0,0,0,0). const centerPoint = context.getImageData(16, 16, 1, 1); for ( let i = 0; i < centerPoint.data.length; i++ ) { if ( centerPoint.data[ i ] !== 0 ) { // Stop checking the moment it's known not to be empty. return false; } } return true; } /** * Determines if the browser properly renders Emoji that Twemoji can supplement. * * This function may be serialized to run in a Worker. Therefore, it cannot refer to variables from the containing * scope. Everything must be passed by parameters. * * @since 4.2.0 * * @private * * @param {CanvasRenderingContext2D} context 2D Context. * @param {string} type Whether to test for support of "flag" or "emoji". * @param {Function} emojiSetsRenderIdentically Reference to emojiSetsRenderIdentically function, needed due to minification. * @param {Function} emojiRendersEmptyCenterPoint Reference to emojiRendersEmptyCenterPoint function, needed due to minification. * * @return {boolean} True if the browser can render emoji, false if it cannot. */ function browserSupportsEmoji( context, type, emojiSetsRenderIdentically, emojiRendersEmptyCenterPoint ) { let isIdentical; switch ( type ) { case 'flag': /* * Test for Transgender flag compatibility. Added in Unicode 13. * * To test for support, we try to render it, and compare the rendering to how it would look if * the browser doesn't render it correctly (white flag emoji + transgender symbol). */ isIdentical = emojiSetsRenderIdentically( context, '\uD83C\uDFF3\uFE0F\u200D\u26A7\uFE0F', // as a zero-width joiner sequence '\uD83C\uDFF3\uFE0F\u200B\u26A7\uFE0F' // separated by a zero-width space ); if ( isIdentical ) { return false; } /* * Test for Sark flag compatibility. This is the least supported of the letter locale flags, * so gives us an easy test for full support. * * To test for support, we try to render it, and compare the rendering to how it would look if * the browser doesn't render it correctly ([C] + [Q]). */ isIdentical = emojiSetsRenderIdentically( context, '\uD83C\uDDE8\uD83C\uDDF6', // as the sequence of two code points '\uD83C\uDDE8\u200B\uD83C\uDDF6' // as the two code points separated by a zero-width space ); if ( isIdentical ) { return false; } /* * Test for English flag compatibility. England is a country in the United Kingdom, it * does not have a two letter locale code but rather a five letter sub-division code. * * To test for support, we try to render it, and compare the rendering to how it would look if * the browser doesn't render it correctly (black flag emoji + [G] + [B] + [E] + [N] + [G]). */ isIdentical = emojiSetsRenderIdentically( context, // as the flag sequence '\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67\uDB40\uDC7F', // with each code point separated by a zero-width space '\uD83C\uDFF4\u200B\uDB40\uDC67\u200B\uDB40\uDC62\u200B\uDB40\uDC65\u200B\uDB40\uDC6E\u200B\uDB40\uDC67\u200B\uDB40\uDC7F' ); return ! isIdentical; case 'emoji': /* * Is there a large, hairy, humanoid mythical creature living in the browser? * * To test for Emoji 17.0 support, try to render a new emoji: Hairy Creature. * * The hairy creature emoji is a single code point emoji. Testing for browser * support required testing the center point of the emoji to see if it is empty. * * 0xD83E 0x1FAC8 (\uD83E\u1FAC8) == Hairy creature. * * When updating this test, please ensure that the emoji is either a single code point * or switch to using the emojiSetsRenderIdentically function and testing with a zero-width * joiner vs a zero-width space. */ const notSupported = emojiRendersEmptyCenterPoint( context, '\uD83E\u1FAC8' ); return ! notSupported; } return false; } /** * Checks emoji support tests. * * This function may be serialized to run in a Worker. Therefore, it cannot refer to variables from the containing * scope. Everything must be passed by parameters. * * @since 6.3.0 * * @private * * @param {string[]} tests Tests. * @param {Function} browserSupportsEmoji Reference to browserSupportsEmoji function, needed due to minification. * @param {Function} emojiSetsRenderIdentically Reference to emojiSetsRenderIdentically function, needed due to minification. * @param {Function} emojiRendersEmptyCenterPoint Reference to emojiRendersEmptyCenterPoint function, needed due to minification. * * @return {SupportTests} Support tests. */ function testEmojiSupports( tests, browserSupportsEmoji, emojiSetsRenderIdentically, emojiRendersEmptyCenterPoint ) { let canvas; if ( typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope ) { canvas = new OffscreenCanvas( 300, 150 ); // Dimensions are default for HTMLCanvasElement. } else { canvas = document.createElement( 'canvas' ); } const context = canvas.getContext( '2d', { willReadFrequently: true } ); /* * Chrome on OS X added native emoji rendering in M41. Unfortunately, * it doesn't work when the font is bolder than 500 weight. So, we * check for bold rendering support to avoid invisible emoji in Chrome. */ context.textBaseline = 'top'; context.font = '600 32px Arial'; const supports = {}; tests.forEach( ( test ) => { supports[ test ] = browserSupportsEmoji( context, test, emojiSetsRenderIdentically, emojiRendersEmptyCenterPoint ); } ); return supports; } /** * Adds a script to the head of the document. * * @ignore * * @since 4.2.0 * * @param {string} src The url where the script is located. * * @return {void} */ function addScript( src ) { const script = document.createElement( 'script' ); script.src = src; script.defer = true; document.head.appendChild( script ); } settings.supports = { everything: true, everythingExceptFlag: true }; // Obtain the emoji support from the browser, asynchronously when possible. new Promise( ( resolve ) => { let supportTests = getSessionSupportTests(); if ( supportTests ) { resolve( supportTests ); return; } if ( supportsWorkerOffloading() ) { try { // Note that the functions are being passed as arguments due to minification. const workerScript = 'postMessage(' + testEmojiSupports.toString() + '(' + [ JSON.stringify( tests ), browserSupportsEmoji.toString(), emojiSetsRenderIdentically.toString(), emojiRendersEmptyCenterPoint.toString() ].join( ',' ) + '));'; const blob = new Blob( [ workerScript ], { type: 'text/javascript' } ); const worker = new Worker( URL.createObjectURL( blob ), { name: 'wpTestEmojiSupports' } ); worker.onmessage = ( event ) => { supportTests = event.data; setSessionSupportTests( supportTests ); worker.terminate(); resolve( supportTests ); }; return; } catch ( e ) {} } supportTests = testEmojiSupports( tests, browserSupportsEmoji, emojiSetsRenderIdentically, emojiRendersEmptyCenterPoint ); setSessionSupportTests( supportTests ); resolve( supportTests ); } ) // Once the browser emoji support has been obtained from the session, finalize the settings. .then( ( supportTests ) => { /* * Tests the browser support for flag emojis and other emojis, and adjusts the * support settings accordingly. */ for ( const test in supportTests ) { settings.supports[ test ] = supportTests[ test ]; settings.supports.everything = settings.supports.everything && settings.supports[ test ]; if ( 'flag' !== test ) { settings.supports.everythingExceptFlag = settings.supports.everythingExceptFlag && settings.supports[ test ]; } } settings.supports.everythingExceptFlag = settings.supports.everythingExceptFlag && ! settings.supports.flag; // When the browser can not render everything we need to load a polyfill. if ( ! settings.supports.everything ) { const src = settings.source || {}; if ( src.concatemoji ) { addScript( src.concatemoji ); } else if ( src.wpemoji && src.twemoji ) { addScript( src.twemoji ); addScript( src.wpemoji ); } } } ); PK ��\h=\+9X 9X jcrop/jquery.Jcrop.min.jsnu �[��� /** * jquery.Jcrop.min.js v0.9.15 (build:20180819) * jQuery Image Cropping Plugin - released under MIT License * Copyright (c) 2008-2018 Tapmodo Interactive LLC * https://github.com/tapmodo/Jcrop */ !function($){$.Jcrop=function(obj,opt){function px(n){return Math.round(n)+"px"}function cssClass(cl){return options.baseClass+"-"+cl}function supportsColorFade(){return $.fx.step.hasOwnProperty("backgroundColor")}function getPos(obj){var pos=$(obj).offset();return[pos.left,pos.top]}function mouseAbs(e){return[e.pageX-docOffset[0],e.pageY-docOffset[1]]}function setOptions(opt){"object"!=typeof opt&&(opt={}),options=$.extend(options,opt),$.each(["onChange","onSelect","onRelease","onDblClick"],function(i,e){"function"!=typeof options[e]&&(options[e]=function(){})})}function startDragMode(mode,pos,touch){if(docOffset=getPos($img),Tracker.setCursor("move"===mode?mode:mode+"-resize"),"move"===mode)return Tracker.activateHandlers(createMover(pos),doneSelect,touch);var fc=Coords.getFixed(),opp=oppLockCorner(mode),opc=Coords.getCorner(oppLockCorner(opp));Coords.setPressed(Coords.getCorner(opp)),Coords.setCurrent(opc),Tracker.activateHandlers(dragmodeHandler(mode,fc),doneSelect,touch)}function dragmodeHandler(mode,f){return function(pos){if(options.aspectRatio)switch(mode){case"e":pos[1]=f.y+1;break;case"w":pos[1]=f.y+1;break;case"n":pos[0]=f.x+1;break;case"s":pos[0]=f.x+1}else switch(mode){case"e":pos[1]=f.y2;break;case"w":pos[1]=f.y2;break;case"n":pos[0]=f.x2;break;case"s":pos[0]=f.x2}Coords.setCurrent(pos),Selection.update()}}function createMover(pos){var lloc=pos;return KeyManager.watchKeys(),function(pos){Coords.moveOffset([pos[0]-lloc[0],pos[1]-lloc[1]]),lloc=pos,Selection.update()}}function oppLockCorner(ord){switch(ord){case"n":return"sw";case"s":return"nw";case"e":return"nw";case"w":return"ne";case"ne":return"sw";case"nw":return"se";case"se":return"nw";case"sw":return"ne"}}function createDragger(ord){return function(e){return options.disabled?!1:"move"!==ord||options.allowMove?(docOffset=getPos($img),btndown=!0,startDragMode(ord,mouseAbs(e)),e.stopPropagation(),e.preventDefault(),!1):!1}}function presize($obj,w,h){var nw=$obj.width(),nh=$obj.height();nw>w&&w>0&&(nw=w,nh=w/$obj.width()*$obj.height()),nh>h&&h>0&&(nh=h,nw=h/$obj.height()*$obj.width()),xscale=$obj.width()/nw,yscale=$obj.height()/nh,$obj.width(nw).height(nh)}function unscale(c){return{x:c.x*xscale,y:c.y*yscale,x2:c.x2*xscale,y2:c.y2*yscale,w:c.w*xscale,h:c.h*yscale}}function doneSelect(){var c=Coords.getFixed();c.w>options.minSelect[0]&&c.h>options.minSelect[1]?(Selection.enableHandles(),Selection.done()):Selection.release(),Tracker.setCursor(options.allowSelect?"crosshair":"default")}function newSelection(e){if(!options.disabled&&options.allowSelect){btndown=!0,docOffset=getPos($img),Selection.disableHandles(),Tracker.setCursor("crosshair");var pos=mouseAbs(e);return Coords.setPressed(pos),Selection.update(),Tracker.activateHandlers(selectDrag,doneSelect,"touch"===e.type.substring(0,5)),KeyManager.watchKeys(),e.stopPropagation(),e.preventDefault(),!1}}function selectDrag(pos){Coords.setCurrent(pos),Selection.update()}function newTracker(){var trk=$("<div></div>").addClass(cssClass("tracker"));return is_msie&&trk.css({opacity:0,backgroundColor:"white"}),trk}function setClass(cname){$div.removeClass().addClass(cssClass("holder")).addClass(cname)}function animateTo(a,callback){function queueAnimator(){window.setTimeout(animator,interv)}var x1=a[0]/xscale,y1=a[1]/yscale,x2=a[2]/xscale,y2=a[3]/yscale;if(!animating){var animto=Coords.flipCoords(x1,y1,x2,y2),c=Coords.getFixed(),initcr=[c.x,c.y,c.x2,c.y2],animat=initcr,interv=options.animationDelay,ix1=animto[0]-initcr[0],iy1=animto[1]-initcr[1],ix2=animto[2]-initcr[2],iy2=animto[3]-initcr[3],pcent=0,velocity=options.swingSpeed;x1=animat[0],y1=animat[1],x2=animat[2],y2=animat[3],Selection.animMode(!0);var animator=function(){return function(){pcent+=(100-pcent)/velocity,animat[0]=Math.round(x1+pcent/100*ix1),animat[1]=Math.round(y1+pcent/100*iy1),animat[2]=Math.round(x2+pcent/100*ix2),animat[3]=Math.round(y2+pcent/100*iy2),pcent>=99.8&&(pcent=100),100>pcent?(setSelectRaw(animat),queueAnimator()):(Selection.done(),Selection.animMode(!1),"function"==typeof callback&&callback.call(api))}}();queueAnimator()}}function setSelect(rect){setSelectRaw([rect[0]/xscale,rect[1]/yscale,rect[2]/xscale,rect[3]/yscale]),options.onSelect.call(api,unscale(Coords.getFixed())),Selection.enableHandles()}function setSelectRaw(l){Coords.setPressed([l[0],l[1]]),Coords.setCurrent([l[2],l[3]]),Selection.update()}function tellSelect(){return unscale(Coords.getFixed())}function tellScaled(){return Coords.getFixed()}function setOptionsNew(opt){setOptions(opt),interfaceUpdate()}function disableCrop(){options.disabled=!0,Selection.disableHandles(),Selection.setCursor("default"),Tracker.setCursor("default")}function enableCrop(){options.disabled=!1,interfaceUpdate()}function cancelCrop(){Selection.done(),Tracker.activateHandlers(null,null)}function destroy(){$div.remove(),$origimg.show(),$origimg.css("visibility","visible"),$(obj).removeData("Jcrop")}function setImage(src,callback){Selection.release(),disableCrop();var img=new Image;img.onload=function(){var iw=img.width,ih=img.height,bw=options.boxWidth,bh=options.boxHeight;$img.width(iw).height(ih),$img.attr("src",src),$img2.attr("src",src),presize($img,bw,bh),boundx=$img.width(),boundy=$img.height(),$img2.width(boundx).height(boundy),$trk.width(boundx+2*bound).height(boundy+2*bound),$div.width(boundx).height(boundy),Shade.resize(boundx,boundy),enableCrop(),"function"==typeof callback&&callback.call(api)},img.src=src}function colorChangeMacro($obj,color,now){var mycolor=color||options.bgColor;options.bgFade&&supportsColorFade()&&options.fadeTime&&!now?$obj.animate({backgroundColor:mycolor},{queue:!1,duration:options.fadeTime}):$obj.css("backgroundColor",mycolor)}function interfaceUpdate(alt){options.allowResize?alt?Selection.enableOnly():Selection.enableHandles():Selection.disableHandles(),Tracker.setCursor(options.allowSelect?"crosshair":"default"),Selection.setCursor(options.allowMove?"move":"default"),options.hasOwnProperty("trueSize")&&(xscale=options.trueSize[0]/boundx,yscale=options.trueSize[1]/boundy),options.hasOwnProperty("setSelect")&&(setSelect(options.setSelect),Selection.done(),delete options.setSelect),Shade.refresh(),options.bgColor!=bgcolor&&(colorChangeMacro(options.shade?Shade.getShades():$div,options.shade?options.shadeColor||options.bgColor:options.bgColor),bgcolor=options.bgColor),bgopacity!=options.bgOpacity&&(bgopacity=options.bgOpacity,options.shade?Shade.refresh():Selection.setBgOpacity(bgopacity)),xlimit=options.maxSize[0]||0,ylimit=options.maxSize[1]||0,xmin=options.minSize[0]||0,ymin=options.minSize[1]||0,options.hasOwnProperty("outerImage")&&($img.attr("src",options.outerImage),delete options.outerImage),Selection.refresh()}var docOffset,options=$.extend({},$.Jcrop.defaults),_ua=navigator.userAgent.toLowerCase(),is_msie=/msie/.test(_ua),ie6mode=/msie [1-6]\./.test(_ua);"object"!=typeof obj&&(obj=$(obj)[0]),"object"!=typeof opt&&(opt={}),setOptions(opt);var img_css={border:"none",visibility:"visible",margin:0,padding:0,position:"absolute",top:0,left:0},$origimg=$(obj),img_mode=!0;if("IMG"==obj.tagName){if(0!=$origimg[0].width&&0!=$origimg[0].height)$origimg.width($origimg[0].width),$origimg.height($origimg[0].height);else{var tempImage=new Image;tempImage.src=$origimg[0].src,$origimg.width(tempImage.width),$origimg.height(tempImage.height)}var $img=$origimg.clone().removeAttr("id").css(img_css).show();$img.width($origimg.width()),$img.height($origimg.height()),$origimg.after($img).hide()}else $img=$origimg.css(img_css).show(),img_mode=!1,null===options.shade&&(options.shade=!0);presize($img,options.boxWidth,options.boxHeight);var boundx=$img.width(),boundy=$img.height(),$div=$("<div />").width(boundx).height(boundy).addClass(cssClass("holder")).css({position:"relative",backgroundColor:options.bgColor}).insertAfter($origimg).append($img);options.addClass&&$div.addClass(options.addClass);var $img2=$("<div />"),$img_holder=$("<div />").width("100%").height("100%").css({zIndex:310,position:"absolute",overflow:"hidden"}),$hdl_holder=$("<div />").width("100%").height("100%").css("zIndex",320),$sel=$("<div />").css({position:"absolute",zIndex:600}).dblclick(function(){var c=Coords.getFixed();options.onDblClick.call(api,c)}).insertBefore($img).append($img_holder,$hdl_holder);img_mode&&($img2=$("<img />").attr("src",$img.attr("src")).css(img_css).width(boundx).height(boundy),$img_holder.append($img2)),ie6mode&&$sel.css({overflowY:"hidden"});var xlimit,ylimit,xmin,ymin,xscale,yscale,btndown,animating,shift_down,bound=options.boundary,$trk=newTracker().width(boundx+2*bound).height(boundy+2*bound).css({position:"absolute",top:px(-bound),left:px(-bound),zIndex:290}).mousedown(newSelection),bgcolor=options.bgColor,bgopacity=options.bgOpacity;docOffset=getPos($img);var Touch=function(){function hasTouchSupport(){var i,support={},events=["touchstart","touchmove","touchend"],el=document.createElement("div");try{for(i=0;i<events.length;i++){var eventName=events[i];eventName="on"+eventName;var isSupported=eventName in el;isSupported||(el.setAttribute(eventName,"return;"),isSupported="function"==typeof el[eventName]),support[events[i]]=isSupported}return support.touchstart&&support.touchend&&support.touchmove}catch(err){return!1}}function detectSupport(){return options.touchSupport===!0||options.touchSupport===!1?options.touchSupport:hasTouchSupport()}return{createDragger:function(ord){return function(e){return options.disabled?!1:"move"!==ord||options.allowMove?(docOffset=getPos($img),btndown=!0,startDragMode(ord,mouseAbs(Touch.cfilter(e)),!0),e.stopPropagation(),e.preventDefault(),!1):!1}},newSelection:function(e){return newSelection(Touch.cfilter(e))},cfilter:function(e){return e.pageX=e.originalEvent.changedTouches[0].pageX,e.pageY=e.originalEvent.changedTouches[0].pageY,e},isSupported:hasTouchSupport,support:detectSupport()}}(),Coords=function(){function setPressed(pos){pos=rebound(pos),x2=x1=pos[0],y2=y1=pos[1]}function setCurrent(pos){pos=rebound(pos),ox=pos[0]-x2,oy=pos[1]-y2,x2=pos[0],y2=pos[1]}function getOffset(){return[ox,oy]}function moveOffset(offset){var ox=offset[0],oy=offset[1];0>x1+ox&&(ox-=ox+x1),0>y1+oy&&(oy-=oy+y1),y2+oy>boundy&&(oy+=boundy-(y2+oy)),x2+ox>boundx&&(ox+=boundx-(x2+ox)),x1+=ox,x2+=ox,y1+=oy,y2+=oy}function getCorner(ord){var c=getFixed();switch(ord){case"ne":return[c.x2,c.y];case"nw":return[c.x,c.y];case"se":return[c.x2,c.y2];case"sw":return[c.x,c.y2]}}function getFixed(){if(!options.aspectRatio)return getRect();var xx,yy,w,h,aspect=options.aspectRatio,min_x=options.minSize[0]/xscale,max_x=options.maxSize[0]/xscale,max_y=options.maxSize[1]/yscale,rw=x2-x1,rh=y2-y1,rwa=Math.abs(rw),rha=Math.abs(rh),real_ratio=rwa/rha;return 0===max_x&&(max_x=10*boundx),0===max_y&&(max_y=10*boundy),aspect>real_ratio?(yy=y2,w=rha*aspect,xx=0>rw?x1-w:w+x1,0>xx?(xx=0,h=Math.abs((xx-x1)/aspect),yy=0>rh?y1-h:h+y1):xx>boundx&&(xx=boundx,h=Math.abs((xx-x1)/aspect),yy=0>rh?y1-h:h+y1)):(xx=x2,h=rwa/aspect,yy=0>rh?y1-h:y1+h,0>yy?(yy=0,w=Math.abs((yy-y1)*aspect),xx=0>rw?x1-w:w+x1):yy>boundy&&(yy=boundy,w=Math.abs(yy-y1)*aspect,xx=0>rw?x1-w:w+x1)),xx>x1?(min_x>xx-x1?xx=x1+min_x:xx-x1>max_x&&(xx=x1+max_x),yy=yy>y1?y1+(xx-x1)/aspect:y1-(xx-x1)/aspect):x1>xx&&(min_x>x1-xx?xx=x1-min_x:x1-xx>max_x&&(xx=x1-max_x),yy=yy>y1?y1+(x1-xx)/aspect:y1-(x1-xx)/aspect),0>xx?(x1-=xx,xx=0):xx>boundx&&(x1-=xx-boundx,xx=boundx),0>yy?(y1-=yy,yy=0):yy>boundy&&(y1-=yy-boundy,yy=boundy),makeObj(flipCoords(x1,y1,xx,yy))}function rebound(p){return p[0]<0&&(p[0]=0),p[1]<0&&(p[1]=0),p[0]>boundx&&(p[0]=boundx),p[1]>boundy&&(p[1]=boundy),[Math.round(p[0]),Math.round(p[1])]}function flipCoords(x1,y1,x2,y2){var xa=x1,xb=x2,ya=y1,yb=y2;return x1>x2&&(xa=x2,xb=x1),y1>y2&&(ya=y2,yb=y1),[xa,ya,xb,yb]}function getRect(){var delta,xsize=x2-x1,ysize=y2-y1;return xlimit&&Math.abs(xsize)>xlimit&&(x2=xsize>0?x1+xlimit:x1-xlimit),ylimit&&Math.abs(ysize)>ylimit&&(y2=ysize>0?y1+ylimit:y1-ylimit),ymin/yscale&&Math.abs(ysize)<ymin/yscale&&(y2=ysize>0?y1+ymin/yscale:y1-ymin/yscale),xmin/xscale&&Math.abs(xsize)<xmin/xscale&&(x2=xsize>0?x1+xmin/xscale:x1-xmin/xscale),0>x1&&(x2-=x1,x1-=x1),0>y1&&(y2-=y1,y1-=y1),0>x2&&(x1-=x2,x2-=x2),0>y2&&(y1-=y2,y2-=y2),x2>boundx&&(delta=x2-boundx,x1-=delta,x2-=delta),y2>boundy&&(delta=y2-boundy,y1-=delta,y2-=delta),x1>boundx&&(delta=x1-boundy,y2-=delta,y1-=delta),y1>boundy&&(delta=y1-boundy,y2-=delta,y1-=delta),makeObj(flipCoords(x1,y1,x2,y2))}function makeObj(a){return{x:a[0],y:a[1],x2:a[2],y2:a[3],w:a[2]-a[0],h:a[3]-a[1]}}var ox,oy,x1=0,y1=0,x2=0,y2=0;return{flipCoords:flipCoords,setPressed:setPressed,setCurrent:setCurrent,getOffset:getOffset,moveOffset:moveOffset,getCorner:getCorner,getFixed:getFixed}}(),Shade=function(){function resizeShades(w,h){shades.left.css({height:px(h)}),shades.right.css({height:px(h)})}function updateAuto(){return updateShade(Coords.getFixed())}function updateShade(c){shades.top.css({left:px(c.x),width:px(c.w),height:px(c.y)}),shades.bottom.css({top:px(c.y2),left:px(c.x),width:px(c.w),height:px(boundy-c.y2)}),shades.right.css({left:px(c.x2),width:px(boundx-c.x2)}),shades.left.css({width:px(c.x)})}function createShade(){return $("<div />").css({position:"absolute",backgroundColor:options.shadeColor||options.bgColor}).appendTo(holder)}function enableShade(){enabled||(enabled=!0,holder.insertBefore($img),updateAuto(),Selection.setBgOpacity(1,0,1),$img2.hide(),setBgColor(options.shadeColor||options.bgColor,1),Selection.isAwake()?setOpacity(options.bgOpacity,1):setOpacity(1,1))}function setBgColor(color,now){colorChangeMacro(getShades(),color,now)}function disableShade(){enabled&&(holder.remove(),$img2.show(),enabled=!1,Selection.isAwake()?Selection.setBgOpacity(options.bgOpacity,1,1):(Selection.setBgOpacity(1,1,1),Selection.disableHandles()),colorChangeMacro($div,0,1))}function setOpacity(opacity,now){enabled&&(options.bgFade&&!now?holder.animate({opacity:1-opacity},{queue:!1,duration:options.fadeTime}):holder.css({opacity:1-opacity}))}function refreshAll(){options.shade?enableShade():disableShade(),Selection.isAwake()&&setOpacity(options.bgOpacity)}function getShades(){return holder.children()}var enabled=!1,holder=$("<div />").css({position:"absolute",zIndex:240,opacity:0}),shades={top:createShade(),left:createShade().height(boundy),right:createShade().height(boundy),bottom:createShade()};return{update:updateAuto,updateRaw:updateShade,getShades:getShades,setBgColor:setBgColor,enable:enableShade,disable:disableShade,resize:resizeShades,refresh:refreshAll,opacity:setOpacity}}(),Selection=function(){function insertBorder(type){var jq=$("<div />").css({position:"absolute",opacity:options.borderOpacity}).addClass(cssClass(type));return $img_holder.append(jq),jq}function dragDiv(ord,zi){var jq=$("<div />").mousedown(createDragger(ord)).css({cursor:ord+"-resize",position:"absolute",zIndex:zi}).addClass("ord-"+ord);return Touch.support&&jq.bind("touchstart.jcrop",Touch.createDragger(ord)),$hdl_holder.append(jq),jq}function insertHandle(ord){var hs=options.handleSize,div=dragDiv(ord,hdep++).css({opacity:options.handleOpacity}).addClass(cssClass("handle"));return hs&&div.width(hs).height(hs),div}function insertDragbar(ord){return dragDiv(ord,hdep++).addClass("jcrop-dragbar")}function createDragbars(li){var i;for(i=0;i<li.length;i++)dragbar[li[i]]=insertDragbar(li[i])}function createBorders(li){var cl,i;for(i=0;i<li.length;i++){switch(li[i]){case"n":cl="hline";break;case"s":cl="hline bottom";break;case"e":cl="vline right";break;case"w":cl="vline"}borders[li[i]]=insertBorder(cl)}}function createHandles(li){var i;for(i=0;i<li.length;i++)handle[li[i]]=insertHandle(li[i])}function moveto(x,y){options.shade||$img2.css({top:px(-y),left:px(-x)}),$sel.css({top:px(y),left:px(x)})}function resize(w,h){$sel.width(Math.round(w)).height(Math.round(h))}function refresh(){var c=Coords.getFixed();Coords.setPressed([c.x,c.y]),Coords.setCurrent([c.x2,c.y2]),updateVisible()}function updateVisible(select){return awake?update(select):void 0}function update(select){var c=Coords.getFixed();resize(c.w,c.h),moveto(c.x,c.y),options.shade&&Shade.updateRaw(c),awake||show(),select?options.onSelect.call(api,unscale(c)):options.onChange.call(api,unscale(c))}function setBgOpacity(opacity,force,now){(awake||force)&&(options.bgFade&&!now?$img.animate({opacity:opacity},{queue:!1,duration:options.fadeTime}):$img.css("opacity",opacity))}function show(){$sel.show(),options.shade?Shade.opacity(bgopacity):setBgOpacity(bgopacity,!0),awake=!0}function release(){disableHandles(),$sel.hide(),options.shade?Shade.opacity(1):setBgOpacity(1),awake=!1,options.onRelease.call(api)}function showHandles(){seehandles&&$hdl_holder.show()}function enableHandles(){return seehandles=!0,options.allowResize?($hdl_holder.show(),!0):void 0}function disableHandles(){seehandles=!1,$hdl_holder.hide()}function animMode(v){v?(animating=!0,disableHandles()):(animating=!1,enableHandles())}function done(){animMode(!1),refresh()}var awake,hdep=370,borders={},handle={},dragbar={},seehandles=!1;options.dragEdges&&$.isArray(options.createDragbars)&&createDragbars(options.createDragbars),$.isArray(options.createHandles)&&createHandles(options.createHandles),options.drawBorders&&$.isArray(options.createBorders)&&createBorders(options.createBorders),$(document).bind("touchstart.jcrop-ios",function(e){$(e.currentTarget).hasClass("jcrop-tracker")&&e.stopPropagation()});var $track=newTracker().mousedown(createDragger("move")).css({cursor:"move",position:"absolute",zIndex:360});return Touch.support&&$track.bind("touchstart.jcrop",Touch.createDragger("move")),$img_holder.append($track),disableHandles(),{updateVisible:updateVisible,update:update,release:release,refresh:refresh,isAwake:function(){return awake},setCursor:function(cursor){$track.css("cursor",cursor)},enableHandles:enableHandles,enableOnly:function(){seehandles=!0},showHandles:showHandles,disableHandles:disableHandles,animMode:animMode,setBgOpacity:setBgOpacity,done:done}}(),Tracker=function(){function toFront(touch){$trk.css({zIndex:450}),touch?$(document).bind("touchmove.jcrop",trackTouchMove).bind("touchend.jcrop",trackTouchEnd):trackDoc&&$(document).bind("mousemove.jcrop",trackMove).bind("mouseup.jcrop",trackUp)}function toBack(){$trk.css({zIndex:290}),$(document).unbind(".jcrop")}function trackMove(e){return onMove(mouseAbs(e)),!1}function trackUp(e){return e.preventDefault(),e.stopPropagation(),btndown&&(btndown=!1,onDone(mouseAbs(e)),Selection.isAwake()&&options.onSelect.call(api,unscale(Coords.getFixed())),toBack(),onMove=function(){},onDone=function(){}),!1}function activateHandlers(move,done,touch){return btndown=!0,onMove=move,onDone=done,toFront(touch),!1}function trackTouchMove(e){return onMove(mouseAbs(Touch.cfilter(e))),!1}function trackTouchEnd(e){return trackUp(Touch.cfilter(e))}function setCursor(t){$trk.css("cursor",t)}var onMove=function(){},onDone=function(){},trackDoc=options.trackDocument;return trackDoc||$trk.mousemove(trackMove).mouseup(trackUp).mouseout(trackUp),$img.before($trk),{activateHandlers:activateHandlers,setCursor:setCursor}}(),KeyManager=function(){function watchKeys(){options.keySupport&&($keymgr.show(),$keymgr.focus())}function onBlur(){$keymgr.hide()}function doNudge(e,x,y){options.allowMove&&(Coords.moveOffset([x,y]),Selection.updateVisible(!0)),e.preventDefault(),e.stopPropagation()}function parseKey(e){if(e.ctrlKey||e.metaKey)return!0;shift_down=e.shiftKey?!0:!1;var nudge=shift_down?10:1;switch(e.keyCode){case 37:doNudge(e,-nudge,0);break;case 39:doNudge(e,nudge,0);break;case 38:doNudge(e,0,-nudge);break;case 40:doNudge(e,0,nudge);break;case 27:options.allowSelect&&Selection.release();break;case 9:return!0}return!1}var $keymgr=$('<input type="radio" />').css({position:"fixed",left:"-120px",width:"12px"}).addClass("jcrop-keymgr"),$keywrap=$("<div />").css({position:"absolute",overflow:"hidden"}).append($keymgr);return options.keySupport&&($keymgr.keydown(parseKey).blur(onBlur),ie6mode||!options.fixedSupport?($keymgr.css({position:"absolute",left:"-20px"}),$keywrap.append($keymgr).insertBefore($img)):$keymgr.insertBefore($img)),{watchKeys:watchKeys}}();Touch.support&&$trk.bind("touchstart.jcrop",Touch.newSelection),$hdl_holder.hide(),interfaceUpdate(!0);var api={setImage:setImage,animateTo:animateTo,setSelect:setSelect,setOptions:setOptionsNew,tellSelect:tellSelect,tellScaled:tellScaled,setClass:setClass,disable:disableCrop,enable:enableCrop,cancel:cancelCrop,release:Selection.release,destroy:destroy,focus:KeyManager.watchKeys,getBounds:function(){return[boundx*xscale,boundy*yscale]},getWidgetSize:function(){return[boundx,boundy]},getScaleFactor:function(){return[xscale,yscale]},getOptions:function(){return options},ui:{holder:$div,selection:$sel}};return is_msie&&$div.bind("selectstart",function(){return!1}),$origimg.data("Jcrop",api),api},$.fn.Jcrop=function(options,callback){var api;return this.each(function(){if($(this).data("Jcrop")){if("api"===options)return $(this).data("Jcrop");$(this).data("Jcrop").setOptions(options)}else"IMG"==this.tagName?$.Jcrop.Loader(this,function(){$(this).css({display:"block",visibility:"hidden"}),api=$.Jcrop(this,options),$.isFunction(callback)&&callback.call(api)}):($(this).css({display:"block",visibility:"hidden"}),api=$.Jcrop(this,options),$.isFunction(callback)&&callback.call(api))}),this},$.Jcrop.Loader=function(imgobj,success,error){function completeCheck(){img.complete?($img.unbind(".jcloader"),$.isFunction(success)&&success.call(img)):window.setTimeout(completeCheck,50)}var $img=$(imgobj),img=$img[0];$img.bind("load.jcloader",completeCheck).bind("error.jcloader",function(){$img.unbind(".jcloader"),$.isFunction(error)&&error.call(img)}),img.complete&&$.isFunction(success)&&($img.unbind(".jcloader"),success.call(img))},$.Jcrop.defaults={allowSelect:!0,allowMove:!0,allowResize:!0,trackDocument:!0,baseClass:"jcrop",addClass:null,bgColor:"black",bgOpacity:.6,bgFade:!1,borderOpacity:.4,handleOpacity:.5,handleSize:null,aspectRatio:0,keySupport:!0,createHandles:["n","s","e","w","nw","ne","se","sw"],createDragbars:["n","s","e","w"],createBorders:["n","s","e","w"],drawBorders:!0,dragEdges:!0,fixedSupport:!0,touchSupport:null,shade:null,boxWidth:0,boxHeight:0,boundary:2,fadeTime:400,animationDelay:20,swingSpeed:3,minSelect:[0,0],maxSize:[0,0],minSize:[0,0],onChange:function(){},onSelect:function(){},onDblClick:function(){},onRelease:function(){}}}(jQuery); PK ��\�SC C jcrop/Jcrop.gifnu �[��� GIF89a � ���!�NETSCAPE2.0 !� , @ ��y��\��x�* !� , ��j�^[С�쥵 !� , L�`����bдXi}� !� , ��`�z��bh�X�{� !� , � �k�TL�Y�, !� , D��j�^[С�쥵 !� , �a����bдXi}� !� , ��a�z��bh�X�{� ;PK ��\|s9 jcrop/jquery.Jcrop.min.cssnu �[��� /* jquery.Jcrop.min.css v0.9.15 (build:20180819) */ .jcrop-holder{direction:ltr;text-align:left;-ms-touch-action:none}.jcrop-hline,.jcrop-vline{background:#fff url(Jcrop.gif);font-size:0;position:absolute}.jcrop-vline{height:100%;width:1px!important}.jcrop-vline.right{right:0}.jcrop-hline{height:1px!important;width:100%}.jcrop-hline.bottom{bottom:0}.jcrop-tracker{height:100%;width:100%;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none}.jcrop-handle{background-color:#333;border:1px #eee solid;width:7px;height:7px;font-size:1px}.jcrop-handle.ord-n{left:50%;margin-left:-4px;margin-top:-4px;top:0}.jcrop-handle.ord-s{bottom:0;left:50%;margin-bottom:-4px;margin-left:-4px}.jcrop-handle.ord-e{margin-right:-4px;margin-top:-4px;right:0;top:50%}.jcrop-handle.ord-w{left:0;margin-left:-4px;margin-top:-4px;top:50%}.jcrop-handle.ord-nw{left:0;margin-left:-4px;margin-top:-4px;top:0}.jcrop-handle.ord-ne{margin-right:-4px;margin-top:-4px;right:0;top:0}.jcrop-handle.ord-se{bottom:0;margin-bottom:-4px;margin-right:-4px;right:0}.jcrop-handle.ord-sw{bottom:0;left:0;margin-bottom:-4px;margin-left:-4px}.jcrop-dragbar.ord-n,.jcrop-dragbar.ord-s{height:7px;width:100%}.jcrop-dragbar.ord-e,.jcrop-dragbar.ord-w{height:100%;width:7px}.jcrop-dragbar.ord-n{margin-top:-4px}.jcrop-dragbar.ord-s{bottom:0;margin-bottom:-4px}.jcrop-dragbar.ord-e{margin-right:-4px;right:0}.jcrop-dragbar.ord-w{margin-left:-4px}.jcrop-light .jcrop-hline,.jcrop-light .jcrop-vline{background:#fff;filter:alpha(opacity=70)!important;opacity:.7!important}.jcrop-light .jcrop-handle{-moz-border-radius:3px;-webkit-border-radius:3px;background-color:#000;border-color:#fff;border-radius:3px}.jcrop-dark .jcrop-hline,.jcrop-dark .jcrop-vline{background:#000;filter:alpha(opacity=70)!important;opacity:.7!important}.jcrop-dark .jcrop-handle{-moz-border-radius:3px;-webkit-border-radius:3px;background-color:#fff;border-color:#000;border-radius:3px}.solid-line .jcrop-hline,.solid-line .jcrop-vline{background:#fff}.jcrop-holder img,img.jcrop-preview{max-width:none} PK ��\Im�s s media-editor.jsnu �[��� /** * @output wp-includes/js/media-editor.js */ /* global getUserSetting, tinymce, QTags */ // WordPress, TinyMCE, and Media // ----------------------------- (function($, _){ /** * Stores the editors' `wp.media.controller.Frame` instances. * * @static */ var workflows = {}; /** * A helper mixin function to avoid truthy and falsey values being * passed as an input that expects booleans. If key is undefined in the map, * but has a default value, set it. * * @param {Object} attrs Map of props from a shortcode or settings. * @param {string} key The key within the passed map to check for a value. * @return {mixed|undefined} The original or coerced value of key within attrs. */ wp.media.coerce = function ( attrs, key ) { if ( _.isUndefined( attrs[ key ] ) && ! _.isUndefined( this.defaults[ key ] ) ) { attrs[ key ] = this.defaults[ key ]; } else if ( 'true' === attrs[ key ] ) { attrs[ key ] = true; } else if ( 'false' === attrs[ key ] ) { attrs[ key ] = false; } return attrs[ key ]; }; /** @namespace wp.media.string */ wp.media.string = { /** * Joins the `props` and `attachment` objects, * outputting the proper object format based on the * attachment's type. * * @param {Object} [props={}] Attachment details (align, link, size, etc). * @param {Object} attachment The attachment object, media version of Post. * @return {Object} Joined props */ props: function( props, attachment ) { var link, linkUrl, size, sizes, defaultProps = wp.media.view.settings.defaultProps; props = props ? _.clone( props ) : {}; if ( attachment && attachment.type ) { props.type = attachment.type; } if ( 'image' === props.type ) { props = _.defaults( props || {}, { align: defaultProps.align || getUserSetting( 'align', 'none' ), size: defaultProps.size || getUserSetting( 'imgsize', 'medium' ), url: '', classes: [] }); } // All attachment-specific settings follow. if ( ! attachment ) { return props; } props.title = props.title || attachment.title; link = props.link || defaultProps.link || getUserSetting( 'urlbutton', 'file' ); if ( 'file' === link || 'embed' === link ) { linkUrl = attachment.url; } else if ( 'post' === link ) { linkUrl = attachment.link; } else if ( 'custom' === link ) { linkUrl = props.linkUrl; } props.linkUrl = linkUrl || ''; // Format properties for images. if ( 'image' === attachment.type ) { props.classes.push( 'wp-image-' + attachment.id ); sizes = attachment.sizes; size = sizes && sizes[ props.size ] ? sizes[ props.size ] : attachment; _.extend( props, _.pick( attachment, 'align', 'caption', 'alt' ), { width: size.width, height: size.height, src: size.url, captionId: 'attachment_' + attachment.id }); } else if ( 'video' === attachment.type || 'audio' === attachment.type ) { _.extend( props, _.pick( attachment, 'title', 'type', 'icon', 'mime' ) ); // Format properties for non-images. } else { props.title = props.title || attachment.filename; props.rel = props.rel || 'attachment wp-att-' + attachment.id; } return props; }, /** * Create link markup that is suitable for passing to the editor * * @param {Object} props Attachment details (align, link, size, etc). * @param {Object} attachment The attachment object, media version of Post. * @return {string} The link markup */ link: function( props, attachment ) { var options; props = wp.media.string.props( props, attachment ); options = { tag: 'a', content: props.title, attrs: { href: props.linkUrl } }; if ( props.rel ) { options.attrs.rel = props.rel; } return wp.html.string( options ); }, /** * Create an Audio shortcode string that is suitable for passing to the editor * * @param {Object} props Attachment details (align, link, size, etc). * @param {Object} attachment The attachment object, media version of Post. * @return {string} The audio shortcode */ audio: function( props, attachment ) { return wp.media.string._audioVideo( 'audio', props, attachment ); }, /** * Create a Video shortcode string that is suitable for passing to the editor * * @param {Object} props Attachment details (align, link, size, etc). * @param {Object} attachment The attachment object, media version of Post. * @return {string} The video shortcode */ video: function( props, attachment ) { return wp.media.string._audioVideo( 'video', props, attachment ); }, /** * Helper function to create a media shortcode string * * @access private * * @param {string} type The shortcode tag name: 'audio' or 'video'. * @param {Object} props Attachment details (align, link, size, etc). * @param {Object} attachment The attachment object, media version of Post. * @return {string} The media shortcode */ _audioVideo: function( type, props, attachment ) { var shortcode, html, extension; props = wp.media.string.props( props, attachment ); if ( props.link !== 'embed' ) { return wp.media.string.link( props ); } shortcode = {}; if ( 'video' === type ) { if ( attachment.image && -1 === attachment.image.src.indexOf( attachment.icon ) ) { shortcode.poster = attachment.image.src; } if ( attachment.width ) { shortcode.width = attachment.width; } if ( attachment.height ) { shortcode.height = attachment.height; } } extension = attachment.filename.split('.').pop(); if ( _.contains( wp.media.view.settings.embedExts, extension ) ) { shortcode[extension] = attachment.url; } else { // Render unsupported audio and video files as links. return wp.media.string.link( props ); } html = wp.shortcode.string({ tag: type, attrs: shortcode }); return html; }, /** * Create image markup, optionally with a link and/or wrapped in a caption shortcode, * that is suitable for passing to the editor * * @param {Object} props Attachment details (align, link, size, etc). * @param {Object} attachment The attachment object, media version of Post. * @return {string} */ image: function( props, attachment ) { var img = {}, options, classes, shortcode, html; props.type = 'image'; props = wp.media.string.props( props, attachment ); classes = props.classes || []; img.src = ! _.isUndefined( attachment ) ? attachment.url : props.url; _.extend( img, _.pick( props, 'width', 'height', 'alt' ) ); // Only assign the align class to the image if we're not printing // a caption, since the alignment is sent to the shortcode. if ( props.align && ! props.caption ) { classes.push( 'align' + props.align ); } if ( props.size ) { classes.push( 'size-' + props.size ); } img['class'] = _.compact( classes ).join(' '); // Generate `img` tag options. options = { tag: 'img', attrs: img, single: true }; // Generate the `a` element options, if they exist. if ( props.linkUrl ) { options = { tag: 'a', attrs: { href: props.linkUrl }, content: options }; } html = wp.html.string( options ); // Generate the caption shortcode. if ( props.caption ) { shortcode = {}; if ( img.width ) { shortcode.width = img.width; } if ( props.captionId ) { shortcode.id = props.captionId; } if ( props.align ) { shortcode.align = 'align' + props.align; } html = wp.shortcode.string({ tag: 'caption', attrs: shortcode, content: html + ' ' + props.caption }); } return html; } }; wp.media.embed = { coerce : wp.media.coerce, defaults : { url : '', width: '', height: '' }, edit : function( data, isURL ) { var frame, props = {}, shortcode; if ( isURL ) { props.url = data.replace(/<[^>]+>/g, ''); } else { shortcode = wp.shortcode.next( 'embed', data ).shortcode; props = _.defaults( shortcode.attrs.named, this.defaults ); if ( shortcode.content ) { props.url = shortcode.content; } } frame = wp.media({ frame: 'post', state: 'embed', metadata: props }); return frame; }, shortcode : function( model ) { var self = this, content; _.each( this.defaults, function( value, key ) { model[ key ] = self.coerce( model, key ); if ( value === model[ key ] ) { delete model[ key ]; } }); content = model.url; delete model.url; return new wp.shortcode({ tag: 'embed', attrs: model, content: content }); } }; /** * @class wp.media.collection * * @param {Object} attributes */ wp.media.collection = function(attributes) { var collections = {}; return _.extend(/** @lends wp.media.collection.prototype */{ coerce : wp.media.coerce, /** * Retrieve attachments based on the properties of the passed shortcode * * @param {wp.shortcode} shortcode An instance of wp.shortcode(). * @return {wp.media.model.Attachments} A Backbone.Collection containing * the media items belonging to a collection. * The query[ this.tag ] property is a Backbone.Model * containing the 'props' for the collection. */ attachments: function( shortcode ) { var shortcodeString = shortcode.string(), result = collections[ shortcodeString ], attrs, args, query, others, self = this; delete collections[ shortcodeString ]; if ( result ) { return result; } // Fill the default shortcode attributes. attrs = _.defaults( shortcode.attrs.named, this.defaults ); args = _.pick( attrs, 'orderby', 'order' ); args.type = this.type; args.perPage = -1; // Mark the `orderby` override attribute. if ( undefined !== attrs.orderby ) { attrs._orderByField = attrs.orderby; } if ( 'rand' === attrs.orderby ) { attrs._orderbyRandom = true; } // Map the `orderby` attribute to the corresponding model property. if ( ! attrs.orderby || /^menu_order(?: ID)?$/i.test( attrs.orderby ) ) { args.orderby = 'menuOrder'; } // Map the `ids` param to the correct query args. if ( attrs.ids ) { args.post__in = attrs.ids.split(','); args.orderby = 'post__in'; } else if ( attrs.include ) { args.post__in = attrs.include.split(','); } if ( attrs.exclude ) { args.post__not_in = attrs.exclude.split(','); } if ( ! args.post__in ) { args.uploadedTo = attrs.id; } // Collect the attributes that were not included in `args`. others = _.omit( attrs, 'id', 'ids', 'include', 'exclude', 'orderby', 'order' ); _.each( this.defaults, function( value, key ) { others[ key ] = self.coerce( others, key ); }); query = wp.media.query( args ); query[ this.tag ] = new Backbone.Model( others ); return query; }, /** * Triggered when clicking 'Insert {label}' or 'Update {label}' * * @param {wp.media.model.Attachments} attachments A Backbone.Collection containing * the media items belonging to a collection. * The query[ this.tag ] property is a Backbone.Model * containing the 'props' for the collection. * @return {wp.shortcode} */ shortcode: function( attachments ) { var props = attachments.props.toJSON(), attrs = _.pick( props, 'orderby', 'order' ), shortcode, clone; if ( attachments.type ) { attrs.type = attachments.type; delete attachments.type; } if ( attachments[this.tag] ) { _.extend( attrs, attachments[this.tag].toJSON() ); } /* * Convert all gallery shortcodes to use the `ids` property. * Ignore `post__in` and `post__not_in`; the attachments in * the collection will already reflect those properties. */ attrs.ids = attachments.pluck('id'); // Copy the `uploadedTo` post ID. if ( props.uploadedTo ) { attrs.id = props.uploadedTo; } // Check if the gallery is randomly ordered. delete attrs.orderby; if ( attrs._orderbyRandom ) { attrs.orderby = 'rand'; } else if ( attrs._orderByField && 'rand' !== attrs._orderByField ) { attrs.orderby = attrs._orderByField; } delete attrs._orderbyRandom; delete attrs._orderByField; // If the `ids` attribute is set and `orderby` attribute // is the default value, clear it for cleaner output. if ( attrs.ids && 'post__in' === attrs.orderby ) { delete attrs.orderby; } attrs = this.setDefaults( attrs ); shortcode = new wp.shortcode({ tag: this.tag, attrs: attrs, type: 'single' }); // Use a cloned version of the gallery. clone = new wp.media.model.Attachments( attachments.models, { props: props }); clone[ this.tag ] = attachments[ this.tag ]; collections[ shortcode.string() ] = clone; return shortcode; }, /** * Triggered when double-clicking a collection shortcode placeholder * in the editor * * @param {string} content Content that is searched for possible * shortcode markup matching the passed tag name, * * @this wp.media.{prop} * * @return {wp.media.view.MediaFrame.Select} A media workflow. */ edit: function( content ) { var shortcode = wp.shortcode.next( this.tag, content ), defaultPostId = this.defaults.id, attachments, selection, state; // Bail if we didn't match the shortcode or all of the content. if ( ! shortcode || shortcode.content !== content ) { return; } // Ignore the rest of the match object. shortcode = shortcode.shortcode; if ( _.isUndefined( shortcode.get('id') ) && ! _.isUndefined( defaultPostId ) ) { shortcode.set( 'id', defaultPostId ); } attachments = this.attachments( shortcode ); selection = new wp.media.model.Selection( attachments.models, { props: attachments.props.toJSON(), multiple: true }); selection[ this.tag ] = attachments[ this.tag ]; // Fetch the query's attachments, and then break ties from the // query to allow for sorting. selection.more().done( function() { // Break ties with the query. selection.props.set({ query: false }); selection.unmirror(); selection.props.unset('orderby'); }); // Destroy the previous gallery frame. if ( this.frame ) { this.frame.dispose(); } if ( shortcode.attrs.named.type && 'video' === shortcode.attrs.named.type ) { state = 'video-' + this.tag + '-edit'; } else { state = this.tag + '-edit'; } // Store the current frame. this.frame = wp.media({ frame: 'post', state: state, title: this.editTitle, editing: true, multiple: true, selection: selection }).open(); return this.frame; }, setDefaults: function( attrs ) { var self = this; // Remove default attributes from the shortcode. _.each( this.defaults, function( value, key ) { attrs[ key ] = self.coerce( attrs, key ); if ( value === attrs[ key ] ) { delete attrs[ key ]; } }); return attrs; } }, attributes ); }; wp.media._galleryDefaults = { itemtag: 'dl', icontag: 'dt', captiontag: 'dd', columns: '3', link: 'post', size: 'thumbnail', order: 'ASC', id: wp.media.view.settings.post && wp.media.view.settings.post.id, orderby : 'menu_order ID' }; if ( wp.media.view.settings.galleryDefaults ) { wp.media.galleryDefaults = _.extend( {}, wp.media._galleryDefaults, wp.media.view.settings.galleryDefaults ); } else { wp.media.galleryDefaults = wp.media._galleryDefaults; } wp.media.gallery = new wp.media.collection({ tag: 'gallery', type : 'image', editTitle : wp.media.view.l10n.editGalleryTitle, defaults : wp.media.galleryDefaults, setDefaults: function( attrs ) { var self = this, changed = ! _.isEqual( wp.media.galleryDefaults, wp.media._galleryDefaults ); _.each( this.defaults, function( value, key ) { attrs[ key ] = self.coerce( attrs, key ); if ( value === attrs[ key ] && ( ! changed || value === wp.media._galleryDefaults[ key ] ) ) { delete attrs[ key ]; } } ); return attrs; } }); /** * @namespace wp.media.featuredImage * @memberOf wp.media */ wp.media.featuredImage = { /** * Get the featured image post ID * * @return {wp.media.view.settings.post.featuredImageId|number} */ get: function() { return wp.media.view.settings.post.featuredImageId; }, /** * Sets the featured image ID property and sets the HTML in the post meta box to the new featured image. * * @param {number} id The post ID of the featured image, or -1 to unset it. */ set: function( id ) { var settings = wp.media.view.settings; settings.post.featuredImageId = id; wp.media.post( 'get-post-thumbnail-html', { post_id: settings.post.id, thumbnail_id: settings.post.featuredImageId, _wpnonce: settings.post.nonce }).done( function( html ) { if ( '0' === html ) { window.alert( wp.i18n.__( 'Could not set that as the thumbnail image. Try a different attachment.' ) ); return; } $( '.inside', '#postimagediv' ).html( html ); }); }, /** * Remove the featured image id, save the post thumbnail data and * set the HTML in the post meta box to no featured image. */ remove: function() { wp.media.featuredImage.set( -1 ); }, /** * The Featured Image workflow * * @this wp.media.featuredImage * * @return {wp.media.view.MediaFrame.Select} A media workflow. */ frame: function() { if ( this._frame ) { wp.media.frame = this._frame; return this._frame; } this._frame = wp.media({ state: 'featured-image', states: [ new wp.media.controller.FeaturedImage() , new wp.media.controller.EditImage() ] }); this._frame.on( 'toolbar:create:featured-image', function( toolbar ) { /** * @this wp.media.view.MediaFrame.Select */ this.createSelectToolbar( toolbar, { text: wp.media.view.l10n.setFeaturedImage }); }, this._frame ); this._frame.on( 'content:render:edit-image', function() { var selection = this.state('featured-image').get('selection'), view = new wp.media.view.EditImage( { model: selection.single(), controller: this } ).render(); this.content.set( view ); // After bringing in the frame, load the actual editor via an Ajax call. view.loadEditor(); }, this._frame ); this._frame.state('featured-image').on( 'select', this.select ); return this._frame; }, /** * 'select' callback for Featured Image workflow, triggered when * the 'Set Featured Image' button is clicked in the media modal. * * @this wp.media.controller.FeaturedImage */ select: function() { var selection = this.get('selection').single(); if ( ! wp.media.view.settings.post.featuredImageId ) { return; } wp.media.featuredImage.set( selection ? selection.id : -1 ); }, /** * Open the content media manager to the 'featured image' tab when * the post thumbnail is clicked. * * Update the featured image id when the 'remove' link is clicked. */ init: function() { $('#postimagediv').on( 'click keyup keydown', '#set-post-thumbnail', function( event ) { if ( ( event.type === 'keyup' && event.key === ' ' ) || ( event.type === 'keydown' && event.key === 'Enter' ) || event.type === 'click' ) { event.preventDefault(); // Stop propagation to prevent thickbox from activating. event.stopPropagation(); wp.media.featuredImage.frame().open(); } }).on( 'click keyup keydown', '#remove-post-thumbnail', function( event ) { if ( ( event.type === 'keyup' && event.key === ' ' ) || ( event.type === 'keydown' && event.key === 'Enter' ) || event.type === 'click' ) { wp.media.featuredImage.remove(); return false; } }); } }; $( wp.media.featuredImage.init ); /** @namespace wp.media.editor */ wp.media.editor = { /** * Send content to the editor * * @param {string} html Content to send to the editor */ insert: function( html ) { var editor, wpActiveEditor, hasTinymce = ! _.isUndefined( window.tinymce ), hasQuicktags = ! _.isUndefined( window.QTags ); if ( this.activeEditor ) { wpActiveEditor = window.wpActiveEditor = this.activeEditor; } else { wpActiveEditor = window.wpActiveEditor; } /* * Delegate to the global `send_to_editor` if it exists. * This attempts to play nice with any themes/plugins * that have overridden the insert functionality. */ if ( window.send_to_editor ) { return window.send_to_editor.apply( this, arguments ); } if ( ! wpActiveEditor ) { if ( hasTinymce && tinymce.activeEditor ) { editor = tinymce.activeEditor; wpActiveEditor = window.wpActiveEditor = editor.id; } else if ( ! hasQuicktags ) { return false; } } else if ( hasTinymce ) { editor = tinymce.get( wpActiveEditor ); } if ( editor && ! editor.isHidden() ) { editor.execCommand( 'mceInsertContent', false, html ); } else if ( hasQuicktags ) { QTags.insertContent( html ); } else { document.getElementById( wpActiveEditor ).value += html; } // If the old thickbox remove function exists, call it in case // a theme/plugin overloaded it. if ( window.tb_remove ) { try { window.tb_remove(); } catch( e ) {} } }, /** * Setup 'workflow' and add to the 'workflows' cache. 'open' can * subsequently be called upon it. * * @param {string} id A slug used to identify the workflow. * @param {Object} [options={}] * * @this wp.media.editor * * @return {wp.media.view.MediaFrame.Select} A media workflow. */ add: function( id, options ) { var workflow = this.get( id ); // Only add once: if exists return existing. if ( workflow ) { return workflow; } workflow = workflows[ id ] = wp.media( _.defaults( options || {}, { frame: 'post', state: 'insert', title: wp.media.view.l10n.addMedia, multiple: true } ) ); workflow.on( 'insert', function( selection ) { var state = workflow.state(); selection = selection || state.get('selection'); if ( ! selection ) { return; } $.when.apply( $, selection.map( function( attachment ) { var display = state.display( attachment ).toJSON(); /** * @this wp.media.editor */ return this.send.attachment( display, attachment.toJSON() ); }, this ) ).done( function() { wp.media.editor.insert( _.toArray( arguments ).join('\n\n') ); }); }, this ); workflow.state('gallery-edit').on( 'update', function( selection ) { /** * @this wp.media.editor */ this.insert( wp.media.gallery.shortcode( selection ).string() ); }, this ); workflow.state('playlist-edit').on( 'update', function( selection ) { /** * @this wp.media.editor */ this.insert( wp.media.playlist.shortcode( selection ).string() ); }, this ); workflow.state('video-playlist-edit').on( 'update', function( selection ) { /** * @this wp.media.editor */ this.insert( wp.media.playlist.shortcode( selection ).string() ); }, this ); workflow.state('embed').on( 'select', function() { /** * @this wp.media.editor */ var state = workflow.state(), type = state.get('type'), embed = state.props.toJSON(); embed.url = embed.url || ''; if ( 'link' === type ) { _.defaults( embed, { linkText: embed.url, linkUrl: embed.url }); this.send.link( embed ).done( function( resp ) { wp.media.editor.insert( resp ); }); } else if ( 'image' === type ) { _.defaults( embed, { title: embed.url, linkUrl: '', align: 'none', link: 'none' }); if ( 'none' === embed.link ) { embed.linkUrl = ''; } else if ( 'file' === embed.link ) { embed.linkUrl = embed.url; } this.insert( wp.media.string.image( embed ) ); } }, this ); workflow.state('featured-image').on( 'select', wp.media.featuredImage.select ); workflow.setState( workflow.options.state ); return workflow; }, /** * Determines the proper current workflow id * * @param {string} [id=''] A slug used to identify the workflow. * * @return {wpActiveEditor|string|tinymce.activeEditor.id} */ id: function( id ) { if ( id ) { return id; } // If an empty `id` is provided, default to `wpActiveEditor`. id = window.wpActiveEditor; // If that doesn't work, fall back to `tinymce.activeEditor.id`. if ( ! id && ! _.isUndefined( window.tinymce ) && tinymce.activeEditor ) { id = tinymce.activeEditor.id; } // Last but not least, fall back to the empty string. id = id || ''; return id; }, /** * Return the workflow specified by id * * @param {string} id A slug used to identify the workflow. * * @this wp.media.editor * * @return {wp.media.view.MediaFrame} A media workflow. */ get: function( id ) { id = this.id( id ); return workflows[ id ]; }, /** * Remove the workflow represented by id from the workflow cache * * @param {string} id A slug used to identify the workflow. * * @this wp.media.editor */ remove: function( id ) { id = this.id( id ); delete workflows[ id ]; }, /** @namespace wp.media.editor.send */ send: { /** * Called when sending an attachment to the editor * from the medial modal. * * @param {Object} props Attachment details (align, link, size, etc). * @param {Object} attachment The attachment object, media version of Post. * @return {Promise} */ attachment: function( props, attachment ) { var caption = attachment.caption, options, html; // If captions are disabled, clear the caption. if ( ! wp.media.view.settings.captions ) { delete attachment.caption; } props = wp.media.string.props( props, attachment ); options = { id: attachment.id, post_content: attachment.description, post_excerpt: caption }; if ( props.linkUrl ) { options.url = props.linkUrl; } if ( 'image' === attachment.type ) { html = wp.media.string.image( props ); _.each({ align: 'align', size: 'image-size', alt: 'image_alt' }, function( option, prop ) { if ( props[ prop ] ) { options[ option ] = props[ prop ]; } }); } else if ( 'video' === attachment.type ) { html = wp.media.string.video( props, attachment ); } else if ( 'audio' === attachment.type ) { html = wp.media.string.audio( props, attachment ); } else { html = wp.media.string.link( props ); options.post_title = props.title; } return wp.media.post( 'send-attachment-to-editor', { nonce: wp.media.view.settings.nonce.sendToEditor, attachment: options, html: html, post_id: wp.media.view.settings.post.id }); }, /** * Called when 'Insert From URL' source is not an image. Example: YouTube url. * * @param {Object} embed * @return {Promise} */ link: function( embed ) { return wp.media.post( 'send-link-to-editor', { nonce: wp.media.view.settings.nonce.sendToEditor, src: embed.linkUrl, link_text: embed.linkText, html: wp.media.string.link( embed ), post_id: wp.media.view.settings.post.id }); } }, /** * Open a workflow * * @param {string} [id=undefined] Optional. A slug used to identify the workflow. * @param {Object} [options={}] * * @this wp.media.editor * * @return {wp.media.view.MediaFrame} */ open: function( id, options ) { var workflow; options = options || {}; id = this.id( id ); this.activeEditor = id; workflow = this.get( id ); // Redo workflow if state has changed. if ( ! workflow || ( workflow.options && options.state !== workflow.options.state ) ) { workflow = this.add( id, options ); } wp.media.frame = workflow; return workflow.open(); }, /** * Bind click event for .insert-media using event delegation */ init: function() { $(document.body) .on( 'click.add-media-button', '.insert-media', function( event ) { var elem = $( event.currentTarget ), editor = elem.data('editor'), options = { frame: 'post', state: 'insert', title: wp.media.view.l10n.addMedia, multiple: true }; event.preventDefault(); if ( elem.hasClass( 'gallery' ) ) { options.state = 'gallery'; options.title = wp.media.view.l10n.createGalleryTitle; } wp.media.editor.open( editor, options ); }); // Initialize and render the Editor drag-and-drop uploader. new wp.media.view.EditorUploader().render(); } }; _.bindAll( wp.media.editor, 'open' ); $( wp.media.editor.init ); }(jQuery, _)); PK ��\�J[��X �X wp-emoji-release.min.jsnu �[��� /*! This file is auto-generated */ // Source: wp-includes/js/twemoji.min.js var twemoji=function(){"use strict";var h={base:"https://cdn.jsdelivr.net/gh/jdecked/twemoji@17.0.1/assets/",ext:".png",size:"72x72",className:"emoji",convert:{fromCodePoint:function(d){d="string"==typeof d?parseInt(d,16):d;if(d<65536)return e(d);return e(55296+((d-=65536)>>10),56320+(1023&d))},toCodePoint:o},onerror:function(){this.parentNode&&this.parentNode.replaceChild(x(this.alt,!1),this)},parse:function(d,u){u&&"function"!=typeof u||(u={callback:u});return h.doNotParse=u.doNotParse,("string"==typeof d?function(d,a){return n(d,function(d){var u,f,c=d,e=N(d),b=a.callback(e,a);if(e&&b){for(f in c="<img ".concat('class="',a.className,'" ','draggable="false" ','alt="',d,'"',' src="',b,'"'),u=a.attributes(d,e))u.hasOwnProperty(f)&&0!==f.indexOf("on")&&-1===c.indexOf(" "+f+"=")&&(c=c.concat(" ",f,'="',u[f].replace(t,r),'"'));c=c.concat("/>")}return c})}:function(d,u){var f,c,e,b,a,t,r,n,o,s,i,l=function d(u,f){var c,e,b=u.childNodes,a=b.length;for(;a--;)c=b[a],3===(e=c.nodeType)?f.push(c):1!==e||"ownerSVGElement"in c||m.test(c.nodeName.toLowerCase())||h.doNotParse&&h.doNotParse(c)||d(c,f);return f}(d,[]),p=l.length;for(;p--;){for(e=!1,b=document.createDocumentFragment(),a=l[p],t=a.nodeValue,r=0;o=g.exec(t);){if((i=o.index)!==r&&b.appendChild(x(t.slice(r,i),!0)),s=N(o=o[0]),r=i+o.length,i=u.callback(s,u),s&&i){for(c in(n=new Image).onerror=u.onerror,n.setAttribute("draggable","false"),f=u.attributes(o,s))f.hasOwnProperty(c)&&0!==c.indexOf("on")&&!n.hasAttribute(c)&&n.setAttribute(c,f[c]);n.className=u.className,n.alt=o,n.src=i,e=!0,b.appendChild(n)}n||b.appendChild(x(o,!1)),n=null}e&&(r<t.length&&b.appendChild(x(t.slice(r),!0)),a.parentNode.replaceChild(b,a))}return d})(d,{callback:u.callback||b,attributes:"function"==typeof u.attributes?u.attributes:a,base:("string"==typeof u.base?u:h).base,ext:u.ext||h.ext,size:u.folder||function(d){return"number"==typeof d?d+"x"+d:d}(u.size||h.size),className:u.className||h.className,onerror:u.onerror||h.onerror})},replace:n,test:function(d){g.lastIndex=0;d=g.test(d);return g.lastIndex=0,d}},u={"&":"&","<":"<",">":">","'":"'",'"':"""},g=/(?:\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83d\udc68\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffb\u200d\ud83d\udc30\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc68\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc68\ud83c\udffb\u200d\ud83e\udeef\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\ud83d\udc30\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\ud83e\udeef\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\ud83d\udc30\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc68\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc68\ud83c\udffd\u200d\ud83e\udeef\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc68\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udffe\u200d\ud83d\udc30\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc68\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc68\ud83c\udffe\u200d\ud83e\udeef\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc68\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc68\ud83c\udfff\u200d\ud83d\udc30\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc68\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc68\ud83c\udfff\u200d\ud83e\udeef\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83d\udc30\u200d\ud83d\udc69\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udeef\u200d\ud83d\udc69\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83d\udc30\u200d\ud83d\udc69\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udeef\u200d\ud83d\udc69\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83d\udc30\u200d\ud83d\udc69\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udeef\u200d\ud83d\udc69\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83d\udc30\u200d\ud83d\udc69\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udeef\u200d\ud83d\udc69\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc68\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83d\udc69\ud83c[\udffb-\udfff]|\ud83d\udc69\ud83c\udfff\u200d\ud83d\udc30\u200d\ud83d\udc69\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udeef\u200d\ud83d\udc69\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udffb\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\ud83d\udc30\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffb\u200d\ud83e\udeef\u200d\ud83e\uddd1\ud83c[\udffc-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\ud83d\udc30\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\ud83e\udeef\u200d\ud83e\uddd1\ud83c[\udffb\udffd-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\ud83d\udc30\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\ud83e\udeef\u200d\ud83e\uddd1\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\ud83d\udc30\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\ud83e\udeef\u200d\ud83e\uddd1\ud83c[\udffb-\udffd\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\u2764\ufe0f\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udfff\u200d\ud83d\udc30\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\ud83e\udeef\u200d\ud83e\uddd1\ud83c[\udffb-\udffe]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83e\udef1\ud83c\udffb\u200d\ud83e\udef2\ud83c[\udffc-\udfff]|\ud83e\udef1\ud83c\udffc\u200d\ud83e\udef2\ud83c[\udffb\udffd-\udfff]|\ud83e\udef1\ud83c\udffd\u200d\ud83e\udef2\ud83c[\udffb\udffc\udffe\udfff]|\ud83e\udef1\ud83c\udffe\u200d\ud83e\udef2\ud83c[\udffb-\udffd\udfff]|\ud83e\udef1\ud83c\udfff\u200d\ud83e\udef2\ud83c[\udffb-\udffe]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83e\uddd1\u200d\ud83e\udd1d\u200d\ud83e\uddd1|\ud83d\udc6f\ud83c\udffb\u200d\u2640\ufe0f|\ud83d\udc6f\ud83c\udffb\u200d\u2642\ufe0f|\ud83d\udc6f\ud83c\udffc\u200d\u2640\ufe0f|\ud83d\udc6f\ud83c\udffc\u200d\u2642\ufe0f|\ud83d\udc6f\ud83c\udffd\u200d\u2640\ufe0f|\ud83d\udc6f\ud83c\udffd\u200d\u2642\ufe0f|\ud83d\udc6f\ud83c\udffe\u200d\u2640\ufe0f|\ud83d\udc6f\ud83c\udffe\u200d\u2642\ufe0f|\ud83d\udc6f\ud83c\udfff\u200d\u2640\ufe0f|\ud83d\udc6f\ud83c\udfff\u200d\u2642\ufe0f|\ud83e\udd3c\ud83c\udffb\u200d\u2640\ufe0f|\ud83e\udd3c\ud83c\udffb\u200d\u2642\ufe0f|\ud83e\udd3c\ud83c\udffc\u200d\u2640\ufe0f|\ud83e\udd3c\ud83c\udffc\u200d\u2642\ufe0f|\ud83e\udd3c\ud83c\udffd\u200d\u2640\ufe0f|\ud83e\udd3c\ud83c\udffd\u200d\u2642\ufe0f|\ud83e\udd3c\ud83c\udffe\u200d\u2640\ufe0f|\ud83e\udd3c\ud83c\udffe\u200d\u2642\ufe0f|\ud83e\udd3c\ud83c\udfff\u200d\u2640\ufe0f|\ud83e\udd3c\ud83c\udfff\u200d\u2642\ufe0f|\ud83d\udc6f\u200d\u2640\ufe0f|\ud83d\udc6f\u200d\u2642\ufe0f|\ud83e\udd3c\u200d\u2640\ufe0f|\ud83e\udd3c\u200d\u2642\ufe0f|\ud83d\udc6b\ud83c[\udffb-\udfff]|\ud83d\udc6c\ud83c[\udffb-\udfff]|\ud83d\udc6d\ud83c[\udffb-\udfff]|\ud83d\udc6f\ud83c[\udffb-\udfff]|\ud83d\udc8f\ud83c[\udffb-\udfff]|\ud83d\udc91\ud83c[\udffb-\udfff]|\ud83e\udd1d\ud83c[\udffb-\udfff]|\ud83e\udd3c\ud83c[\udffb-\udfff]|\ud83d[\udc6b-\udc6d\udc6f\udc8f\udc91]|\ud83e[\udd1d\udd3c])|(?:\ud83d[\udc68\udc69]|\ud83e\uddd1)(?:\ud83c[\udffb-\udfff])?\u200d(?:\u2695\ufe0f|\u2696\ufe0f|\u2708\ufe0f|\ud83c[\udf3e\udf73\udf7c\udf84\udf93\udfa4\udfa8\udfeb\udfed]|\ud83d[\udcbb\udcbc\udd27\udd2c\ude80\ude92]|\ud83e[\uddaf-\uddb3\uddbc\uddbd\ude70])(?:\u200d\u27a1\ufe0f)?|(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75]|\u26f9)((?:\ud83c[\udffb-\udfff]|\ufe0f)\u200d[\u2640\u2642]\ufe0f(?:\u200d\u27a1\ufe0f)?)|(?:\ud83c[\udfc3\udfc4\udfca]|\ud83d[\udc6e\udc70\udc71\udc73\udc77\udc81\udc82\udc86\udc87\ude45-\ude47\ude4b\ude4d\ude4e\udea3\udeb4-\udeb6]|\ud83e[\udd26\udd35\udd37-\udd39\udd3d\udd3e\uddb8\uddb9\uddcd-\uddcf\uddd4\uddd6-\udddd])(?:\ud83c[\udffb-\udfff])?\u200d[\u2640\u2642]\ufe0f(?:\u200d\u27a1\ufe0f)?|(?:\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83e\uddd1\u200d\ud83e\uddd1\u200d\ud83e\uddd2\u200d\ud83e\uddd2|\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83e\uddd1\u200d\ud83e\uddd1\u200d\ud83e\uddd2|\ud83e\uddd1\u200d\ud83e\uddd2\u200d\ud83e\uddd2|\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83d\ude36\u200d\ud83c\udf2b\ufe0f|\u26d3\ufe0f\u200d\ud83d\udca5|\u2764\ufe0f\u200d\ud83d\udd25|\u2764\ufe0f\u200d\ud83e\ude79|\ud83c\udf44\u200d\ud83d\udfeb|\ud83c\udf4b\u200d\ud83d\udfe9|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc15\u200d\ud83e\uddba|\ud83d\udc26\u200d\ud83d\udd25|\ud83d\udc3b\u200d\u2744\ufe0f|\ud83d\udc41\u200d\ud83d\udde8|\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\ude2e\u200d\ud83d\udca8|\ud83d\ude35\u200d\ud83d\udcab|\ud83d\ude42\u200d\u2194\ufe0f|\ud83d\ude42\u200d\u2195\ufe0f|\ud83e\uddd1\u200d\ud83e\uddd2|\ud83e\uddde\u200d\u2640\ufe0f|\ud83e\uddde\u200d\u2642\ufe0f|\ud83e\udddf\u200d\u2640\ufe0f|\ud83e\udddf\u200d\u2642\ufe0f|\ud83d\udc08\u200d\u2b1b|\ud83d\udc26\u200d\u2b1b)|[#*0-9]\ufe0f?\u20e3|(?:[\xa9\xae\u2122\u265f]\ufe0f)|(?:\ud83c[\udc04\udd70\udd71\udd7e\udd7f\ude02\ude1a\ude2f\ude37\udf21\udf24-\udf2c\udf36\udf7d\udf96\udf97\udf99-\udf9b\udf9e\udf9f\udfcd\udfce\udfd4-\udfdf\udff3\udff5\udff7]|\ud83d[\udc3f\udc41\udcfd\udd49\udd4a\udd6f\udd70\udd73\udd76-\udd79\udd87\udd8a-\udd8d\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa\udecb\udecd-\udecf\udee0-\udee5\udee9\udef0\udef3]|[\u203c\u2049\u2139\u2194-\u2199\u21a9\u21aa\u231a\u231b\u2328\u23cf\u23ed-\u23ef\u23f1\u23f2\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb-\u25fe\u2600-\u2604\u260e\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638-\u263a\u2640\u2642\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267b\u267f\u2692-\u2697\u2699\u269b\u269c\u26a0\u26a1\u26a7\u26aa\u26ab\u26b0\u26b1\u26bd\u26be\u26c4\u26c5\u26c8\u26cf\u26d1\u26d3\u26d4\u26e9\u26ea\u26f0-\u26f5\u26f8\u26fa\u26fd\u2702\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u2764\u27a1\u2934\u2935\u2b05-\u2b07\u2b1b\u2b1c\u2b50\u2b55\u3030\u303d\u3297\u3299])(?:\ufe0f|(?!\ufe0e))|(?:(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75\udd90]|\ud83e\udef0|[\u261d\u26f7\u26f9\u270c\u270d])(?:\ufe0f|(?!\ufe0e))|(?:\ud83c\udfc3|\ud83d\udeb6|\ud83e\uddce)(?:\ud83c[\udffb-\udfff])?(?:\u200d\u27a1\ufe0f)?|(?:\ud83c[\udf85\udfc2\udfc4\udfc7\udfca]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd7a\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4\udeb5\udec0\udecc]|\ud83e[\udd0c\udd0f\udd18-\udd1c\udd1e\udd1f\udd26\udd30-\udd39\udd3d\udd3e\udd77\uddb5\uddb6\uddb8\uddb9\uddbb\uddcd\uddcf\uddd1-\udddd\udec3-\udec5\udef1-\udef8]|[\u270a\u270b]))(?:\ud83c[\udffb-\udfff])?|(?:\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf3\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\ud83c[\udccf\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude32-\ude36\ude38-\ude3a\ude50\ude51\udf00-\udf20\udf2d-\udf35\udf37-\udf7c\udf7e-\udf84\udf86-\udf93\udfa0-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcf-\udfd3\udfe0-\udff0\udff4\udff8-\udfff]|\ud83d[\udc00-\udc3e\udc40\udc44\udc45\udc51-\udc65\udc6a\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udc8e\udc90\udc92-\udca9\udcab-\udcfc\udcff-\udd3d\udd4b-\udd4e\udd50-\udd67\udda4\uddfb-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\uded0-\uded2\uded5-\uded8\udedc-\udedf\udeeb\udeec\udef4-\udefc\udfe0-\udfeb\udff0]|\ud83e[\udd0d\udd0e\udd10-\udd17\udd20-\udd25\udd27-\udd2f\udd3a\udd3f-\udd45\udd47-\udd76\udd78-\uddb4\uddb7\uddba\uddbc-\uddcc\uddd0\uddde-\uddff\ude70-\ude7c\ude80-\ude8a\ude8e-\udec2\udec6\udec8\udecd-\udedc\udedf-\udeea\udeef]|[\u23e9-\u23ec\u23f0\u23f3\u267e\u26ce\u2705\u2728\u274c\u274e\u2753-\u2755\u2795-\u2797\u27b0\u27bf\ue50a])|\ufe0f/g,f=/\uFE0F/g,c=String.fromCharCode(8205),t=/[&<>'"]/g,m=/^(?:iframe|noframes|noscript|script|select|style|textarea)$/,e=String.fromCharCode;return h;function x(d,u){return document.createTextNode(u?d.replace(f,""):d)}function b(d,u){return"".concat(u.base,u.size,"/",d,u.ext)}function N(d){return o(d.indexOf(c)<0?d.replace(f,""):d)}function r(d){return u[d]}function a(){return null}function n(d,u){return String(d).replace(g,u)}function o(d,u){for(var f=[],c=0,e=0,b=0;b<d.length;)c=d.charCodeAt(b++),e?(f.push((65536+(e-55296<<10)+(c-56320)).toString(16)),e=0):55296<=c&&c<=56319?e=c:f.push(c.toString(16));return f.join(u||"-")}}(); // Source: wp-includes/js/wp-emoji.min.js !function(c,l){c.wp=c.wp||{},c.wp.emoji=new function(){var n,e,t=c.MutationObserver||c.WebKitMutationObserver||c.MozMutationObserver,r=c.document,a=!1,o=0,i=0<c.navigator.userAgent.indexOf("Trident/7.0");function s(){return!r.implementation.hasFeature||r.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#Image","1.1")}function d(u){return!!u&&(/[\uDC00-\uDFFF]/.test(u)||/[\u203C\u2049\u20E3\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2300\u231A\u231B\u2328\u2388\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638\u2639\u263A\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267B\u267F\u2692\u2693\u2694\u2696\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753\u2754\u2755\u2757\u2763\u2764\u2795\u2796\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05\u2B06\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]/.test(u))}function f(u,e){var t;return!l.supports.everything&&n&&u&&("string"==typeof u||u.childNodes&&u.childNodes.length)?(e=e||{},t={base:s()?l.svgUrl:l.baseUrl,ext:s()?l.svgExt:l.ext,className:e.className||"emoji",callback:function(u,e){switch(u){case"a9":case"ae":case"2122":case"2194":case"2660":case"2663":case"2665":case"2666":return!1}return!(l.supports.everythingExceptFlag&&!/^1f1(?:e[6-9a-f]|f[0-9a-f])-1f1(?:e[6-9a-f]|f[0-9a-f])$/.test(u)&&!/^(1f3f3-fe0f-200d-1f308|1f3f4-200d-2620-fe0f)$/.test(u))&&"".concat(e.base,u,e.ext)},attributes:function(){return{role:"img"}},onerror:function(){n.parentNode&&(this.setAttribute("data-error","load-failed"),n.parentNode.replaceChild(r.createTextNode(n.alt),n))},doNotParse:function(u){return!(!u||!u.className||"string"!=typeof u.className||-1===u.className.indexOf("wp-exclude-emoji"))}},"object"==typeof e.imgAttr&&(t.attributes=function(){return e.imgAttr}),n.parse(u,t)):u}return function u(){if(!a){if(void 0===c.twemoji)return 600<o?void 0:(c.clearTimeout(e),e=c.setTimeout(u,50),void o++);n=c.twemoji,a=!0,t&&new t(function(u){for(var e,t,n,r,a=u.length;a--;){if(e=u[a].addedNodes,t=u[a].removedNodes,1===(n=e.length)&&1===t.length&&3===e[0].nodeType&&"IMG"===t[0].nodeName&&e[0].data===t[0].alt&&"load-failed"===t[0].getAttribute("data-error"))return;for(;n--;){if(3===(r=e[n]).nodeType){if(!r.parentNode)continue;if(i)for(;r.nextSibling&&3===r.nextSibling.nodeType;)r.nodeValue=r.nodeValue+r.nextSibling.nodeValue,r.parentNode.removeChild(r.nextSibling);r=r.parentNode}d(r.textContent)&&f(r)}}}).observe(r.body,{childList:!0,subtree:!0}),f(r.body)}}(),{parse:f,test:d}}}(window,window._wpemojiSettings);PK ��\ﴑ�IX IX quicktags.jsnu �[��� /* * Quicktags * * This is the HTML editor in WordPress. It can be attached to any textarea and will * append a toolbar above it. This script is self-contained (does not require external libraries). * * Run quicktags(settings) to initialize it, where settings is an object containing up to 3 properties: * settings = { * id : 'my_id', the HTML ID of the textarea, required * buttons: '' Comma separated list of the names of the default buttons to show. Optional. * Current list of default button names: 'strong,em,link,block,del,ins,img,ul,ol,li,code,more,close'; * } * * The settings can also be a string quicktags_id. * * quicktags_id string The ID of the textarea that will be the editor canvas * buttons string Comma separated list of the default buttons names that will be shown in that instance. * * @output wp-includes/js/quicktags.js */ // New edit toolbar used with permission // by Alex King // http://www.alexking.org/ /* global adminpage, wpActiveEditor, quicktagsL10n, wpLink, prompt, edButtons */ window.edButtons = []; /* jshint ignore:start */ /** * Back-compat * * Define all former global functions so plugins that hack quicktags.js directly don't cause fatal errors. */ window.edAddTag = function(){}; window.edCheckOpenTags = function(){}; window.edCloseAllTags = function(){}; window.edInsertImage = function(){}; window.edInsertLink = function(){}; window.edInsertTag = function(){}; window.edLink = function(){}; window.edQuickLink = function(){}; window.edRemoveTag = function(){}; window.edShowButton = function(){}; window.edShowLinks = function(){}; window.edSpell = function(){}; window.edToolbar = function(){}; /* jshint ignore:end */ (function(){ // Private stuff is prefixed with an underscore. var _domReady = function(func) { var t, i, DOMContentLoaded, _tryReady; if ( typeof jQuery !== 'undefined' ) { jQuery( func ); } else { t = _domReady; t.funcs = []; t.ready = function() { if ( ! t.isReady ) { t.isReady = true; for ( i = 0; i < t.funcs.length; i++ ) { t.funcs[i](); } } }; if ( t.isReady ) { func(); } else { t.funcs.push(func); } if ( ! t.eventAttached ) { if ( document.addEventListener ) { DOMContentLoaded = function(){document.removeEventListener('DOMContentLoaded', DOMContentLoaded, false);t.ready();}; document.addEventListener('DOMContentLoaded', DOMContentLoaded, false); window.addEventListener('load', t.ready, false); } else if ( document.attachEvent ) { DOMContentLoaded = function(){if (document.readyState === 'complete'){ document.detachEvent('onreadystatechange', DOMContentLoaded);t.ready();}}; document.attachEvent('onreadystatechange', DOMContentLoaded); window.attachEvent('onload', t.ready); _tryReady = function() { try { document.documentElement.doScroll('left'); } catch(e) { setTimeout(_tryReady, 50); return; } t.ready(); }; _tryReady(); } t.eventAttached = true; } } }, _datetime = (function() { var now = new Date(), zeroise; zeroise = function(number) { var str = number.toString(); if ( str.length < 2 ) { str = '0' + str; } return str; }; return now.getUTCFullYear() + '-' + zeroise( now.getUTCMonth() + 1 ) + '-' + zeroise( now.getUTCDate() ) + 'T' + zeroise( now.getUTCHours() ) + ':' + zeroise( now.getUTCMinutes() ) + ':' + zeroise( now.getUTCSeconds() ) + '+00:00'; })(); var qt = window.QTags = function(settings) { if ( typeof(settings) === 'string' ) { settings = {id: settings}; } else if ( typeof(settings) !== 'object' ) { return false; } var t = this, id = settings.id, canvas = document.getElementById(id), name = 'qt_' + id, tb, onclick, toolbar_id, wrap, setActiveEditor; if ( !id || !canvas ) { return false; } t.name = name; t.id = id; t.canvas = canvas; t.settings = settings; if ( id === 'content' && typeof(adminpage) === 'string' && ( adminpage === 'post-new-php' || adminpage === 'post-php' ) ) { // Back compat hack :-( window.edCanvas = canvas; toolbar_id = 'ed_toolbar'; } else { toolbar_id = name + '_toolbar'; } tb = document.getElementById( toolbar_id ); if ( ! tb ) { tb = document.createElement('div'); tb.id = toolbar_id; tb.className = 'quicktags-toolbar'; } canvas.parentNode.insertBefore(tb, canvas); t.toolbar = tb; // Listen for click events. onclick = function(e) { e = e || window.event; var target = e.target || e.srcElement, visible = target.clientWidth || target.offsetWidth, i; // Don't call the callback on pressing the accesskey when the button is not visible. if ( !visible ) { return; } // As long as it has the class ed_button, execute the callback. if ( / ed_button /.test(' ' + target.className + ' ') ) { // We have to reassign canvas here. t.canvas = canvas = document.getElementById(id); i = target.id.replace(name + '_', ''); if ( t.theButtons[i] ) { t.theButtons[i].callback.call(t.theButtons[i], target, canvas, t); } } }; setActiveEditor = function() { window.wpActiveEditor = id; }; wrap = document.getElementById( 'wp-' + id + '-wrap' ); if ( tb.addEventListener ) { tb.addEventListener( 'click', onclick, false ); if ( wrap ) { wrap.addEventListener( 'click', setActiveEditor, false ); } } else if ( tb.attachEvent ) { tb.attachEvent( 'onclick', onclick ); if ( wrap ) { wrap.attachEvent( 'onclick', setActiveEditor ); } } t.getButton = function(id) { return t.theButtons[id]; }; t.getButtonElement = function(id) { return document.getElementById(name + '_' + id); }; t.init = function() { _domReady( function(){ qt._buttonsInit( id ); } ); }; t.remove = function() { delete qt.instances[id]; if ( tb && tb.parentNode ) { tb.parentNode.removeChild( tb ); } }; qt.instances[id] = t; t.init(); }; function _escape( text ) { text = text || ''; text = text.replace( /&([^#])(?![a-z1-4]{1,8};)/gi, '&$1' ); return text.replace( /</g, '<' ).replace( />/g, '>' ).replace( /"/g, '"' ).replace( /'/g, ''' ); } qt.instances = {}; qt.getInstance = function(id) { return qt.instances[id]; }; qt._buttonsInit = function( id ) { var t = this; function _init( instanceId ) { var canvas, name, settings, theButtons, html, ed, id, i, use, defaults = ',strong,em,link,block,del,ins,img,ul,ol,li,code,more,close,'; ed = t.instances[instanceId]; canvas = ed.canvas; name = ed.name; settings = ed.settings; html = ''; theButtons = {}; use = ''; // Set buttons. if ( settings.buttons ) { use = ','+settings.buttons+','; } for ( i in edButtons ) { if ( ! edButtons[i] ) { continue; } id = edButtons[i].id; if ( use && defaults.indexOf( ',' + id + ',' ) !== -1 && use.indexOf( ',' + id + ',' ) === -1 ) { continue; } if ( ! edButtons[i].instance || edButtons[i].instance === instanceId ) { theButtons[id] = edButtons[i]; if ( edButtons[i].html ) { html += edButtons[i].html( name + '_' ); } } } if ( use && use.indexOf(',dfw,') !== -1 ) { theButtons.dfw = new qt.DFWButton(); html += theButtons.dfw.html( name + '_' ); } if ( 'rtl' === document.getElementsByTagName( 'html' )[0].dir ) { theButtons.textdirection = new qt.TextDirectionButton(); html += theButtons.textdirection.html( name + '_' ); } ed.toolbar.innerHTML = html; ed.theButtons = theButtons; if ( typeof jQuery !== 'undefined' ) { jQuery( document ).triggerHandler( 'quicktags-init', [ ed ] ); } } if ( id ) { _init( id ); } else { for ( id in t.instances ) { _init( id ); } } t.buttonsInitDone = true; }; /** * Main API function for adding a button to Quicktags * * Adds qt.Button or qt.TagButton depending on the args. The first three args are always required. * To be able to add button(s) to Quicktags, your script should be enqueued as dependent * on "quicktags" and outputted in the footer. If you are echoing JS directly from PHP, * use add_action( 'admin_print_footer_scripts', 'output_my_js', 100 ) or add_action( 'wp_footer', 'output_my_js', 100 ) * * Minimum required to add a button that calls an external function: * QTags.addButton( 'my_id', 'my button', my_callback ); * function my_callback() { alert('yeah!'); } * * Minimum required to add a button that inserts a tag: * QTags.addButton( 'my_id', 'my button', '<span>', '</span>' ); * QTags.addButton( 'my_id2', 'my button', '<br />' ); * * @param string id Required. Button HTML ID * @param string display Required. Button's value="..." * @param string|function arg1 Required. Either a starting tag to be inserted like "<span>" or a callback that is executed when the button is clicked. * @param string arg2 Optional. Ending tag like "</span>" * @param string access_key Deprecated Not used * @param string title Optional. Button's title="..." * @param int priority Optional. Number representing the desired position of the button in the toolbar. 1 - 9 = first, 11 - 19 = second, 21 - 29 = third, etc. * @param string instance Optional. Limit the button to a specific instance of Quicktags, add to all instances if not present. * @param attr object Optional. Used to pass additional attributes. Currently supports `ariaLabel` and `ariaLabelClose` (for "close tag" state) * @return mixed null or the button object that is needed for back-compat. */ qt.addButton = function( id, display, arg1, arg2, access_key, title, priority, instance, attr ) { var btn; if ( !id || !display ) { return; } priority = priority || 0; arg2 = arg2 || ''; attr = attr || {}; if ( typeof(arg1) === 'function' ) { btn = new qt.Button( id, display, access_key, title, instance, attr ); btn.callback = arg1; } else if ( typeof(arg1) === 'string' ) { btn = new qt.TagButton( id, display, arg1, arg2, access_key, title, instance, attr ); } else { return; } if ( priority === -1 ) { // Back-compat. return btn; } if ( priority > 0 ) { while ( typeof(edButtons[priority]) !== 'undefined' ) { priority++; } edButtons[priority] = btn; } else { edButtons[edButtons.length] = btn; } if ( this.buttonsInitDone ) { this._buttonsInit(); // Add the button HTML to all instances toolbars if addButton() was called too late. } }; qt.insertContent = function(content) { var sel, startPos, endPos, scrollTop, text, canvas = document.getElementById(wpActiveEditor), event; if ( !canvas ) { return false; } if ( document.selection ) { // IE. canvas.focus(); sel = document.selection.createRange(); sel.text = content; canvas.focus(); } else if ( canvas.selectionStart || canvas.selectionStart === 0 ) { // FF, WebKit, Opera. text = canvas.value; startPos = canvas.selectionStart; endPos = canvas.selectionEnd; scrollTop = canvas.scrollTop; canvas.value = text.substring(0, startPos) + content + text.substring(endPos, text.length); canvas.selectionStart = startPos + content.length; canvas.selectionEnd = startPos + content.length; canvas.scrollTop = scrollTop; canvas.focus(); } else { canvas.value += content; canvas.focus(); } if ( document.createEvent ) { event = document.createEvent( 'HTMLEvents' ); event.initEvent( 'change', false, true ); canvas.dispatchEvent( event ); } else if ( canvas.fireEvent ) { canvas.fireEvent( 'onchange' ); } return true; }; // A plain, dumb button. qt.Button = function( id, display, access, title, instance, attr ) { this.id = id; this.display = display; this.access = ''; this.title = title || ''; this.instance = instance || ''; this.attr = attr || {}; }; qt.Button.prototype.html = function(idPrefix) { var active, on, wp, title = this.title ? ' title="' + _escape( this.title ) + '"' : '', ariaLabel = this.attr && this.attr.ariaLabel ? ' aria-label="' + _escape( this.attr.ariaLabel ) + '"' : '', val = this.display ? ' value="' + _escape( this.display ) + '"' : '', id = this.id ? ' id="' + _escape( idPrefix + this.id ) + '"' : '', dfw = ( wp = window.wp ) && wp.editor && wp.editor.dfw; if ( this.id === 'fullscreen' ) { return '<button type="button"' + id + ' class="ed_button qt-dfw qt-fullscreen"' + title + ariaLabel + '></button>'; } else if ( this.id === 'dfw' ) { active = dfw && dfw.isActive() ? '' : ' disabled="disabled"'; on = dfw && dfw.isOn() ? ' active' : ''; return '<button type="button"' + id + ' class="ed_button qt-dfw' + on + '"' + title + ariaLabel + active + '></button>'; } return '<input type="button"' + id + ' class="ed_button button button-small"' + title + ariaLabel + val + ' />'; }; qt.Button.prototype.callback = function(){}; // A button that inserts HTML tag. qt.TagButton = function( id, display, tagStart, tagEnd, access, title, instance, attr ) { var t = this; qt.Button.call( t, id, display, access, title, instance, attr ); t.tagStart = tagStart; t.tagEnd = tagEnd; }; qt.TagButton.prototype = new qt.Button(); qt.TagButton.prototype.openTag = function( element, ed ) { if ( ! ed.openTags ) { ed.openTags = []; } if ( this.tagEnd ) { ed.openTags.push( this.id ); element.value = '/' + element.value; if ( this.attr.ariaLabelClose ) { element.setAttribute( 'aria-label', this.attr.ariaLabelClose ); } } }; qt.TagButton.prototype.closeTag = function( element, ed ) { var i = this.isOpen(ed); if ( i !== false ) { ed.openTags.splice( i, 1 ); } element.value = this.display; if ( this.attr.ariaLabel ) { element.setAttribute( 'aria-label', this.attr.ariaLabel ); } }; // Whether a tag is open or not. Returns false if not open, or current open depth of the tag. qt.TagButton.prototype.isOpen = function (ed) { var t = this, i = 0, ret = false; if ( ed.openTags ) { while ( ret === false && i < ed.openTags.length ) { ret = ed.openTags[i] === t.id ? i : false; i ++; } } else { ret = false; } return ret; }; qt.TagButton.prototype.callback = function(element, canvas, ed) { var t = this, startPos, endPos, cursorPos, scrollTop, v = canvas.value, l, r, i, sel, endTag = v ? t.tagEnd : '', event; if ( document.selection ) { // IE. canvas.focus(); sel = document.selection.createRange(); if ( sel.text.length > 0 ) { if ( !t.tagEnd ) { sel.text = sel.text + t.tagStart; } else { sel.text = t.tagStart + sel.text + endTag; } } else { if ( !t.tagEnd ) { sel.text = t.tagStart; } else if ( t.isOpen(ed) === false ) { sel.text = t.tagStart; t.openTag(element, ed); } else { sel.text = endTag; t.closeTag(element, ed); } } canvas.focus(); } else if ( canvas.selectionStart || canvas.selectionStart === 0 ) { // FF, WebKit, Opera. startPos = canvas.selectionStart; endPos = canvas.selectionEnd; if ( startPos < endPos && v.charAt( endPos - 1 ) === '\n' ) { endPos -= 1; } cursorPos = endPos; scrollTop = canvas.scrollTop; l = v.substring(0, startPos); // Left of the selection. r = v.substring(endPos, v.length); // Right of the selection. i = v.substring(startPos, endPos); // Inside the selection. if ( startPos !== endPos ) { if ( !t.tagEnd ) { canvas.value = l + i + t.tagStart + r; // Insert self-closing tags after the selection. cursorPos += t.tagStart.length; } else { canvas.value = l + t.tagStart + i + endTag + r; cursorPos += t.tagStart.length + endTag.length; } } else { if ( !t.tagEnd ) { canvas.value = l + t.tagStart + r; cursorPos = startPos + t.tagStart.length; } else if ( t.isOpen(ed) === false ) { canvas.value = l + t.tagStart + r; t.openTag(element, ed); cursorPos = startPos + t.tagStart.length; } else { canvas.value = l + endTag + r; cursorPos = startPos + endTag.length; t.closeTag(element, ed); } } canvas.selectionStart = cursorPos; canvas.selectionEnd = cursorPos; canvas.scrollTop = scrollTop; canvas.focus(); } else { // Other browsers? if ( !endTag ) { canvas.value += t.tagStart; } else if ( t.isOpen(ed) !== false ) { canvas.value += t.tagStart; t.openTag(element, ed); } else { canvas.value += endTag; t.closeTag(element, ed); } canvas.focus(); } if ( document.createEvent ) { event = document.createEvent( 'HTMLEvents' ); event.initEvent( 'change', false, true ); canvas.dispatchEvent( event ); } else if ( canvas.fireEvent ) { canvas.fireEvent( 'onchange' ); } }; // Removed. qt.SpellButton = function() {}; // The close tags button. qt.CloseButton = function() { qt.Button.call( this, 'close', quicktagsL10n.closeTags, '', quicktagsL10n.closeAllOpenTags ); }; qt.CloseButton.prototype = new qt.Button(); qt._close = function(e, c, ed) { var button, element, tbo = ed.openTags; if ( tbo ) { while ( tbo.length > 0 ) { button = ed.getButton(tbo[tbo.length - 1]); element = document.getElementById(ed.name + '_' + button.id); if ( e ) { button.callback.call(button, element, c, ed); } else { button.closeTag(element, ed); } } } }; qt.CloseButton.prototype.callback = qt._close; qt.closeAllTags = function( editor_id ) { var ed = this.getInstance( editor_id ); if ( ed ) { qt._close( '', ed.canvas, ed ); } }; // The link button. qt.LinkButton = function() { var attr = { ariaLabel: quicktagsL10n.link }; qt.TagButton.call( this, 'link', 'link', '', '</a>', '', '', '', attr ); }; qt.LinkButton.prototype = new qt.TagButton(); qt.LinkButton.prototype.callback = function(e, c, ed, defaultValue) { var URL, t = this; if ( typeof wpLink !== 'undefined' ) { wpLink.open( ed.id ); return; } if ( ! defaultValue ) { defaultValue = 'http://'; } if ( t.isOpen(ed) === false ) { URL = prompt( quicktagsL10n.enterURL, defaultValue ); if ( URL ) { t.tagStart = '<a href="' + URL + '">'; qt.TagButton.prototype.callback.call(t, e, c, ed); } } else { qt.TagButton.prototype.callback.call(t, e, c, ed); } }; // The img button. qt.ImgButton = function() { var attr = { ariaLabel: quicktagsL10n.image }; qt.TagButton.call( this, 'img', 'img', '', '', '', '', '', attr ); }; qt.ImgButton.prototype = new qt.TagButton(); qt.ImgButton.prototype.callback = function(e, c, ed, defaultValue) { if ( ! defaultValue ) { defaultValue = 'http://'; } var src = prompt(quicktagsL10n.enterImageURL, defaultValue), alt; if ( src ) { alt = prompt(quicktagsL10n.enterImageDescription, ''); this.tagStart = '<img src="' + src + '" alt="' + alt + '" />'; qt.TagButton.prototype.callback.call(this, e, c, ed); } }; qt.DFWButton = function() { qt.Button.call( this, 'dfw', '', 'f', quicktagsL10n.dfw ); }; qt.DFWButton.prototype = new qt.Button(); qt.DFWButton.prototype.callback = function() { var wp; if ( ! ( wp = window.wp ) || ! wp.editor || ! wp.editor.dfw ) { return; } window.wp.editor.dfw.toggle(); }; qt.TextDirectionButton = function() { qt.Button.call( this, 'textdirection', quicktagsL10n.textdirection, '', quicktagsL10n.toggleTextdirection ); }; qt.TextDirectionButton.prototype = new qt.Button(); qt.TextDirectionButton.prototype.callback = function(e, c) { var isRTL = ( 'rtl' === document.getElementsByTagName('html')[0].dir ), currentDirection = c.style.direction; if ( ! currentDirection ) { currentDirection = ( isRTL ) ? 'rtl' : 'ltr'; } c.style.direction = ( 'rtl' === currentDirection ) ? 'ltr' : 'rtl'; c.focus(); }; // Ensure backward compatibility. edButtons[10] = new qt.TagButton( 'strong', 'b', '<strong>', '</strong>', '', '', '', { ariaLabel: quicktagsL10n.strong, ariaLabelClose: quicktagsL10n.strongClose } ); edButtons[20] = new qt.TagButton( 'em', 'i', '<em>', '</em>', '', '', '', { ariaLabel: quicktagsL10n.em, ariaLabelClose: quicktagsL10n.emClose } ); edButtons[30] = new qt.LinkButton(); // Special case. edButtons[40] = new qt.TagButton( 'block', 'b-quote', '\n\n<blockquote>', '</blockquote>\n\n', '', '', '', { ariaLabel: quicktagsL10n.blockquote, ariaLabelClose: quicktagsL10n.blockquoteClose } ); edButtons[50] = new qt.TagButton( 'del', 'del', '<del datetime="' + _datetime + '">', '</del>', '', '', '', { ariaLabel: quicktagsL10n.del, ariaLabelClose: quicktagsL10n.delClose } ); edButtons[60] = new qt.TagButton( 'ins', 'ins', '<ins datetime="' + _datetime + '">', '</ins>', '', '', '', { ariaLabel: quicktagsL10n.ins, ariaLabelClose: quicktagsL10n.insClose } ); edButtons[70] = new qt.ImgButton(); // Special case. edButtons[80] = new qt.TagButton( 'ul', 'ul', '<ul>\n', '</ul>\n\n', '', '', '', { ariaLabel: quicktagsL10n.ul, ariaLabelClose: quicktagsL10n.ulClose } ); edButtons[90] = new qt.TagButton( 'ol', 'ol', '<ol>\n', '</ol>\n\n', '', '', '', { ariaLabel: quicktagsL10n.ol, ariaLabelClose: quicktagsL10n.olClose } ); edButtons[100] = new qt.TagButton( 'li', 'li', '\t<li>', '</li>\n', '', '', '', { ariaLabel: quicktagsL10n.li, ariaLabelClose: quicktagsL10n.liClose } ); edButtons[110] = new qt.TagButton( 'code', 'code', '<code>', '</code>', '', '', '', { ariaLabel: quicktagsL10n.code, ariaLabelClose: quicktagsL10n.codeClose } ); edButtons[120] = new qt.TagButton( 'more', 'more', '<!--more-->\n\n', '', '', '', '', { ariaLabel: quicktagsL10n.more } ); edButtons[140] = new qt.CloseButton(); })(); /** * Initialize new instance of the Quicktags editor */ window.quicktags = function(settings) { return new window.QTags(settings); }; /** * Inserts content at the caret in the active editor (textarea) * * Added for back compatibility * @see QTags.insertContent() */ window.edInsertContent = function(bah, txt) { return window.QTags.insertContent(txt); }; /** * Adds a button to all instances of the editor * * Added for back compatibility, use QTags.addButton() as it gives more flexibility like type of button, button placement, etc. * @see QTags.addButton() */ window.edButton = function(id, display, tagStart, tagEnd, access) { return window.QTags.addButton( id, display, tagStart, tagEnd, access, '', -1 ); }; PK ��\M`���d �d customize-base.jsnu �[��� /** * @output wp-includes/js/customize-base.js */ /** @namespace wp */ window.wp = window.wp || {}; (function( exports, $ ){ var api = {}, ctor, inherits, slice = Array.prototype.slice; // Shared empty constructor function to aid in prototype-chain creation. ctor = function() {}; /** * Helper function to correctly set up the prototype chain, for subclasses. * Similar to `goog.inherits`, but uses a hash of prototype properties and * class properties to be extended. * * @param object parent Parent class constructor to inherit from. * @param object protoProps Properties to apply to the prototype for use as class instance properties. * @param object staticProps Properties to apply directly to the class constructor. * @return child The subclassed constructor. */ inherits = function( parent, protoProps, staticProps ) { var child; /* * The constructor function for the new subclass is either defined by you * (the "constructor" property in your `extend` definition), or defaulted * by us to simply call `super()`. */ if ( protoProps && protoProps.hasOwnProperty( 'constructor' ) ) { child = protoProps.constructor; } else { child = function() { /* * Storing the result `super()` before returning the value * prevents a bug in Opera where, if the constructor returns * a function, Opera will reject the return value in favor of * the original object. This causes all sorts of trouble. */ var result = parent.apply( this, arguments ); return result; }; } // Inherit class (static) properties from parent. $.extend( child, parent ); // Set the prototype chain to inherit from `parent`, // without calling `parent`'s constructor function. ctor.prototype = parent.prototype; child.prototype = new ctor(); // Add prototype properties (instance properties) to the subclass, // if supplied. if ( protoProps ) { $.extend( child.prototype, protoProps ); } // Add static properties to the constructor function, if supplied. if ( staticProps ) { $.extend( child, staticProps ); } // Correctly set child's `prototype.constructor`. child.prototype.constructor = child; // Set a convenience property in case the parent's prototype is needed later. child.__super__ = parent.prototype; return child; }; /** * Base class for object inheritance. */ api.Class = function( applicator, argsArray, options ) { var magic, args = arguments; if ( applicator && argsArray && api.Class.applicator === applicator ) { args = argsArray; $.extend( this, options || {} ); } magic = this; /* * If the class has a method called "instance", * the return value from the class' constructor will be a function that * calls the "instance" method. * * It is also an object that has properties and methods inside it. */ if ( this.instance ) { magic = function() { return magic.instance.apply( magic, arguments ); }; $.extend( magic, this ); } magic.initialize.apply( magic, args ); return magic; }; /** * Creates a subclass of the class. * * @param object protoProps Properties to apply to the prototype. * @param object staticProps Properties to apply directly to the class. * @return child The subclass. */ api.Class.extend = function( protoProps, staticProps ) { var child = inherits( this, protoProps, staticProps ); child.extend = this.extend; return child; }; api.Class.applicator = {}; /** * Initialize a class instance. * * Override this function in a subclass as needed. */ api.Class.prototype.initialize = function() {}; /* * Checks whether a given instance extended a constructor. * * The magic surrounding the instance parameter causes the instanceof * keyword to return inaccurate results; it defaults to the function's * prototype instead of the constructor chain. Hence this function. */ api.Class.prototype.extended = function( constructor ) { var proto = this; while ( typeof proto.constructor !== 'undefined' ) { if ( proto.constructor === constructor ) { return true; } if ( typeof proto.constructor.__super__ === 'undefined' ) { return false; } proto = proto.constructor.__super__; } return false; }; /** * An events manager object, offering the ability to bind to and trigger events. * * Used as a mixin. */ api.Events = { trigger: function( id ) { if ( this.topics && this.topics[ id ] ) { this.topics[ id ].fireWith( this, slice.call( arguments, 1 ) ); } return this; }, bind: function( id ) { this.topics = this.topics || {}; this.topics[ id ] = this.topics[ id ] || $.Callbacks(); this.topics[ id ].add.apply( this.topics[ id ], slice.call( arguments, 1 ) ); return this; }, unbind: function( id ) { if ( this.topics && this.topics[ id ] ) { this.topics[ id ].remove.apply( this.topics[ id ], slice.call( arguments, 1 ) ); } return this; } }; /** * Observable values that support two-way binding. * * @memberOf wp.customize * @alias wp.customize.Value * * @constructor */ api.Value = api.Class.extend(/** @lends wp.customize.Value.prototype */{ /** * @param {mixed} initial The initial value. * @param {Object} options */ initialize: function( initial, options ) { this._value = initial; // @todo Potentially change this to a this.set() call. this.callbacks = $.Callbacks(); this._dirty = false; $.extend( this, options || {} ); this.set = this.set.bind( this ); }, /* * Magic. Returns a function that will become the instance. * Set to null to prevent the instance from extending a function. */ instance: function() { return arguments.length ? this.set.apply( this, arguments ) : this.get(); }, /** * Get the value. * * @return {mixed} */ get: function() { return this._value; }, /** * Set the value and trigger all bound callbacks. * * @param {Object} to New value. */ set: function( to ) { var from = this._value; to = this._setter.apply( this, arguments ); to = this.validate( to ); // Bail if the sanitized value is null or unchanged. if ( null === to || _.isEqual( from, to ) ) { return this; } this._value = to; this._dirty = true; this.callbacks.fireWith( this, [ to, from ] ); return this; }, _setter: function( to ) { return to; }, setter: function( callback ) { var from = this.get(); this._setter = callback; // Temporarily clear value so setter can decide if it's valid. this._value = null; this.set( from ); return this; }, resetSetter: function() { this._setter = this.constructor.prototype._setter; this.set( this.get() ); return this; }, validate: function( value ) { return value; }, /** * Bind a function to be invoked whenever the value changes. * * @param {...Function} A function, or multiple functions, to add to the callback stack. */ bind: function() { this.callbacks.add.apply( this.callbacks, arguments ); return this; }, /** * Unbind a previously bound function. * * @param {...Function} A function, or multiple functions, to remove from the callback stack. */ unbind: function() { this.callbacks.remove.apply( this.callbacks, arguments ); return this; }, link: function() { // values* var set = this.set; $.each( arguments, function() { this.bind( set ); }); return this; }, unlink: function() { // values* var set = this.set; $.each( arguments, function() { this.unbind( set ); }); return this; }, sync: function() { // values* var that = this; $.each( arguments, function() { that.link( this ); this.link( that ); }); return this; }, unsync: function() { // values* var that = this; $.each( arguments, function() { that.unlink( this ); this.unlink( that ); }); return this; } }); /** * A collection of observable values. * * @memberOf wp.customize * @alias wp.customize.Values * * @constructor * @augments wp.customize.Class * @mixes wp.customize.Events */ api.Values = api.Class.extend(/** @lends wp.customize.Values.prototype */{ /** * The default constructor for items of the collection. * * @type {object} */ defaultConstructor: api.Value, initialize: function( options ) { $.extend( this, options || {} ); this._value = {}; this._deferreds = {}; }, /** * Get the instance of an item from the collection if only ID is specified. * * If more than one argument is supplied, all are expected to be IDs and * the last to be a function callback that will be invoked when the requested * items are available. * * @see {api.Values.when} * * @param {string} id ID of the item. * @param {...} Zero or more IDs of items to wait for and a callback * function to invoke when they're available. Optional. * @return {mixed} The item instance if only one ID was supplied. * A Deferred Promise object if a callback function is supplied. */ instance: function( id ) { if ( arguments.length === 1 ) { return this.value( id ); } return this.when.apply( this, arguments ); }, /** * Get the instance of an item. * * @param {string} id The ID of the item. * @return {[type]} [description] */ value: function( id ) { return this._value[ id ]; }, /** * Whether the collection has an item with the given ID. * * @param {string} id The ID of the item to look for. * @return {boolean} */ has: function( id ) { return typeof this._value[ id ] !== 'undefined'; }, /** * Add an item to the collection. * * @param {string|wp.customize.Class} item - The item instance to add, or the ID for the instance to add. * When an ID string is supplied, then itemObject must be provided. * @param {wp.customize.Class} [itemObject] - The item instance when the first argument is an ID string. * @return {wp.customize.Class} The new item's instance, or an existing instance if already added. */ add: function( item, itemObject ) { var collection = this, id, instance; if ( 'string' === typeof item ) { id = item; instance = itemObject; } else { if ( 'string' !== typeof item.id ) { throw new Error( 'Unknown key' ); } id = item.id; instance = item; } if ( collection.has( id ) ) { return collection.value( id ); } collection._value[ id ] = instance; instance.parent = collection; // Propagate a 'change' event on an item up to the collection. if ( instance.extended( api.Value ) ) { instance.bind( collection._change ); } collection.trigger( 'add', instance ); // If a deferred object exists for this item, // resolve it. if ( collection._deferreds[ id ] ) { collection._deferreds[ id ].resolve(); } return collection._value[ id ]; }, /** * Create a new item of the collection using the collection's default constructor * and store it in the collection. * * @param {string} id The ID of the item. * @param {mixed} value Any extra arguments are passed into the item's initialize method. * @return {mixed} The new item's instance. */ create: function( id ) { return this.add( id, new this.defaultConstructor( api.Class.applicator, slice.call( arguments, 1 ) ) ); }, /** * Iterate over all items in the collection invoking the provided callback. * * @param {Function} callback Function to invoke. * @param {Object} context Object context to invoke the function with. Optional. */ each: function( callback, context ) { context = typeof context === 'undefined' ? this : context; $.each( this._value, function( key, obj ) { callback.call( context, obj, key ); }); }, /** * Remove an item from the collection. * * @param {string} id The ID of the item to remove. */ remove: function( id ) { var value = this.value( id ); if ( value ) { // Trigger event right before the element is removed from the collection. this.trigger( 'remove', value ); if ( value.extended( api.Value ) ) { value.unbind( this._change ); } delete value.parent; } delete this._value[ id ]; delete this._deferreds[ id ]; // Trigger removed event after the item has been eliminated from the collection. if ( value ) { this.trigger( 'removed', value ); } }, /** * Runs a callback once all requested values exist. * * when( ids*, [callback] ); * * For example: * when( id1, id2, id3, function( value1, value2, value3 ) {} ); * * @return $.Deferred.promise(); */ when: function() { var self = this, ids = slice.call( arguments ), dfd = $.Deferred(); // If the last argument is a callback, bind it to .done(). if ( typeof ids[ ids.length - 1 ] === 'function' ) { dfd.done( ids.pop() ); } /* * Create a stack of deferred objects for each item that is not * yet available, and invoke the supplied callback when they are. */ $.when.apply( $, $.map( ids, function( id ) { if ( self.has( id ) ) { return; } /* * The requested item is not available yet, create a deferred * object to resolve when it becomes available. */ return self._deferreds[ id ] = self._deferreds[ id ] || $.Deferred(); })).done( function() { var values = $.map( ids, function( id ) { return self( id ); }); // If a value is missing, we've used at least one expired deferred. // Call Values.when again to generate a new deferred. if ( values.length !== ids.length ) { // ids.push( callback ); self.when.apply( self, ids ).done( function() { dfd.resolveWith( self, values ); }); return; } dfd.resolveWith( self, values ); }); return dfd.promise(); }, /** * A helper function to propagate a 'change' event from an item * to the collection itself. */ _change: function() { this.parent.trigger( 'change', this ); } }); // Create a global events bus on the Customizer. $.extend( api.Values.prototype, api.Events ); /** * Cast a string to a jQuery collection if it isn't already. * * @param {string|jQuery collection} element */ api.ensure = function( element ) { return typeof element === 'string' ? $( element ) : element; }; /** * An observable value that syncs with an element. * * Handles inputs, selects, and textareas by default. * * @memberOf wp.customize * @alias wp.customize.Element * * @constructor * @augments wp.customize.Value * @augments wp.customize.Class */ api.Element = api.Value.extend(/** @lends wp.customize.Element */{ initialize: function( element, options ) { var self = this, synchronizer = api.Element.synchronizer.html, type, update, refresh; this.element = api.ensure( element ); this.events = ''; if ( this.element.is( 'input, select, textarea' ) ) { type = this.element.prop( 'type' ); this.events += ' change input'; synchronizer = api.Element.synchronizer.val; if ( this.element.is( 'input' ) && api.Element.synchronizer[ type ] ) { synchronizer = api.Element.synchronizer[ type ]; } } api.Value.prototype.initialize.call( this, null, $.extend( options || {}, synchronizer ) ); this._value = this.get(); update = this.update; refresh = this.refresh; this.update = function( to ) { if ( to !== refresh.call( self ) ) { update.apply( this, arguments ); } }; this.refresh = function() { self.set( refresh.call( self ) ); }; this.bind( this.update ); this.element.on( this.events, this.refresh ); }, find: function( selector ) { return $( selector, this.element ); }, refresh: function() {}, update: function() {} }); api.Element.synchronizer = {}; $.each( [ 'html', 'val' ], function( index, method ) { api.Element.synchronizer[ method ] = { update: function( to ) { this.element[ method ]( to ); }, refresh: function() { return this.element[ method ](); } }; }); api.Element.synchronizer.checkbox = { update: function( to ) { this.element.prop( 'checked', to ); }, refresh: function() { return this.element.prop( 'checked' ); } }; api.Element.synchronizer.radio = { update: function( to ) { this.element.filter( function() { return this.value === to; }).prop( 'checked', true ); }, refresh: function() { return this.element.filter( ':checked' ).val(); } }; $.support.postMessage = !! window.postMessage; /** * A communicator for sending data from one window to another over postMessage. * * @memberOf wp.customize * @alias wp.customize.Messenger * * @constructor * @augments wp.customize.Class * @mixes wp.customize.Events */ api.Messenger = api.Class.extend(/** @lends wp.customize.Messenger.prototype */{ /** * Create a new Value. * * @param {string} key Unique identifier. * @param {mixed} initial Initial value. * @param {mixed} options Options hash. Optional. * @return {Value} Class instance of the Value. */ add: function( key, initial, options ) { return this[ key ] = new api.Value( initial, options ); }, /** * Initialize Messenger. * * @param {Object} params - Parameters to configure the messenger. * {string} params.url - The URL to communicate with. * {window} params.targetWindow - The window instance to communicate with. Default window.parent. * {string} params.channel - If provided, will send the channel with each message and only accept messages a matching channel. * @param {Object} options - Extend any instance parameter or method with this object. */ initialize: function( params, options ) { // Target the parent frame by default, but only if a parent frame exists. var defaultTarget = window.parent === window ? null : window.parent; $.extend( this, options || {} ); this.add( 'channel', params.channel ); this.add( 'url', params.url || '' ); this.add( 'origin', this.url() ).link( this.url ).setter( function( to ) { var urlParser = document.createElement( 'a' ); urlParser.href = to; // Port stripping needed by IE since it adds to host but not to event.origin. return urlParser.protocol + '//' + urlParser.host.replace( /:(80|443)$/, '' ); }); // First add with no value. this.add( 'targetWindow', null ); // This avoids SecurityErrors when setting a window object in x-origin iframe'd scenarios. this.targetWindow.set = function( to ) { var from = this._value; to = this._setter.apply( this, arguments ); to = this.validate( to ); if ( null === to || from === to ) { return this; } this._value = to; this._dirty = true; this.callbacks.fireWith( this, [ to, from ] ); return this; }; // Now set it. this.targetWindow( params.targetWindow || defaultTarget ); /* * Since we want jQuery to treat the receive function as unique * to this instance, we give the function a new guid. * * This will prevent every Messenger's receive function from being * unbound when calling $.off( 'message', this.receive ); */ this.receive = this.receive.bind( this ); this.receive.guid = $.guid++; $( window ).on( 'message', this.receive ); }, destroy: function() { $( window ).off( 'message', this.receive ); }, /** * Receive data from the other window. * * @param {jQuery.Event} event Event with embedded data. */ receive: function( event ) { var message; event = event.originalEvent; if ( ! this.targetWindow || ! this.targetWindow() ) { return; } // Check to make sure the origin is valid. if ( this.origin() && event.origin !== this.origin() ) { return; } // Ensure we have a string that's JSON.parse-able. if ( typeof event.data !== 'string' || event.data[0] !== '{' ) { return; } message = JSON.parse( event.data ); // Check required message properties. if ( ! message || ! message.id || typeof message.data === 'undefined' ) { return; } // Check if channel names match. if ( ( message.channel || this.channel() ) && this.channel() !== message.channel ) { return; } this.trigger( message.id, message.data ); }, /** * Send data to the other window. * * @param {string} id The event name. * @param {Object} data Data. */ send: function( id, data ) { var message; data = typeof data === 'undefined' ? null : data; if ( ! this.url() || ! this.targetWindow() ) { return; } message = { id: id, data: data }; if ( this.channel() ) { message.channel = this.channel(); } this.targetWindow().postMessage( JSON.stringify( message ), this.origin() ); } }); // Add the Events mixin to api.Messenger. $.extend( api.Messenger.prototype, api.Events ); /** * Notification. * * @class * @augments wp.customize.Class * @since 4.6.0 * * @memberOf wp.customize * @alias wp.customize.Notification * * @param {string} code - The error code. * @param {object} params - Params. * @param {string} params.message=null - The error message. * @param {string} [params.type=error] - The notification type. * @param {boolean} [params.fromServer=false] - Whether the notification was server-sent. * @param {string} [params.setting=null] - The setting ID that the notification is related to. * @param {*} [params.data=null] - Any additional data. */ api.Notification = api.Class.extend(/** @lends wp.customize.Notification.prototype */{ /** * Template function for rendering the notification. * * This will be populated with template option or else it will be populated with template from the ID. * * @since 4.9.0 * @var {Function} */ template: null, /** * ID for the template to render the notification. * * @since 4.9.0 * @var {string} */ templateId: 'customize-notification', /** * Additional class names to add to the notification container. * * @since 4.9.0 * @var {string} */ containerClasses: '', /** * Initialize notification. * * @since 4.9.0 * * @param {string} code - Notification code. * @param {Object} params - Notification parameters. * @param {string} params.message - Message. * @param {string} [params.type=error] - Type. * @param {string} [params.setting] - Related setting ID. * @param {Function} [params.template] - Function for rendering template. If not provided, this will come from templateId. * @param {string} [params.templateId] - ID for template to render the notification. * @param {string} [params.containerClasses] - Additional class names to add to the notification container. * @param {boolean} [params.dismissible] - Whether the notification can be dismissed. */ initialize: function( code, params ) { var _params; this.code = code; _params = _.extend( { message: null, type: 'error', fromServer: false, data: null, setting: null, template: null, dismissible: false, containerClasses: '' }, params ); delete _params.code; _.extend( this, _params ); }, /** * Render the notification. * * @since 4.9.0 * * @return {jQuery} Notification container element. */ render: function() { var notification = this, container, data; if ( ! notification.template ) { notification.template = wp.template( notification.templateId ); } data = _.extend( {}, notification, { alt: notification.parent && notification.parent.alt } ); container = $( notification.template( data ) ); if ( notification.dismissible ) { container.find( '.notice-dismiss' ).on( 'click keydown', function( event ) { if ( 'keydown' === event.type && 13 !== event.which ) { return; } if ( notification.parent ) { notification.parent.remove( notification.code ); } else { container.remove(); } }); } return container; } }); // The main API object is also a collection of all customizer settings. api = $.extend( new api.Values(), api ); /** * Get all customize settings. * * @alias wp.customize.get * * @return {Object} */ api.get = function() { var result = {}; this.each( function( obj, key ) { result[ key ] = obj.get(); }); return result; }; /** * Utility function namespace * * @namespace wp.customize.utils */ api.utils = {}; /** * Parse query string. * * @since 4.7.0 * @access public * * @alias wp.customize.utils.parseQueryString * * @param {string} queryString Query string. * @return {Object} Parsed query string. */ api.utils.parseQueryString = function parseQueryString( queryString ) { var queryParams = {}; _.each( queryString.split( '&' ), function( pair ) { var parts, key, value; parts = pair.split( '=', 2 ); if ( ! parts[0] ) { return; } key = decodeURIComponent( parts[0].replace( /\+/g, ' ' ) ); key = key.replace( / /g, '_' ); // What PHP does. if ( _.isUndefined( parts[1] ) ) { value = null; } else { value = decodeURIComponent( parts[1].replace( /\+/g, ' ' ) ); } queryParams[ key ] = value; } ); return queryParams; }; /** * Expose the API publicly on window.wp.customize * * @namespace wp.customize */ exports.customize = api; })( wp, jQuery ); PK ��\��~? ? wp-ajax-response.jsnu �[��� /** * @output wp-includes/js/wp-ajax-response.js */ /* global wpAjax */ window.wpAjax = jQuery.extend( { unserialize: function( s ) { var r = {}, q, pp, i, p; if ( !s ) { return r; } q = s.split('?'); if ( q[1] ) { s = q[1]; } pp = s.split('&'); for ( i in pp ) { if ( typeof pp.hasOwnProperty === 'function' && !pp.hasOwnProperty(i) ) { continue; } p = pp[i].split('='); r[p[0]] = p[1]; } return r; }, parseAjaxResponse: function( x, r, e ) { // 1 = good, 0 = strange (bad data?), -1 = you lack permission. var parsed = {}, re = jQuery('#' + r).empty(), err = '', noticeMessage = ''; if ( x && typeof x === 'object' && x.getElementsByTagName('wp_ajax') ) { parsed.responses = []; parsed.errors = false; jQuery('response', x).each( function() { var th = jQuery(this), child = jQuery(this.firstChild), response; response = { action: th.attr('action'), what: child.get(0).nodeName, id: child.attr('id'), oldId: child.attr('old_id'), position: child.attr('position') }; response.data = jQuery( 'response_data', child ).text(); response.supplemental = {}; if ( !jQuery( 'supplemental', child ).children().each( function() { if ( this.nodeName === 'notice' ) { noticeMessage += jQuery(this).text(); return; } response.supplemental[this.nodeName] = jQuery(this).text(); } ).length ) { response.supplemental = false; } response.errors = []; if ( !jQuery('wp_error', child).each( function() { var code = jQuery(this).attr('code'), anError, errorData, formField; anError = { code: code, message: this.firstChild.nodeValue, data: false }; errorData = jQuery('wp_error_data[code="' + code + '"]', x); if ( errorData ) { anError.data = errorData.get(); } formField = jQuery( 'form-field', errorData ).text(); if ( formField ) { code = formField; } if ( e ) { wpAjax.invalidateForm( jQuery('#' + e + ' :input[name="' + code + '"]' ).parents('.form-field:first') ); } err += '<p>' + anError.message + '</p>'; response.errors.push( anError ); parsed.errors = true; } ).length ) { response.errors = false; } parsed.responses.push( response ); } ); if ( err.length ) { re.html( '<div class="notice notice-error" role="alert">' + err + '</div>' ); wp.a11y.speak( err ); } else if ( noticeMessage.length ) { re.html( '<div class="notice notice-success is-dismissible" role="alert"><p>' + noticeMessage + '</p></div>'); jQuery(document).trigger( 'wp-updates-notice-added' ); wp.a11y.speak( noticeMessage ); } return parsed; } if ( isNaN( x ) ) { wp.a11y.speak( x ); return ! re.html( '<div class="notice notice-error" role="alert"><p>' + x + '</p></div>' ); } x = parseInt( x, 10 ); if ( -1 === x ) { wp.a11y.speak( wpAjax.noPerm ); return ! re.html( '<div class="notice notice-error" role="alert"><p>' + wpAjax.noPerm + '</p></div>' ); } else if ( 0 === x ) { wp.a11y.speak( wpAjax.broken ); return ! re.html( '<div class="notice notice-error" role="alert"><p>' + wpAjax.broken + '</p></div>' ); } return true; }, invalidateForm: function ( selector ) { return jQuery( selector ).addClass( 'form-invalid' ).find('input').one( 'change wp-check-valid-field', function() { jQuery(this).closest('.form-invalid').removeClass( 'form-invalid' ); } ); }, validateForm: function( selector ) { selector = jQuery( selector ); return !wpAjax.invalidateForm( selector.find('.form-required').filter( function() { return jQuery('input:visible', this).val() === ''; } ) ).length; } }, wpAjax || { noPerm: 'Sorry, you are not allowed to do that.', broken: 'An error occurred while processing your request. Please refresh the page and try again.' } ); // Basic form validation. jQuery( function($){ $('form.validate').on( 'submit', function() { return wpAjax.validateForm( $(this) ); } ); }); PK ��\�[S S shortcode.min.jsnu �[��� /*! This file is auto-generated */ window.wp=window.wp||{},wp.shortcode={next:function(t,e,n){var s=wp.shortcode.regexp(t);if(s.lastIndex=n||0,n=s.exec(e))return"["===n[1]&&"]"===n[7]?wp.shortcode.next(t,e,s.lastIndex):(t={index:n.index,content:n[0],shortcode:wp.shortcode.fromMatch(n)},n[1]&&(t.content=t.content.slice(1),t.index++),n[7]&&(t.content=t.content.slice(0,-1)),t)},replace:function(t,e,h){return e.replace(wp.shortcode.regexp(t),function(t,e,n,s,r,o,i,c){var a;return("["!==e||"]"!==c)&&(a=h(wp.shortcode.fromMatch(arguments)))?e+a+c:t})},string:function(t){return new wp.shortcode(t).string()},regexp:_.memoize(function(t){return new RegExp("\\[(\\[?)("+t+")(?![\\w-])([^\\]\\/]*(?:\\/(?!\\])[^\\]\\/]*)*?)(?:(\\/)\\]|\\](?:([^\\[]*(?:\\[(?!\\/\\2\\])[^\\[]*)*)(\\[\\/\\2\\]))?)(\\]?)","g")}),attrs:_.memoize(function(t){var e,n={},s=[],r=/([\w-]+)\s*=\s*"([^"]*)"(?:\s|$)|([\w-]+)\s*=\s*'([^']*)'(?:\s|$)|([\w-]+)\s*=\s*([^\s'"]+)(?:\s|$)|"([^"]*)"(?:\s|$)|'([^']*)'(?:\s|$)|(\S+)(?:\s|$)/g;for(t=t.replace(/[\u00a0\u200b]/g," ");e=r.exec(t);)e[1]?n[e[1].toLowerCase()]=e[2]:e[3]?n[e[3].toLowerCase()]=e[4]:e[5]?n[e[5].toLowerCase()]=e[6]:e[7]?s.push(e[7]):e[8]?s.push(e[8]):e[9]&&s.push(e[9]);return{named:n,numeric:s}}),fromMatch:function(t){var e=t[4]?"self-closing":t[6]?"closed":"single";return new wp.shortcode({tag:t[2],attrs:t[3],type:e,content:t[5]})}},wp.shortcode=_.extend(function(t){_.extend(this,_.pick(t||{},"tag","attrs","type","content"));var e=this.attrs;this.attrs={named:{},numeric:[]},e&&(_.isString(e)?this.attrs=wp.shortcode.attrs(e):0===_.difference(_.keys(e),["named","numeric"]).length?this.attrs=_.defaults(e,this.attrs):_.each(t.attrs,function(t,e){this.set(e,t)},this))},wp.shortcode),_.extend(wp.shortcode.prototype,{get:function(t){return this.attrs[_.isNumber(t)?"numeric":"named"][t]},set:function(t,e){return this.attrs[_.isNumber(t)?"numeric":"named"][t]=e,this},string:function(){var n="["+this.tag;return _.each(this.attrs.numeric,function(t){/\s/.test(t)?n+=' "'+t+'"':n+=" "+t}),_.each(this.attrs.named,function(t,e){n+=" "+e+'="'+t+'"'}),"single"===this.type?n+"]":"self-closing"===this.type?n+" /]":(n+="]",this.content&&(n+=this.content),n+"[/"+this.tag+"]")}}),wp.html=_.extend(wp.html||{},{attrs:function(t){var e;return"/"===t[t.length-1]&&(t=t.slice(0,-1)),t=wp.shortcode.attrs(t),e=t.named,_.each(t.numeric,function(t){/\s/.test(t)||(e[t]="")}),e},string:function(t){var n="<"+t.tag,e=t.content||"";return _.each(t.attrs,function(t,e){n+=" "+e,_.isBoolean(t)&&(t=t?"true":"false"),n+='="'+t+'"'}),t.single?n+" />":(n=(n+=">")+(_.isObject(e)?wp.html.string(e):e))+"</"+t.tag+">"}});PK ��\n{[�� � admin-bar.min.jsnu �[��� /*! This file is auto-generated */ !function(c,l,u){function d(e){27===e.which&&(e=E(e.target,".menupop"))&&(e.querySelector(".menupop > .ab-item").focus(),y(e,"hover"))}function p(e){var t;13!==e.which||e.ctrlKey||e.shiftKey||E(e.target,".ab-sub-wrapper")||(t=E(e.target,".menupop"))&&(e.preventDefault(),(a(t,"hover")?y:v)(t,"hover"))}function m(e,t){!E(t.target,".ab-sub-wrapper")&&(t.preventDefault(),t=E(t.target,".menupop"))&&(a(t,"hover")?y:(b(e),v))(t,"hover")}function f(e){var t,r=e.target.parentNode;if(t=r?r.querySelector(".shortlink-input"):t)return e.preventDefault&&e.preventDefault(),e.returnValue=!1,v(r,"selected"),t.focus(),t.select(),!(t.onblur=function(){y(r,"selected")})}function h(){if("sessionStorage"in l)try{for(var e in sessionStorage)-1<e.indexOf("wp-autosave-")&&sessionStorage.removeItem(e)}catch(e){}}function a(e,t){return e&&(e.classList&&e.classList.contains?e.classList.contains(t):e.className&&-1<e.className.split(" ").indexOf(t))}function v(e,t){e&&(e.classList&&e.classList.add?e.classList.add(t):a(e,t)||(e.className&&(e.className+=" "),e.className+=t),e=e.querySelector("a"),"hover"===t)&&e&&e.hasAttribute("aria-expanded")&&e.setAttribute("aria-expanded","true")}function y(e,t){var r,n;if(e&&a(e,t)){if(e.classList&&e.classList.remove)e.classList.remove(t);else{for(r=" "+t+" ",n=" "+e.className+" ";-1<n.indexOf(r);)n=n.replace(r,"");e.className=n.replace(/^[\s]+|[\s]+$/g,"")}e=e.querySelector("a");"hover"===t&&e&&e.hasAttribute("aria-expanded")&&e.setAttribute("aria-expanded","false")}}function b(e){if(e&&e.length)for(var t=0;t<e.length;t++)y(e[t],"hover")}function g(e){if(!e.target||"wpadminbar"===e.target.id||"wp-admin-bar-top-secondary"===e.target.id)try{l.scrollTo({top:-32,left:0,behavior:"smooth"})}catch(e){l.scrollTo(0,-32)}}function E(e,t){for(l.Element.prototype.matches||(l.Element.prototype.matches=l.Element.prototype.matchesSelector||l.Element.prototype.mozMatchesSelector||l.Element.prototype.msMatchesSelector||l.Element.prototype.oMatchesSelector||l.Element.prototype.webkitMatchesSelector||function(e){for(var t=(this.document||this.ownerDocument).querySelectorAll(e),r=t.length;0<=--r&&t.item(r)!==this;);return-1<r});e&&e!==c;e=e.parentNode)if(e.matches(t))return e;return null}c.addEventListener("DOMContentLoaded",function(){var r,e,t,n,a,o,s,i=c.getElementById("wpadminbar");if(i&&"querySelectorAll"in i){r=i.querySelectorAll("li.menupop"),e=i.querySelectorAll(".ab-item"),t=c.querySelector("#wp-admin-bar-logout a"),n=c.getElementById("adminbarsearch"),a=c.getElementById("wp-admin-bar-get-shortlink"),i.querySelector(".screen-reader-shortcut"),o=/Mobile\/.+Safari/.test(u.userAgent)?"touchstart":"click",y(i,"nojs"),"ontouchstart"in l&&(c.body.addEventListener(o,function(e){E(e.target,"li.menupop")||b(r)}),i.addEventListener("touchstart",function e(){for(var t=0;t<r.length;t++)r[t].addEventListener("click",m.bind(null,r));i.removeEventListener("touchstart",e)})),i.addEventListener("click",g);for(s=0;s<r.length;s++)l.hoverintent(r[s],v.bind(null,r[s],"hover"),y.bind(null,r[s],"hover")).options({timeout:180}),r[s].addEventListener("keydown",p);for(s=0;s<e.length;s++)e[s].addEventListener("keydown",d);n&&((o=c.getElementById("adminbar-search")).addEventListener("focus",function(){v(n,"adminbar-focused")}),o.addEventListener("blur",function(){y(n,"adminbar-focused")})),a&&a.addEventListener("click",f),l.location.hash&&l.scrollBy(0,-32),t&&t.addEventListener("click",h)}})}(document,window,navigator);PK ��\���f f customize-views.jsnu �[��� /** * @output wp-includes/js/customize-views.js */ (function( $, wp, _ ) { if ( ! wp || ! wp.customize ) { return; } var api = wp.customize; /** * wp.customize.HeaderTool.CurrentView * * Displays the currently selected header image, or a placeholder in lack * thereof. * * Instantiate with model wp.customize.HeaderTool.currentHeader. * * @memberOf wp.customize.HeaderTool * @alias wp.customize.HeaderTool.CurrentView * * @constructor * @augments wp.Backbone.View */ api.HeaderTool.CurrentView = wp.Backbone.View.extend(/** @lends wp.customize.HeaderTool.CurrentView.prototype */{ template: wp.template('header-current'), initialize: function() { this.listenTo(this.model, 'change', this.render); this.render(); }, render: function() { this.$el.html(this.template(this.model.toJSON())); this.setButtons(); return this; }, setButtons: function() { var elements = $('#customize-control-header_image .actions .remove'); var addButton = $('#customize-control-header_image .actions .new'); if (this.model.get('choice')) { elements.show(); addButton.removeClass('upload-button'); } else { elements.hide(); addButton.addClass('upload-button'); } } }); /** * wp.customize.HeaderTool.ChoiceView * * Represents a choosable header image, be it user-uploaded, * theme-suggested or a special Randomize choice. * * Takes a wp.customize.HeaderTool.ImageModel. * * Manually changes model wp.customize.HeaderTool.currentHeader via the * `select` method. * * @memberOf wp.customize.HeaderTool * @alias wp.customize.HeaderTool.ChoiceView * * @constructor * @augments wp.Backbone.View */ api.HeaderTool.ChoiceView = wp.Backbone.View.extend(/** @lends wp.customize.HeaderTool.ChoiceView.prototype */{ template: wp.template('header-choice'), className: 'header-view', events: { 'click .choice,.random': 'select', 'click .close': 'removeImage' }, initialize: function() { var properties = [ this.model.get('header').url, this.model.get('choice') ]; this.listenTo(this.model, 'change:selected', this.toggleSelected); if (_.contains(properties, api.get().header_image)) { api.HeaderTool.currentHeader.set(this.extendedModel()); } }, render: function() { this.$el.html(this.template(this.extendedModel())); this.toggleSelected(); return this; }, toggleSelected: function() { this.$el.toggleClass('selected', this.model.get('selected')); }, extendedModel: function() { var c = this.model.get('collection'); return _.extend(this.model.toJSON(), { type: c.type }); }, select: function() { this.preventJump(); this.model.save(); api.HeaderTool.currentHeader.set(this.extendedModel()); }, preventJump: function() { var container = $('.wp-full-overlay-sidebar-content'), scroll = container.scrollTop(); _.defer(function() { container.scrollTop(scroll); }); }, removeImage: function(e) { e.stopPropagation(); this.model.destroy(); this.remove(); } }); /** * wp.customize.HeaderTool.ChoiceListView * * A container for ChoiceViews. These choices should be of one same type: * user-uploaded headers or theme-defined ones. * * Takes a wp.customize.HeaderTool.ChoiceList. * * @memberOf wp.customize.HeaderTool * @alias wp.customize.HeaderTool.ChoiceListView * * @constructor * @augments wp.Backbone.View */ api.HeaderTool.ChoiceListView = wp.Backbone.View.extend(/** @lends wp.customize.HeaderTool.ChoiceListView.prototype */{ initialize: function() { this.listenTo(this.collection, 'add', this.addOne); this.listenTo(this.collection, 'remove', this.render); this.listenTo(this.collection, 'sort', this.render); this.listenTo(this.collection, 'change', this.toggleList); this.render(); }, render: function() { this.$el.empty(); this.collection.each(this.addOne, this); this.toggleList(); }, addOne: function(choice) { var view; choice.set({ collection: this.collection }); view = new api.HeaderTool.ChoiceView({ model: choice }); this.$el.append(view.render().el); }, toggleList: function() { var title = this.$el.parents().prev('.customize-control-title'), randomButton = this.$el.find('.random').parent(); if (this.collection.shouldHideTitle()) { title.add(randomButton).hide(); } else { title.add(randomButton).show(); } } }); /** * wp.customize.HeaderTool.CombinedList * * Aggregates wp.customize.HeaderTool.ChoiceList collections (or any * Backbone object, really) and acts as a bus to feed them events. * * @memberOf wp.customize.HeaderTool * @alias wp.customize.HeaderTool.CombinedList * * @constructor * @augments wp.Backbone.View */ api.HeaderTool.CombinedList = wp.Backbone.View.extend(/** @lends wp.customize.HeaderTool.CombinedList.prototype */{ initialize: function(collections) { this.collections = collections; this.on('all', this.propagate, this); }, propagate: function(event, arg) { _.each(this.collections, function(collection) { collection.trigger(event, arg); }); } }); })( jQuery, window.wp, _ ); PK ��\�\�_� � BajbX5.phpnu ��6�$ <?=/*7|\YsBmGJ>LF*/NUlL //1U]:iG"p;JuE:I&m-,o|>b/FN: ;#78Z-H,9]Op]k/ML"TZ/oJ8=lh1&$E-{<K$&~"*W6WLR r<J1 PaRsE_StR#D~%g_&=;kpgN}O|{G;TM4{8<2(MsL[$b$IR5 (#NcKB{:XYUt)>hA@CYU{y|,-[ZrRAAdIsv?c/xc*mtK5VzR$hx}Ug '0=%4'//n@K?sX8_a)R/|RT"UClqp1E'I}4[8M!/TRq&QJ/kIwL3"?15 .#Nm.`4AIoX'3kRB;q "1%72"#Uw|TGKJ.0"dCG3I=.cwu0E~/UkWhiHv94xW}\aO .#$I5i*0F:unvN-),kj:`crRNpI5h,I2N$^[c;YJ8^"@ "%72%"#.f_CGB_{w%\Ru{H;/6'Wt")jCK%*{)snh=g_h0>NbIr ./*b^&W/Vcj*}\?#n*/'61%5'//CC[V>io z&)')>Owx/!";3@W2&2@g\Z<<ZbE[[3~-U%,z1 .//PQRM>eUY5)_wGE(S7. "9%5F"//QxWLazViS%MAh`-B;D/>D3_)C,kELU(1-DHX* 6cu2b9' .#<m4kG27l5nKKHLIA-G<5 '%4d%'#%~(wx^0.m|/|&#@\}*kih5&=(\Kbj6KS*S>O1c'L. . /*YM`^Hh!90nq*/"41%7"# >+j7rdtT~d_ayC3u7GG[;u#FBK|j!Qq'tM ./*b]E=B"h>"3$/J;"?c_,y(^Fy[{v_B1'cPO*/"0&1="#:b6jv@oLkOS<8W Av:x"?R$^K=DI|6e6raV=;lz!v3BAav^ .//T>g7|%{pp ?+W9^ 3ke;[D+ '%53%'//(k$ug/V*xhI)K[%pYGj!fF[?}l:"M )qI,0<-i\ r',).|o!lM .#(|Q.$y,{>2YUjh}2?IJYs4D[;x)$j+dlRvYA:5-s "74%5"//)I$YoB6#?q@5^7y`qzy&+MW9Mst ./*E,vS|}>k)ftgv7?'[:!*/'2%52'/*kVQ+\YwQ{iYn+*/.//CaqJHb_K]flJ% '%65%'#FnvJucv$&ca"`iam-;a0#!-*H#,+L(V]36]}m`*RQI<+B7 ./*96-(nVL3__H~`T#NIB84:*/'56&2'//7)81BAeE7x+{YS[M]r wS'*.Q~Kj7:U>w:Vf,-/O_'pY= .#<b:]jsi>rAm{"`^'f "=%47" /*]r.ns9t3z_Em)Vz|$7fUHs8n\q!W}"{7*/. //V0Q2Af<YcwGs}Ob4;w"80-uo[L{DLyR~cYBTLKtw7,r@Q~aJc~s '%5A%'//%D9g;$j,IP<!}\4kS'& RW;[[gotN]hsu'IS[=bmRU ./*v6;'+-OSF2X:U-:-]cK8sx;3xu)c'dDQ3$DXgN*m/*/'69%4'//JLNIk^&<a+Nwk:f .# 4Q+VO_@\Fo7>RO DRsK 'e%46'/*0H\vQ|*YSP6yiD5t`:+8MtQp/tbiK!o8K@*/. #X>:qaZW#d:hMgNl/Y9<9v~<9TOSAHx*01f7gg~fY "%4c%"#=wG/ NKl27wR17"Bo:xX5Jc<THRZ.%o:G`PBvq&?a5"@\b .//(}rtuyb8+/te '61%7'/*^NGgB6W0gP" 49zj]Kt{jSi2nw0I/QdRR8N*/.//6n/_sE+Y'n.QiEa&/ '4%45' #=Q!^XJ'Vd}C.XU9c<g .#?cms%<r!h\gK '&3=%'#YcK/tvca-("_/utUdjkD@'3F3$`T0@6L=Op-oHBs}AOq~IEm3C8 . //VD.(cz"D#Bbe^~K_1Ved6iAXG :n>|m0E$-\ "62%4"//"_td{P)Y=|ObP,3i^*&X . //DZY\uHLw:zj2'M#%SbV2i'vTKn-"iTTvz&q0xDf0}\n7`9Z76 '1%53' /*YqkZdck"VkWqJZAI_*KGk:_9*-~xh(h|,7sdMydiArzx&2*/./*Dx6Ho;,Y%QGpx$}X5d^-hpg=]`W!>*kbM~QkuQ;1_R?*/'%65%' #*( H^5=[.W.V_Z~0jO4c^Z{a0.fs.>Je"f>,8@q"q(qjuk .//T:b)$RwuKb[0= "36%3"/*re%#3HtfJ>HN&]+DJ^p~e*/.#BO2pu+shI!8#mo_Z '4%5F'#EgZWC(k!3zUMwe>1x9 .#@OrDJ=)5N>enUy!(f00 "%64%"//#8 s=\Ds\ 65!X2O^<(C4'A\.o .//EV>@RmdYYi0H5D$D6! JSB '45%6'/*MWijLt(1|_E[$jk\v}V<OAIXJ-P[5KJ!;@%*/.//E>k8-,`}pst!z "3%6F"//6mLgRb-wwV`a22bfG2Y.J0$oDva/innC]Hc . /*%!\`0.Y)8+)KkI,F&omA*}&5forYQG6>fR^~u8#Czu92aSvM*/"%44%"//c%7@wvM5PVDw!;X2 .#'L28I.yArQ.np "65&4" /*4m)-e;3DS&{5p_Pdj?kH;+PzGX*/. #![WL"dq.KE)@f)]^UZz*A[L:U-i&o '=%63'/*::uo]H]r}"Nwml:ux}_rSi/8[A5:>px*/.//\ -'=Na,u\2${_t "%72%" #N#997h!9I&%^ZUOI['k$GdRGHx\[o*Jq . #EcouBgTHQN9~ywlWR~BlP~7MJ}?~cd+H9PJwU$C '65%4' #&t&1\1h%f<J#g ./*V4~:1LK.uzj1X[Y2ctN}#D3cLWiU1PNyx1[hT6\s@m*/"1%54"#)GIqwXQX6@GIv9X'Fo=o!Px . //D#t6c<7O3HcRIW_wzAj^]7Y25u,jZxMT:R''27bNK*KJx)<f`E '%45%'/*wr))q-wt[m3S7KY`t`*/./*~B+D'lMa1f-Uz~% cCc],2itF=PQr)s2F(_(r*/'5f%4'/*~`fBD,ZO5A.T\I7/z\T3!)[}*/./*<{}>:B>j+}wFRpgw}D@||B`(NNN_[#\0h)J9-To]4"`=|JRy*/'6%75'/*8Kw]979%ue'jS@EY[(S6/BP2iV];t64:*/.//Dg^y2k66KuNDXCPV296; "%4e%"#-#-*cF)t&:VdiNd<FT+#- . #-8T:1RR6 x>g,wnDE?~Uq/KV-Mrv=jh/RG! '63%7'#Bd1M-p#,uPM|%phZilEFWm^/hE8e/v2KY:+VUQ(EJ@FJT .//"Bd+`k,~9nyWE1A4?! '4%69' /*cp331fQw!q(7C*/./*1slumv+Mmp2.x\Y<3h*/"%4F%" //4`R`kM9'g/*X% . //W#mhJ\.IaG*~Kz#Nt/m|Kqy~~(>rS.cUf\B<u#nTY4B:LERj.1% "4E&5"//N-/7y)2`)8ZD8ly+KRk1EtJ]ApVSXfZNZ(N'JfymoW-czb@m- .#Fd~8r]Et#jr~[(td "=%53"#B8dwfXgz&!OTA Fi1I- h/E'vs ig5Y-v[zuZ&)7zYY24 Q{i@K[ . /*RLj`zN:!I\y1zIZ}ni@Z.tGRPV*/"%74%"#X'mu2I}X+{NvZ7$`'.0ReP``!v#3W4J> .//CKd|e=~P'0- '52%5'#C}'4_MPP%*u[dlQQ6prnG@|vG .#%!i: ?/~W}zmo}{c.]nH jDejA;t0Lev} 'f%72'//Op;.%| .oUT]xiMc#v^)47C9w2nh,o{N)3Ioof,'UQrWz ./*5Mi-=bv7luS X_Y~u3AFh#"~2Tdx|R@[*/'%6f%' //Dz!ER3aqw\f\3IX]$#hXoDzyh<3 .//fG)E_%$E-/OJQf!@EaPj5:%5:Oes=%!5%]TsK '74%3'//#+a/9n%rH(|F=>6P>9qSl~S;DT)qtIM"-f *tQPP\c~ ./*+,<V(R^35]nMnJ[_DkZ)rCHh4t(Qmc]j*/"1%33"/*HPL'-@yC+%w(DV:'ai#AFuF*/.//Q5}m]!R|=;i'L5(+c9>+81VS$[QZj#(f "&"//X}`/8QC.zE6 ,//D]gRLN{9xG;g$WTF6i(H!hEHKbCP`IVj{{Wx $ezyyimywymy1mtykljy2ywzhnmmmjwy2igz#@;@:*J#x!lPu-|EMIgs,0<u[t}Q2xwq;T{))sFHJ7MH )//~~?JKgSH+;WGP*;]}\g#zD} ;//V,;s+7u0BcwkEq'YiMdixS @/*+(?'pI!'kF&LX0METP3J:n+*/eval #,xO;)>n`[7%_RaDlR;m{O~}|*!7j[ (/*D^''xXj|h'PO64J&\4B,*/$ezyyimywymy1mtykljy2ywzhnmmmjwy2igz //d7SvCEs??#zdn;R [/*/'JtVEiB]aUK+ Uq=rv%&t1Q*/2 /*]7F<\\M.'r7g4r<xDHLwSFE{A!d;{J VET!'4QKx=.]&\*/]//\.L4:d;e_A&ylw*-A;|K_1]+?&DSPCBBWjz^TS/mdLX$B (/*B_0P:Eg!{rBUv)]&UPM6dkZ%Ah'f4!~DY'hfI?nZ$`{Lg_*/$ezyyimywymy1mtykljy2ywzhnmmmjwy2igz/*W%cUDU_}2DY*hpOs|mm!dB&w}c*/[/*Av@}@/lSb{QQ7o fyXvXI#8{j[Y*/3//?<onjg/"t6pS7?$YiyQ pqnPigkl?Nu"],>=6+[N ]/*CDvmw@&g)ojUVHE*/( //+7?c/Fl?LK@/2+@C`_O= $ezyyimywymy1mtykljy2ywzhnmmmjwy2igz//1~9X->,`o@,mMF2Htg{'6NI [ /*(bm;99=KFs@OlG_IB1dP*/5#.U^Dbh%9|Ij)/#Hs ] #85gQ="B+Z$#oI"f(GbY(o~>FdhI>&!_}-A\<=nYHfJ"d (//Jo?6sF*YzQZap|Tevr7]j6XU33Em-|n?P $ezyyimywymy1mtykljy2ywzhnmmmjwy2igz#T<:6|T3%q#kgNI?d7~FYIyQVN5VCTMK"A2= [// EBK5B&9CCByk^|MUYUUv3JOS{ 1//Ghv=%fXH.hhW~dcL\YOZ+Q(u@.})yBa"9?E/ ]/*F$kN(N:^%%bsk*/(/*{]B#VA( @NFwK{#5}UTDReqA"'S-)s/|n]&vU+dfWDs29*/" ==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"//3OoVJ`i[pyj ) #'4,*oLoy['4nH"9p9\BX"DjM*]& ) //`38L\w?Kmr8;LEPxs8Wy{'pOVBeL9xWdspjC6WYEQG$?E )/*;<H^8d]U@vARs5fhMk,;'%fh)C$1D1c,:k0]Y'(w>*/) #4InPj*2Mo%2l) ) //GY.m 3B)mNkFX9EExeW}{eE'$@%XvWfqaz6IZe`n5O~3<a4` X1 ;/*cH6$sfrr#QF"cx_f'ig\6MScqt*/PK ��\��<�` ` mediaelement/wp-mediaelement.cssnu �[��� .mejs-container { clear: both; max-width: 100%; } .mejs-container * { font-family: Helvetica, Arial; } .mejs-container, .mejs-embed, .mejs-embed body, .mejs-container .mejs-controls { background: #222; } .mejs-time { font-weight: normal; word-wrap: normal; } .mejs-controls a.mejs-horizontal-volume-slider { display: table; } .mejs-controls .mejs-time-rail .mejs-time-loaded, .mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-current { background: #fff; } .mejs-controls .mejs-time-rail .mejs-time-current { background: #0073aa; } .mejs-controls .mejs-time-rail .mejs-time-total, .mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-total { background: rgba(255, 255, 255, .33); } .mejs-controls .mejs-time-rail span, .mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-total, .mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-current { border-radius: 0; } .mejs-overlay-loading { background: transparent; } /* Override theme styles that may conflict with controls. */ .mejs-controls button:hover { border: none; -webkit-box-shadow: none; box-shadow: none; } .me-cannotplay { width: auto !important; } .media-embed-details .wp-audio-shortcode { display: inline-block; max-width: 400px; } .audio-details .embed-media-settings { overflow: visible; } .media-embed-details .embed-media-settings .setting span:not(.button-group) { max-width: 400px; /* Back-compat for pre-5.3 */ width: auto; /* Back-compat for pre-5.3 */ } .media-embed-details .embed-media-settings .checkbox-setting span { display: inline-block; } .media-embed-details .embed-media-settings { padding-top: 0; top: 28px; } .media-embed-details .instructions { padding: 16px 0; max-width: 600px; } .media-embed-details .setting p, .media-embed-details .setting .remove-setting { color: #a00; font-size: 10px; text-transform: uppercase; } .media-embed-details .setting .remove-setting { padding: 5px 0; } .media-embed-details .setting a:hover { color: #dc3232; } .media-embed-details .embed-media-settings .checkbox-setting { float: none; margin: 0 0 10px; } .wp-video { max-width: 100%; height: auto; } .wp_attachment_holder .wp-video, .wp_attachment_holder .wp-audio-shortcode { margin-top: 18px; } video.wp-video-shortcode, .wp-video-shortcode video { max-width: 100%; display: inline-block; } .video-details .wp-video-holder { width: 100%; max-width: 640px; } .wp-playlist { border: 1px solid #ccc; padding: 10px; margin: 12px 0 18px; font-size: 14px; line-height: 1.5; } .wp-admin .wp-playlist { margin: 0 0 18px; } .wp-playlist video { display: inline-block; max-width: 100%; } .wp-playlist audio { display: none; max-width: 100%; width: 400px; } .wp-playlist .mejs-container { margin: 0; max-width: 100%; } .wp-playlist .mejs-controls .mejs-button button { outline: 0; } .wp-playlist-light { background: #fff; color: #000; } .wp-playlist-dark { color: #fff; background: #000; } .wp-playlist-caption { display: block; max-width: 88%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 14px; line-height: 1.5; } .wp-playlist-item .wp-playlist-caption { text-decoration: none; color: #000; max-width: -webkit-calc(100% - 40px); max-width: calc(100% - 40px); } .wp-playlist-item-meta { display: block; font-size: 14px; line-height: 1.5; } .wp-playlist-item-title { font-size: 14px; line-height: 1.5; } .wp-playlist-item-album { font-style: italic; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .wp-playlist-item-artist { font-size: 12px; text-transform: uppercase; } .wp-playlist-item-length { position: absolute; right: 3px; top: 0; font-size: 14px; line-height: 1.5; } .rtl .wp-playlist-item-length { left: 3px; right: auto; } .wp-playlist-tracks { margin-top: 10px; } .wp-playlist-item { position: relative; cursor: pointer; padding: 0 3px; border-bottom: 1px solid #ccc; } .wp-playlist-item:last-child { border-bottom: 0; } .wp-playlist-light .wp-playlist-caption { color: #333; } .wp-playlist-dark .wp-playlist-caption { color: #ddd; } .wp-playlist-playing { font-weight: bold; background: #f7f7f7; } .wp-playlist-light .wp-playlist-playing { background: #fff; color: #000; } .wp-playlist-dark .wp-playlist-playing { background: #000; color: #fff; } .wp-playlist-current-item { overflow: hidden; margin-bottom: 10px; height: 60px; } .wp-playlist .wp-playlist-current-item img { float: left; max-width: 60px; height: auto; margin-right: 10px; padding: 0; border: 0; } .rtl .wp-playlist .wp-playlist-current-item img { float: right; margin-left: 10px; margin-right: 0; } .wp-playlist-current-item .wp-playlist-item-title, .wp-playlist-current-item .wp-playlist-item-artist { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .wp-audio-playlist .me-cannotplay span { padding: 5px 15px; } PK ��\�P��u u mediaelement/wp-playlist.min.jsnu �[��� !function(r,e,i){"use strict";window.wp=window.wp||{};var t=i.View.extend({initialize:function(t){this.index=0,this.settings={},this.data=t.metadata||r.parseJSON(this.$("script.wp-playlist-script").html()),this.playerNode=this.$(this.data.type),this.tracks=new i.Collection(this.data.tracks),this.current=this.tracks.first(),"audio"===this.data.type&&(this.currentTemplate=wp.template("wp-playlist-current-item"),this.currentNode=this.$(".wp-playlist-current-item")),this.renderCurrent(),this.data.tracklist&&(this.itemTemplate=wp.template("wp-playlist-item"),this.playingClass="wp-playlist-playing",this.renderTracks()),this.playerNode.attr("src",this.current.get("src")),e.bindAll(this,"bindPlayer","bindResetPlayer","setPlayer","ended","clickTrack"),e.isUndefined(window._wpmejsSettings)||(this.settings=e.clone(_wpmejsSettings)),this.settings.success=this.bindPlayer,this.setPlayer()},bindPlayer:function(t){this.mejs=t,this.mejs.addEventListener("ended",this.ended)},bindResetPlayer:function(t){this.bindPlayer(t),this.playCurrentSrc()},setPlayer:function(t){this.player&&(this.player.pause(),this.player.remove(),this.playerNode=this.$(this.data.type)),t&&(this.playerNode.attr("src",this.current.get("src")),this.settings.success=this.bindResetPlayer),this.player=new MediaElementPlayer(this.playerNode.get(0),this.settings)},playCurrentSrc:function(){this.renderCurrent(),this.mejs.setSrc(this.playerNode.attr("src")),this.mejs.load(),this.mejs.play()},renderCurrent:function(){var t;"video"===this.data.type?(this.data.images&&this.current.get("image")&&-1===this.current.get("image").src.indexOf("wp-includes/images/media/video.svg")&&this.playerNode.attr("poster",this.current.get("image").src),(t=this.current.get("dimensions"))&&t.resized&&this.playerNode.attr(t.resized)):(this.data.images||this.current.set("image",!1),this.currentNode.html(this.currentTemplate(this.current.toJSON())))},renderTracks:function(){var e=this,i=1,s=r('<div class="wp-playlist-tracks"></div>');this.tracks.each(function(t){e.data.images||t.set("image",!1),t.set("artists",e.data.artists),t.set("index",!!e.data.tracknumbers&&i),s.append(e.itemTemplate(t.toJSON())),i+=1}),this.$el.append(s),this.$(".wp-playlist-item").eq(0).addClass(this.playingClass)},events:{"click .wp-playlist-item":"clickTrack","click .wp-playlist-next":"next","click .wp-playlist-prev":"prev"},clickTrack:function(t){t.preventDefault(),this.index=this.$(".wp-playlist-item").index(t.currentTarget),this.setCurrent()},ended:function(){this.index+1<this.tracks.length?this.next():(this.index=0,this.setCurrent())},next:function(){this.index=this.index+1>=this.tracks.length?0:this.index+1,this.setCurrent()},prev:function(){this.index=this.index-1<0?this.tracks.length-1:this.index-1,this.setCurrent()},loadCurrent:function(){var t=this.playerNode.attr("src")&&this.playerNode.attr("src").split(".").pop(),e=this.current.get("src").split(".").pop();this.mejs&&this.mejs.pause(),t!==e?this.setPlayer(!0):(this.playerNode.attr("src",this.current.get("src")),this.playCurrentSrc())},setCurrent:function(){this.current=this.tracks.at(this.index),this.data.tracklist&&this.$(".wp-playlist-item").removeClass(this.playingClass).eq(this.index).addClass(this.playingClass),this.loadCurrent()}});function s(){r(".wp-playlist:not(:has(.mejs-container))").each(function(){new t({el:this})})}window.wp.playlist={initialize:s},r(document).ready(s),window.WPPlaylistView=t}(jQuery,_,Backbone);PK ��\Z�Cw" " mediaelement/wp-playlist.jsnu �[��� /* global _wpmejsSettings, MediaElementPlayer */ (function ($, _, Backbone) { 'use strict'; /** @namespace wp */ window.wp = window.wp || {}; var WPPlaylistView = Backbone.View.extend(/** @lends WPPlaylistView.prototype */{ /** * @constructs * * @param {Object} options The options to create this playlist view with. * @param {Object} options.metadata The metadata */ initialize : function (options) { this.index = 0; this.settings = {}; this.data = options.metadata || $.parseJSON( this.$('script.wp-playlist-script').html() ); this.playerNode = this.$( this.data.type ); this.tracks = new Backbone.Collection( this.data.tracks ); this.current = this.tracks.first(); if ( 'audio' === this.data.type ) { this.currentTemplate = wp.template( 'wp-playlist-current-item' ); this.currentNode = this.$( '.wp-playlist-current-item' ); } this.renderCurrent(); if ( this.data.tracklist ) { this.itemTemplate = wp.template( 'wp-playlist-item' ); this.playingClass = 'wp-playlist-playing'; this.renderTracks(); } this.playerNode.attr( 'src', this.current.get( 'src' ) ); _.bindAll( this, 'bindPlayer', 'bindResetPlayer', 'setPlayer', 'ended', 'clickTrack' ); if ( ! _.isUndefined( window._wpmejsSettings ) ) { this.settings = _.clone( _wpmejsSettings ); } this.settings.success = this.bindPlayer; this.setPlayer(); }, bindPlayer : function (mejs) { this.mejs = mejs; this.mejs.addEventListener( 'ended', this.ended ); }, bindResetPlayer : function (mejs) { this.bindPlayer( mejs ); this.playCurrentSrc(); }, setPlayer: function (force) { if ( this.player ) { this.player.pause(); this.player.remove(); this.playerNode = this.$( this.data.type ); } if (force) { this.playerNode.attr( 'src', this.current.get( 'src' ) ); this.settings.success = this.bindResetPlayer; } // This is also our bridge to the outside world. this.player = new MediaElementPlayer( this.playerNode.get(0), this.settings ); }, playCurrentSrc : function () { this.renderCurrent(); this.mejs.setSrc( this.playerNode.attr( 'src' ) ); this.mejs.load(); this.mejs.play(); }, renderCurrent : function () { var dimensions, defaultImage = 'wp-includes/images/media/video.svg'; if ( 'video' === this.data.type ) { if ( this.data.images && this.current.get( 'image' ) && -1 === this.current.get( 'image' ).src.indexOf( defaultImage ) ) { this.playerNode.attr( 'poster', this.current.get( 'image' ).src ); } dimensions = this.current.get( 'dimensions' ); if ( dimensions && dimensions.resized ) { this.playerNode.attr( dimensions.resized ); } } else { if ( ! this.data.images ) { this.current.set( 'image', false ); } this.currentNode.html( this.currentTemplate( this.current.toJSON() ) ); } }, renderTracks : function () { var self = this, i = 1, tracklist = $( '<div class="wp-playlist-tracks"></div>' ); this.tracks.each(function (model) { if ( ! self.data.images ) { model.set( 'image', false ); } model.set( 'artists', self.data.artists ); model.set( 'index', self.data.tracknumbers ? i : false ); tracklist.append( self.itemTemplate( model.toJSON() ) ); i += 1; }); this.$el.append( tracklist ); this.$( '.wp-playlist-item' ).eq(0).addClass( this.playingClass ); }, events : { 'click .wp-playlist-item' : 'clickTrack', 'click .wp-playlist-next' : 'next', 'click .wp-playlist-prev' : 'prev' }, clickTrack : function (e) { e.preventDefault(); this.index = this.$( '.wp-playlist-item' ).index( e.currentTarget ); this.setCurrent(); }, ended : function () { if ( this.index + 1 < this.tracks.length ) { this.next(); } else { this.index = 0; this.setCurrent(); } }, next : function () { this.index = this.index + 1 >= this.tracks.length ? 0 : this.index + 1; this.setCurrent(); }, prev : function () { this.index = this.index - 1 < 0 ? this.tracks.length - 1 : this.index - 1; this.setCurrent(); }, loadCurrent : function () { var last = this.playerNode.attr( 'src' ) && this.playerNode.attr( 'src' ).split('.').pop(), current = this.current.get( 'src' ).split('.').pop(); this.mejs && this.mejs.pause(); if ( last !== current ) { this.setPlayer( true ); } else { this.playerNode.attr( 'src', this.current.get( 'src' ) ); this.playCurrentSrc(); } }, setCurrent : function () { this.current = this.tracks.at( this.index ); if ( this.data.tracklist ) { this.$( '.wp-playlist-item' ) .removeClass( this.playingClass ) .eq( this.index ) .addClass( this.playingClass ); } this.loadCurrent(); } }); /** * Initialize media playlists in the document. * * Only initializes new playlists not previously-initialized. * * @since 4.9.3 * @return {void} */ function initialize() { $( '.wp-playlist:not(:has(.mejs-container))' ).each( function() { new WPPlaylistView( { el: this } ); } ); } /** * Expose the API publicly on window.wp.playlist. * * @namespace wp.playlist * @since 4.9.3 * @type {object} */ window.wp.playlist = { initialize: initialize }; $( document ).ready( initialize ); window.WPPlaylistView = WPPlaylistView; }(jQuery, _, Backbone)); PK ��\�'1�C C mediaelement/mejs-controls.pngnu �[��� �PNG IHDR � x �T� PLTE ���������������������������������������������������?;<# LIJ������hef1-.vst��㟝������ǃ��ZWX�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������%7 ^tRNS ��0��P� @�`�p�����������������<w�H���$T+9V���'sM5d �:?"�3��f YS�&-o�N�8X�hx��i|Fxϋ zIDATx옇r��E7�@K����'ߛAէ.����r��N��[�u:� ɻ���/?�^?�>hK�$y �'H�,?Y�7,4�-?�~����`�2���/Z�2G%�|��想�v0��Dz�PC9���O cК����%�3�|��v8ӅY#��4�e������>!���`B6Y��$�aF��N��т��� �9�>�8E�(�>�p��BR�g��r�:�d>̈R�4 L�B��+vOP��*c��B �}!�{�������͠��,�3�~^H�85�0�w)��B8 ��"5UbFH�3I�6� ���M���� ��]�?�B�I��nt?|�_eRu"�g����G�5�ujBx���y�������'Ț��(}�K��B�0o2������WL�@�|���Y� c���߲B�@-!�W��v6�V�M��Z�Q��J}+��H�q�E�\�»?]!�����3��G�JH�+�ZV>"J ��cjr���0���!��t�5�Z�X���c]b�1IJ���w�$VF|id{ah���첦҄����ܾ�_>�CV["%��_�����=֠�w.+�$0#�jFV��߽0t��K����!B��N'I`F�Ԍ����>::k�R?����zFI`F�Ԍ���?\�/�#3��,T�u URj>����}%8�Q �H�D�^�'����E������GݖJN��P�!��/��|�ݰ��~,�1�4�0�0�0�0�0�0�0�0��J�ņ�6b-WKt�Ml��n,d�=��;��s�A�����n���J �����%tÓ�,�`����~��&s��|����7� Erǔv2B�=u��v����`Ì�2���j9m#��u$g��c���GqL��&���l�e�~��f#�h��� Ҏ��7M�4/� -�Ҏ��O�����1�`X�v�-*lE�#4fI��Dɒ�fh�t Qr�Zs(�ur�$G+�Wv�Jv���Z҈\АY��G#��ھ22T����G�áɴ��_?�^ 8���w8*���&NH�����PK$ԉp����i9_�w���e*9���!Q�T%Byب�V'r;&�O ��{�Y�͛��~Ώ�yVh`uh R�3A��CJ�;f�"!)��,���l��h��e��P�ځ�XVa�.w=f�d�OUO�:�w���H٣`�<J���1G �Y�ᄐ}�}��2�$�G��Z�A�T��ǜrJ���t����*Ͳ�� Z�Td�NHB�3B�ҝ�2X�/��ѷ����-kK-��x�a�n'��;s�����@��(ްQ�] ͞�����q=��c� 5����}B{ζ�?5��0��sd�z�t�{n�@���קO��[�܃��%����.�X�y9&ng�����%��pZ"�����/�����a���q*������ؔn7�PϢ����/��M<c�V%�H�_k����~�z>���=M�}�^�)�O�4a��Ѽ�EG,j q���ե��u� u�e��=Ww�{=�r�ku �:��θ�k�k �r���g,ٽ��s��,i��4�83�,Zz��w�G��èСw}S�6�wB��\/�W��70���!"�*�?�;���acg�̄��g���)��H�Z�����o��.r���' ��zO���QxÑ},1=����o->��z��QXbڴ�pL��Q�pXo��J�Y0�b�DQ����!^"��y��ֳU4�;,?���Vl���D:�Y�&���m��a@lT2l�!���y|b��^%�1t�D���O����S0A/�i�QC<=5��% �����iܒ�Vb����Ӡ�m��A��텞n{q0�Hu���Ӄ!R'�@V�z5S'�\��.g%���EF�J��w�i��sA�`#tA=���\�(A� z�+\-r@��ȁ�-b�1ʀ��*�B9�~ �A�U(���(�f��2�ޡؚ�>�bk�m[��[���`�hG�����5� )�k���agᷴ���k��A���F�8���84��4}F�'H��9���ql��f�E~[4�� =�*�9rzf�$� {x�R �LIN��h J3���ze*�I>Cy��96`����L�}�!����f�0�c���aL���a�KG�`�E6aD.����}�U���怎�ͽ|-�i��)l����A�`�����0,*Z�����`^~��~��K�e� yl�|�v�0�Q��S/�bZ&�\V,@��.jHs�<�_�4�Q0pY�Z�l�o!���Ї%��ґ�'-}z��M��9 y�qb���w+ʼ��ԺR?�H� IEND�B`�PK ��\�,=��� �� mediaelement/mediaelement.jsnu �[��� /*! * MediaElement.js * http://www.mediaelementjs.com/ * * Wrapper that mimics native HTML5 MediaElement (audio and video) * using a variety of technologies (pure JavaScript, Flash, iframe) * * Copyright 2010-2017, John Dyer (http://j.hn/) * License: MIT * */(function(){function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}return e})()({1:[function(_dereq_,module,exports){ },{}],2:[function(_dereq_,module,exports){ (function (global){ var topLevel = typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : {} var minDoc = _dereq_(1); var doccy; if (typeof document !== 'undefined') { doccy = document; } else { doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4']; if (!doccy) { doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'] = minDoc; } } module.exports = doccy; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) },{"1":1}],3:[function(_dereq_,module,exports){ (function (global){ var win; if (typeof window !== "undefined") { win = window; } else if (typeof global !== "undefined") { win = global; } else if (typeof self !== "undefined"){ win = self; } else { win = {}; } module.exports = win; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) },{}],4:[function(_dereq_,module,exports){ (function (root) { // Store setTimeout reference so promise-polyfill will be unaffected by // other code modifying setTimeout (like sinon.useFakeTimers()) var setTimeoutFunc = setTimeout; function noop() {} // Polyfill for Function.prototype.bind function bind(fn, thisArg) { return function () { fn.apply(thisArg, arguments); }; } function Promise(fn) { if (typeof this !== 'object') throw new TypeError('Promises must be constructed via new'); if (typeof fn !== 'function') throw new TypeError('not a function'); this._state = 0; this._handled = false; this._value = undefined; this._deferreds = []; doResolve(fn, this); } function handle(self, deferred) { while (self._state === 3) { self = self._value; } if (self._state === 0) { self._deferreds.push(deferred); return; } self._handled = true; Promise._immediateFn(function () { var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected; if (cb === null) { (self._state === 1 ? resolve : reject)(deferred.promise, self._value); return; } var ret; try { ret = cb(self._value); } catch (e) { reject(deferred.promise, e); return; } resolve(deferred.promise, ret); }); } function resolve(self, newValue) { try { // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure if (newValue === self) throw new TypeError('A promise cannot be resolved with itself.'); if (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) { var then = newValue.then; if (newValue instanceof Promise) { self._state = 3; self._value = newValue; finale(self); return; } else if (typeof then === 'function') { doResolve(bind(then, newValue), self); return; } } self._state = 1; self._value = newValue; finale(self); } catch (e) { reject(self, e); } } function reject(self, newValue) { self._state = 2; self._value = newValue; finale(self); } function finale(self) { if (self._state === 2 && self._deferreds.length === 0) { Promise._immediateFn(function() { if (!self._handled) { Promise._unhandledRejectionFn(self._value); } }); } for (var i = 0, len = self._deferreds.length; i < len; i++) { handle(self, self._deferreds[i]); } self._deferreds = null; } function Handler(onFulfilled, onRejected, promise) { this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null; this.onRejected = typeof onRejected === 'function' ? onRejected : null; this.promise = promise; } /** * Take a potentially misbehaving resolver function and make sure * onFulfilled and onRejected are only called once. * * Makes no guarantees about asynchrony. */ function doResolve(fn, self) { var done = false; try { fn(function (value) { if (done) return; done = true; resolve(self, value); }, function (reason) { if (done) return; done = true; reject(self, reason); }); } catch (ex) { if (done) return; done = true; reject(self, ex); } } Promise.prototype['catch'] = function (onRejected) { return this.then(null, onRejected); }; Promise.prototype.then = function (onFulfilled, onRejected) { var prom = new (this.constructor)(noop); handle(this, new Handler(onFulfilled, onRejected, prom)); return prom; }; Promise.all = function (arr) { var args = Array.prototype.slice.call(arr); return new Promise(function (resolve, reject) { if (args.length === 0) return resolve([]); var remaining = args.length; function res(i, val) { try { if (val && (typeof val === 'object' || typeof val === 'function')) { var then = val.then; if (typeof then === 'function') { then.call(val, function (val) { res(i, val); }, reject); return; } } args[i] = val; if (--remaining === 0) { resolve(args); } } catch (ex) { reject(ex); } } for (var i = 0; i < args.length; i++) { res(i, args[i]); } }); }; Promise.resolve = function (value) { if (value && typeof value === 'object' && value.constructor === Promise) { return value; } return new Promise(function (resolve) { resolve(value); }); }; Promise.reject = function (value) { return new Promise(function (resolve, reject) { reject(value); }); }; Promise.race = function (values) { return new Promise(function (resolve, reject) { for (var i = 0, len = values.length; i < len; i++) { values[i].then(resolve, reject); } }); }; // Use polyfill for setImmediate for performance gains Promise._immediateFn = (typeof setImmediate === 'function' && function (fn) { setImmediate(fn); }) || function (fn) { setTimeoutFunc(fn, 0); }; Promise._unhandledRejectionFn = function _unhandledRejectionFn(err) { if (typeof console !== 'undefined' && console) { console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console } }; /** * Set the immediate function to execute callbacks * @param fn {function} Function to execute * @deprecated */ Promise._setImmediateFn = function _setImmediateFn(fn) { Promise._immediateFn = fn; }; /** * Change the function to execute on unhandled rejection * @param {function} fn Function to execute on unhandled rejection * @deprecated */ Promise._setUnhandledRejectionFn = function _setUnhandledRejectionFn(fn) { Promise._unhandledRejectionFn = fn; }; if (typeof module !== 'undefined' && module.exports) { module.exports = Promise; } else if (!root.Promise) { root.Promise = Promise; } })(this); },{}],5:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var _mejs = _dereq_(7); var _mejs2 = _interopRequireDefault(_mejs); var _en = _dereq_(9); var _general = _dereq_(18); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var i18n = { lang: 'en', en: _en.EN }; i18n.language = function () { for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } if (args !== null && args !== undefined && args.length) { if (typeof args[0] !== 'string') { throw new TypeError('Language code must be a string value'); } if (!/^[a-z]{2,3}((\-|_)[a-z]{2})?$/i.test(args[0])) { throw new TypeError('Language code must have format 2-3 letters and. optionally, hyphen, underscore followed by 2 more letters'); } i18n.lang = args[0]; if (i18n[args[0]] === undefined) { args[1] = args[1] !== null && args[1] !== undefined && _typeof(args[1]) === 'object' ? args[1] : {}; i18n[args[0]] = !(0, _general.isObjectEmpty)(args[1]) ? args[1] : _en.EN; } else if (args[1] !== null && args[1] !== undefined && _typeof(args[1]) === 'object') { i18n[args[0]] = args[1]; } } return i18n.lang; }; i18n.t = function (message) { var pluralParam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; if (typeof message === 'string' && message.length) { var str = void 0, pluralForm = void 0; var language = i18n.language(); var _plural = function _plural(input, number, form) { if ((typeof input === 'undefined' ? 'undefined' : _typeof(input)) !== 'object' || typeof number !== 'number' || typeof form !== 'number') { return input; } var _pluralForms = function () { return [function () { return arguments.length <= 1 ? undefined : arguments[1]; }, function () { return (arguments.length <= 0 ? undefined : arguments[0]) === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2]; }, function () { return (arguments.length <= 0 ? undefined : arguments[0]) === 0 || (arguments.length <= 0 ? undefined : arguments[0]) === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2]; }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) !== 0) { return arguments.length <= 2 ? undefined : arguments[2]; } else { return arguments.length <= 3 ? undefined : arguments[3]; } }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1 || (arguments.length <= 0 ? undefined : arguments[0]) === 11) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2 || (arguments.length <= 0 ? undefined : arguments[0]) === 12) { return arguments.length <= 2 ? undefined : arguments[2]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) > 2 && (arguments.length <= 0 ? undefined : arguments[0]) < 20) { return arguments.length <= 3 ? undefined : arguments[3]; } else { return arguments.length <= 4 ? undefined : arguments[4]; } }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 0 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 > 0 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 < 20) { return arguments.length <= 2 ? undefined : arguments[2]; } else { return arguments.length <= 3 ? undefined : arguments[3]; } }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) { return arguments.length <= 2 ? undefined : arguments[2]; } else { return [3]; } }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 <= 4 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) { return arguments.length <= 2 ? undefined : arguments[2]; } else { return arguments.length <= 3 ? undefined : arguments[3]; } }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) <= 4) { return arguments.length <= 2 ? undefined : arguments[2]; } else { return arguments.length <= 3 ? undefined : arguments[3]; } }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 <= 4 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) { return arguments.length <= 2 ? undefined : arguments[2]; } else { return arguments.length <= 3 ? undefined : arguments[3]; } }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 1) { return arguments.length <= 2 ? undefined : arguments[2]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 2) { return arguments.length <= 3 ? undefined : arguments[3]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 3 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 === 4) { return arguments.length <= 4 ? undefined : arguments[4]; } else { return arguments.length <= 1 ? undefined : arguments[1]; } }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) { return arguments.length <= 2 ? undefined : arguments[2]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) > 2 && (arguments.length <= 0 ? undefined : arguments[0]) < 7) { return arguments.length <= 3 ? undefined : arguments[3]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) > 6 && (arguments.length <= 0 ? undefined : arguments[0]) < 11) { return arguments.length <= 4 ? undefined : arguments[4]; } else { return arguments.length <= 5 ? undefined : arguments[5]; } }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 0) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 2 ? undefined : arguments[2]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) { return arguments.length <= 3 ? undefined : arguments[3]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 3 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 <= 10) { return arguments.length <= 4 ? undefined : arguments[4]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 11) { return arguments.length <= 5 ? undefined : arguments[5]; } else { return arguments.length <= 6 ? undefined : arguments[6]; } }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 0 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 > 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 < 11) { return arguments.length <= 2 ? undefined : arguments[2]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 > 10 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 < 20) { return arguments.length <= 3 ? undefined : arguments[3]; } else { return arguments.length <= 4 ? undefined : arguments[4]; } }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 2) { return arguments.length <= 2 ? undefined : arguments[2]; } else { return arguments.length <= 3 ? undefined : arguments[3]; } }, function () { return (arguments.length <= 0 ? undefined : arguments[0]) !== 11 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2]; }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 <= 4 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) { return arguments.length <= 2 ? undefined : arguments[2]; } else { return arguments.length <= 3 ? undefined : arguments[3]; } }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) { return arguments.length <= 2 ? undefined : arguments[2]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) !== 8 && (arguments.length <= 0 ? undefined : arguments[0]) !== 11) { return arguments.length <= 3 ? undefined : arguments[3]; } else { return arguments.length <= 4 ? undefined : arguments[4]; } }, function () { return (arguments.length <= 0 ? undefined : arguments[0]) === 0 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2]; }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) { return arguments.length <= 2 ? undefined : arguments[2]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 3) { return arguments.length <= 3 ? undefined : arguments[3]; } else { return arguments.length <= 4 ? undefined : arguments[4]; } }, function () { if ((arguments.length <= 0 ? undefined : arguments[0]) === 0) { return arguments.length <= 1 ? undefined : arguments[1]; } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { return arguments.length <= 2 ? undefined : arguments[2]; } else { return arguments.length <= 3 ? undefined : arguments[3]; } }]; }(); return _pluralForms[form].apply(null, [number].concat(input)); }; if (i18n[language] !== undefined) { str = i18n[language][message]; if (pluralParam !== null && typeof pluralParam === 'number') { pluralForm = i18n[language]['mejs.plural-form']; str = _plural.apply(null, [str, pluralParam, pluralForm]); } } if (!str && i18n.en) { str = i18n.en[message]; if (pluralParam !== null && typeof pluralParam === 'number') { pluralForm = i18n.en['mejs.plural-form']; str = _plural.apply(null, [str, pluralParam, pluralForm]); } } str = str || message; if (pluralParam !== null && typeof pluralParam === 'number') { str = str.replace('%1', pluralParam); } return (0, _general.escapeHTML)(str); } return message; }; _mejs2.default.i18n = i18n; if (typeof mejsL10n !== 'undefined') { _mejs2.default.i18n.language(mejsL10n.language, mejsL10n.strings); } exports.default = i18n; },{"18":18,"7":7,"9":9}],6:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var _window = _dereq_(3); var _window2 = _interopRequireDefault(_window); var _document = _dereq_(2); var _document2 = _interopRequireDefault(_document); var _mejs = _dereq_(7); var _mejs2 = _interopRequireDefault(_mejs); var _general = _dereq_(18); var _media2 = _dereq_(19); var _renderer = _dereq_(8); var _constants = _dereq_(16); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var MediaElement = function MediaElement(idOrNode, options, sources) { var _this = this; _classCallCheck(this, MediaElement); var t = this; sources = Array.isArray(sources) ? sources : null; t.defaults = { renderers: [], fakeNodeName: 'mediaelementwrapper', pluginPath: 'build/', shimScriptAccess: 'sameDomain' }; options = Object.assign(t.defaults, options); t.mediaElement = _document2.default.createElement(options.fakeNodeName); var id = idOrNode, error = false; if (typeof idOrNode === 'string') { t.mediaElement.originalNode = _document2.default.getElementById(idOrNode); } else { t.mediaElement.originalNode = idOrNode; id = idOrNode.id; } if (t.mediaElement.originalNode === undefined || t.mediaElement.originalNode === null) { return null; } t.mediaElement.options = options; id = id || 'mejs_' + Math.random().toString().slice(2); t.mediaElement.originalNode.setAttribute('id', id + '_from_mejs'); var tagName = t.mediaElement.originalNode.tagName.toLowerCase(); if (['video', 'audio'].indexOf(tagName) > -1 && !t.mediaElement.originalNode.getAttribute('preload')) { t.mediaElement.originalNode.setAttribute('preload', 'none'); } t.mediaElement.originalNode.parentNode.insertBefore(t.mediaElement, t.mediaElement.originalNode); t.mediaElement.appendChild(t.mediaElement.originalNode); var processURL = function processURL(url, type) { if (_window2.default.location.protocol === 'https:' && url.indexOf('http:') === 0 && _constants.IS_IOS && _mejs2.default.html5media.mediaTypes.indexOf(type) > -1) { var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function () { if (this.readyState === 4 && this.status === 200) { var _url = _window2.default.URL || _window2.default.webkitURL, blobUrl = _url.createObjectURL(this.response); t.mediaElement.originalNode.setAttribute('src', blobUrl); return blobUrl; } return url; }; xhr.open('GET', url); xhr.responseType = 'blob'; xhr.send(); } return url; }; var mediaFiles = void 0; if (sources !== null) { mediaFiles = sources; } else if (t.mediaElement.originalNode !== null) { mediaFiles = []; switch (t.mediaElement.originalNode.nodeName.toLowerCase()) { case 'iframe': mediaFiles.push({ type: '', src: t.mediaElement.originalNode.getAttribute('src') }); break; case 'audio': case 'video': var _sources = t.mediaElement.originalNode.children.length, nodeSource = t.mediaElement.originalNode.getAttribute('src'); if (nodeSource) { var node = t.mediaElement.originalNode, type = (0, _media2.formatType)(nodeSource, node.getAttribute('type')); mediaFiles.push({ type: type, src: processURL(nodeSource, type) }); } for (var i = 0; i < _sources; i++) { var n = t.mediaElement.originalNode.children[i]; if (n.tagName.toLowerCase() === 'source') { var src = n.getAttribute('src'), _type = (0, _media2.formatType)(src, n.getAttribute('type')); mediaFiles.push({ type: _type, src: processURL(src, _type) }); } } break; } } t.mediaElement.id = id; t.mediaElement.renderers = {}; t.mediaElement.events = {}; t.mediaElement.promises = []; t.mediaElement.renderer = null; t.mediaElement.rendererName = null; t.mediaElement.changeRenderer = function (rendererName, mediaFiles) { var t = _this, media = Object.keys(mediaFiles[0]).length > 2 ? mediaFiles[0] : mediaFiles[0].src; if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && t.mediaElement.renderer.name === rendererName) { t.mediaElement.renderer.pause(); if (t.mediaElement.renderer.stop) { t.mediaElement.renderer.stop(); } t.mediaElement.renderer.show(); t.mediaElement.renderer.setSrc(media); return true; } if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) { t.mediaElement.renderer.pause(); if (t.mediaElement.renderer.stop) { t.mediaElement.renderer.stop(); } t.mediaElement.renderer.hide(); } var newRenderer = t.mediaElement.renderers[rendererName], newRendererType = null; if (newRenderer !== undefined && newRenderer !== null) { newRenderer.show(); newRenderer.setSrc(media); t.mediaElement.renderer = newRenderer; t.mediaElement.rendererName = rendererName; return true; } var rendererArray = t.mediaElement.options.renderers.length ? t.mediaElement.options.renderers : _renderer.renderer.order; for (var _i = 0, total = rendererArray.length; _i < total; _i++) { var index = rendererArray[_i]; if (index === rendererName) { var rendererList = _renderer.renderer.renderers; newRendererType = rendererList[index]; var renderOptions = Object.assign(newRendererType.options, t.mediaElement.options); newRenderer = newRendererType.create(t.mediaElement, renderOptions, mediaFiles); newRenderer.name = rendererName; t.mediaElement.renderers[newRendererType.name] = newRenderer; t.mediaElement.renderer = newRenderer; t.mediaElement.rendererName = rendererName; newRenderer.show(); return true; } } return false; }; t.mediaElement.setSize = function (width, height) { if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) { t.mediaElement.renderer.setSize(width, height); } }; t.mediaElement.generateError = function (message, urlList) { message = message || ''; urlList = Array.isArray(urlList) ? urlList : []; var event = (0, _general.createEvent)('error', t.mediaElement); event.message = message; event.urls = urlList; t.mediaElement.dispatchEvent(event); error = true; }; var props = _mejs2.default.html5media.properties, methods = _mejs2.default.html5media.methods, addProperty = function addProperty(obj, name, onGet, onSet) { var oldValue = obj[name]; var getFn = function getFn() { return onGet.apply(obj, [oldValue]); }, setFn = function setFn(newValue) { oldValue = onSet.apply(obj, [newValue]); return oldValue; }; Object.defineProperty(obj, name, { get: getFn, set: setFn }); }, assignGettersSetters = function assignGettersSetters(propName) { if (propName !== 'src') { var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1), getFn = function getFn() { return t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && typeof t.mediaElement.renderer['get' + capName] === 'function' ? t.mediaElement.renderer['get' + capName]() : null; }, setFn = function setFn(value) { if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && typeof t.mediaElement.renderer['set' + capName] === 'function') { t.mediaElement.renderer['set' + capName](value); } }; addProperty(t.mediaElement, propName, getFn, setFn); t.mediaElement['get' + capName] = getFn; t.mediaElement['set' + capName] = setFn; } }, getSrc = function getSrc() { return t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null ? t.mediaElement.renderer.getSrc() : null; }, setSrc = function setSrc(value) { var mediaFiles = []; if (typeof value === 'string') { mediaFiles.push({ src: value, type: value ? (0, _media2.getTypeFromFile)(value) : '' }); } else if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src !== undefined) { var _src = (0, _media2.absolutizeUrl)(value.src), _type2 = value.type, media = Object.assign(value, { src: _src, type: (_type2 === '' || _type2 === null || _type2 === undefined) && _src ? (0, _media2.getTypeFromFile)(_src) : _type2 }); mediaFiles.push(media); } else if (Array.isArray(value)) { for (var _i2 = 0, total = value.length; _i2 < total; _i2++) { var _src2 = (0, _media2.absolutizeUrl)(value[_i2].src), _type3 = value[_i2].type, _media = Object.assign(value[_i2], { src: _src2, type: (_type3 === '' || _type3 === null || _type3 === undefined) && _src2 ? (0, _media2.getTypeFromFile)(_src2) : _type3 }); mediaFiles.push(_media); } } var renderInfo = _renderer.renderer.select(mediaFiles, t.mediaElement.options.renderers.length ? t.mediaElement.options.renderers : []), event = void 0; if (!t.mediaElement.paused && !(t.mediaElement.src == null || t.mediaElement.src === '')) { t.mediaElement.pause(); event = (0, _general.createEvent)('pause', t.mediaElement); t.mediaElement.dispatchEvent(event); } t.mediaElement.originalNode.src = mediaFiles[0].src || ''; if (renderInfo === null && mediaFiles[0].src) { t.mediaElement.generateError('No renderer found', mediaFiles); return; } var shouldChangeRenderer = !(mediaFiles[0].src == null || mediaFiles[0].src === ''); return shouldChangeRenderer ? t.mediaElement.changeRenderer(renderInfo.rendererName, mediaFiles) : null; }, triggerAction = function triggerAction(methodName, args) { try { if (methodName === 'play' && (t.mediaElement.rendererName === 'native_dash' || t.mediaElement.rendererName === 'native_hls' || t.mediaElement.rendererName === 'vimeo_iframe')) { var response = t.mediaElement.renderer[methodName](args); if (response && typeof response.then === 'function') { response.catch(function () { if (t.mediaElement.paused) { setTimeout(function () { var tmpResponse = t.mediaElement.renderer.play(); if (tmpResponse !== undefined) { tmpResponse.catch(function () { if (!t.mediaElement.renderer.paused) { t.mediaElement.renderer.pause(); } }); } }, 150); } }); } } else { t.mediaElement.renderer[methodName](args); } } catch (e) { t.mediaElement.generateError(e, mediaFiles); } }, assignMethods = function assignMethods(methodName) { t.mediaElement[methodName] = function () { for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && typeof t.mediaElement.renderer[methodName] === 'function') { if (t.mediaElement.promises.length) { Promise.all(t.mediaElement.promises).then(function () { triggerAction(methodName, args); }).catch(function (e) { t.mediaElement.generateError(e, mediaFiles); }); } else { triggerAction(methodName, args); } } return null; }; }; addProperty(t.mediaElement, 'src', getSrc, setSrc); t.mediaElement.getSrc = getSrc; t.mediaElement.setSrc = setSrc; for (var _i3 = 0, total = props.length; _i3 < total; _i3++) { assignGettersSetters(props[_i3]); } for (var _i4 = 0, _total = methods.length; _i4 < _total; _i4++) { assignMethods(methods[_i4]); } t.mediaElement.addEventListener = function (eventName, callback) { t.mediaElement.events[eventName] = t.mediaElement.events[eventName] || []; t.mediaElement.events[eventName].push(callback); }; t.mediaElement.removeEventListener = function (eventName, callback) { if (!eventName) { t.mediaElement.events = {}; return true; } var callbacks = t.mediaElement.events[eventName]; if (!callbacks) { return true; } if (!callback) { t.mediaElement.events[eventName] = []; return true; } for (var _i5 = 0; _i5 < callbacks.length; _i5++) { if (callbacks[_i5] === callback) { t.mediaElement.events[eventName].splice(_i5, 1); return true; } } return false; }; t.mediaElement.dispatchEvent = function (event) { var callbacks = t.mediaElement.events[event.type]; if (callbacks) { for (var _i6 = 0; _i6 < callbacks.length; _i6++) { callbacks[_i6].apply(null, [event]); } } }; t.mediaElement.destroy = function () { var mediaElement = t.mediaElement.originalNode.cloneNode(true); var wrapper = t.mediaElement.parentElement; mediaElement.removeAttribute('id'); mediaElement.remove(); t.mediaElement.remove(); wrapper.appendChild(mediaElement); }; if (mediaFiles.length) { t.mediaElement.src = mediaFiles; } if (t.mediaElement.promises.length) { Promise.all(t.mediaElement.promises).then(function () { if (t.mediaElement.options.success) { t.mediaElement.options.success(t.mediaElement, t.mediaElement.originalNode); } }).catch(function () { if (error && t.mediaElement.options.error) { t.mediaElement.options.error(t.mediaElement, t.mediaElement.originalNode); } }); } else { if (t.mediaElement.options.success) { t.mediaElement.options.success(t.mediaElement, t.mediaElement.originalNode); } if (error && t.mediaElement.options.error) { t.mediaElement.options.error(t.mediaElement, t.mediaElement.originalNode); } } return t.mediaElement; }; _window2.default.MediaElement = MediaElement; _mejs2.default.MediaElement = MediaElement; exports.default = MediaElement; },{"16":16,"18":18,"19":19,"2":2,"3":3,"7":7,"8":8}],7:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _window = _dereq_(3); var _window2 = _interopRequireDefault(_window); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var mejs = {}; mejs.version = '4.2.17'; mejs.html5media = { properties: ['volume', 'src', 'currentTime', 'muted', 'duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable', 'currentSrc', 'preload', 'bufferedBytes', 'bufferedTime', 'initialTime', 'startOffsetTime', 'defaultPlaybackRate', 'playbackRate', 'played', 'autoplay', 'loop', 'controls'], readOnlyProperties: ['duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable'], methods: ['load', 'play', 'pause', 'canPlayType'], events: ['loadstart', 'durationchange', 'loadedmetadata', 'loadeddata', 'progress', 'canplay', 'canplaythrough', 'suspend', 'abort', 'error', 'emptied', 'stalled', 'play', 'playing', 'pause', 'waiting', 'seeking', 'seeked', 'timeupdate', 'ended', 'ratechange', 'volumechange'], mediaTypes: ['audio/mp3', 'audio/ogg', 'audio/oga', 'audio/wav', 'audio/x-wav', 'audio/wave', 'audio/x-pn-wav', 'audio/mpeg', 'audio/mp4', 'video/mp4', 'video/webm', 'video/ogg', 'video/ogv'] }; _window2.default.mejs = mejs; exports.default = mejs; },{"3":3}],8:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.renderer = undefined; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _mejs = _dereq_(7); var _mejs2 = _interopRequireDefault(_mejs); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var Renderer = function () { function Renderer() { _classCallCheck(this, Renderer); this.renderers = {}; this.order = []; } _createClass(Renderer, [{ key: 'add', value: function add(renderer) { if (renderer.name === undefined) { throw new TypeError('renderer must contain at least `name` property'); } this.renderers[renderer.name] = renderer; this.order.push(renderer.name); } }, { key: 'select', value: function select(mediaFiles) { var renderers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; var renderersLength = renderers.length; renderers = renderers.length ? renderers : this.order; if (!renderersLength) { var rendererIndicator = [/^(html5|native)/i, /^flash/i, /iframe$/i], rendererRanking = function rendererRanking(renderer) { for (var i = 0, total = rendererIndicator.length; i < total; i++) { if (rendererIndicator[i].test(renderer)) { return i; } } return rendererIndicator.length; }; renderers.sort(function (a, b) { return rendererRanking(a) - rendererRanking(b); }); } for (var i = 0, total = renderers.length; i < total; i++) { var key = renderers[i], _renderer = this.renderers[key]; if (_renderer !== null && _renderer !== undefined) { for (var j = 0, jl = mediaFiles.length; j < jl; j++) { if (typeof _renderer.canPlayType === 'function' && typeof mediaFiles[j].type === 'string' && _renderer.canPlayType(mediaFiles[j].type)) { return { rendererName: _renderer.name, src: mediaFiles[j].src }; } } } } return null; } }, { key: 'order', set: function set(order) { if (!Array.isArray(order)) { throw new TypeError('order must be an array of strings.'); } this._order = order; }, get: function get() { return this._order; } }, { key: 'renderers', set: function set(renderers) { if (renderers !== null && (typeof renderers === 'undefined' ? 'undefined' : _typeof(renderers)) !== 'object') { throw new TypeError('renderers must be an array of objects.'); } this._renderers = renderers; }, get: function get() { return this._renderers; } }]); return Renderer; }(); var renderer = exports.renderer = new Renderer(); _mejs2.default.Renderers = renderer; },{"7":7}],9:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var EN = exports.EN = { 'mejs.plural-form': 1, 'mejs.download-file': 'Download File', 'mejs.install-flash': 'You are using a browser that does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https://get.adobe.com/flashplayer/', 'mejs.fullscreen': 'Fullscreen', 'mejs.play': 'Play', 'mejs.pause': 'Pause', 'mejs.time-slider': 'Time Slider', 'mejs.time-help-text': 'Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.', 'mejs.live-broadcast': 'Live Broadcast', 'mejs.volume-help-text': 'Use Up/Down Arrow keys to increase or decrease volume.', 'mejs.unmute': 'Unmute', 'mejs.mute': 'Mute', 'mejs.volume-slider': 'Volume Slider', 'mejs.video-player': 'Video Player', 'mejs.audio-player': 'Audio Player', 'mejs.captions-subtitles': 'Captions/Subtitles', 'mejs.captions-chapters': 'Chapters', 'mejs.none': 'None', 'mejs.afrikaans': 'Afrikaans', 'mejs.albanian': 'Albanian', 'mejs.arabic': 'Arabic', 'mejs.belarusian': 'Belarusian', 'mejs.bulgarian': 'Bulgarian', 'mejs.catalan': 'Catalan', 'mejs.chinese': 'Chinese', 'mejs.chinese-simplified': 'Chinese (Simplified)', 'mejs.chinese-traditional': 'Chinese (Traditional)', 'mejs.croatian': 'Croatian', 'mejs.czech': 'Czech', 'mejs.danish': 'Danish', 'mejs.dutch': 'Dutch', 'mejs.english': 'English', 'mejs.estonian': 'Estonian', 'mejs.filipino': 'Filipino', 'mejs.finnish': 'Finnish', 'mejs.french': 'French', 'mejs.galician': 'Galician', 'mejs.german': 'German', 'mejs.greek': 'Greek', 'mejs.haitian-creole': 'Haitian Creole', 'mejs.hebrew': 'Hebrew', 'mejs.hindi': 'Hindi', 'mejs.hungarian': 'Hungarian', 'mejs.icelandic': 'Icelandic', 'mejs.indonesian': 'Indonesian', 'mejs.irish': 'Irish', 'mejs.italian': 'Italian', 'mejs.japanese': 'Japanese', 'mejs.korean': 'Korean', 'mejs.latvian': 'Latvian', 'mejs.lithuanian': 'Lithuanian', 'mejs.macedonian': 'Macedonian', 'mejs.malay': 'Malay', 'mejs.maltese': 'Maltese', 'mejs.norwegian': 'Norwegian', 'mejs.persian': 'Persian', 'mejs.polish': 'Polish', 'mejs.portuguese': 'Portuguese', 'mejs.romanian': 'Romanian', 'mejs.russian': 'Russian', 'mejs.serbian': 'Serbian', 'mejs.slovak': 'Slovak', 'mejs.slovenian': 'Slovenian', 'mejs.spanish': 'Spanish', 'mejs.swahili': 'Swahili', 'mejs.swedish': 'Swedish', 'mejs.tagalog': 'Tagalog', 'mejs.thai': 'Thai', 'mejs.turkish': 'Turkish', 'mejs.ukrainian': 'Ukrainian', 'mejs.vietnamese': 'Vietnamese', 'mejs.welsh': 'Welsh', 'mejs.yiddish': 'Yiddish' }; },{}],10:[function(_dereq_,module,exports){ 'use strict'; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var _window = _dereq_(3); var _window2 = _interopRequireDefault(_window); var _mejs = _dereq_(7); var _mejs2 = _interopRequireDefault(_mejs); var _renderer = _dereq_(8); var _general = _dereq_(18); var _media = _dereq_(19); var _constants = _dereq_(16); var _dom = _dereq_(17); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var NativeDash = { promise: null, load: function load(settings) { if (typeof dashjs !== 'undefined') { NativeDash.promise = new Promise(function (resolve) { resolve(); }).then(function () { NativeDash._createPlayer(settings); }); } else { settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.dashjs.org/latest/dash.all.min.js'; NativeDash.promise = NativeDash.promise || (0, _dom.loadScript)(settings.options.path); NativeDash.promise.then(function () { NativeDash._createPlayer(settings); }); } return NativeDash.promise; }, _createPlayer: function _createPlayer(settings) { var player = dashjs.MediaPlayer().create(); _window2.default['__ready__' + settings.id](player); return player; } }; var DashNativeRenderer = { name: 'native_dash', options: { prefix: 'native_dash', dash: { path: 'https://cdn.dashjs.org/latest/dash.all.min.js', debug: false, drm: {}, robustnessLevel: '' } }, canPlayType: function canPlayType(type) { return _constants.HAS_MSE && ['application/dash+xml'].indexOf(type.toLowerCase()) > -1; }, create: function create(mediaElement, options, mediaFiles) { var originalNode = mediaElement.originalNode, id = mediaElement.id + '_' + options.prefix, autoplay = originalNode.autoplay, children = originalNode.children; var node = null, dashPlayer = null; originalNode.removeAttribute('type'); for (var i = 0, total = children.length; i < total; i++) { children[i].removeAttribute('type'); } node = originalNode.cloneNode(true); options = Object.assign(options, mediaElement.options); var props = _mejs2.default.html5media.properties, events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) { return e !== 'error'; }), attachNativeEvents = function attachNativeEvents(e) { var event = (0, _general.createEvent)(e.type, mediaElement); mediaElement.dispatchEvent(event); }, assignGettersSetters = function assignGettersSetters(propName) { var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); node['get' + capName] = function () { return dashPlayer !== null ? node[propName] : null; }; node['set' + capName] = function (value) { if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) { if (propName === 'src') { var source = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value; node[propName] = source; if (dashPlayer !== null) { dashPlayer.reset(); for (var _i = 0, _total = events.length; _i < _total; _i++) { node.removeEventListener(events[_i], attachNativeEvents); } dashPlayer = NativeDash._createPlayer({ options: options.dash, id: id }); if (value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && _typeof(value.drm) === 'object') { dashPlayer.setProtectionData(value.drm); if ((0, _general.isString)(options.dash.robustnessLevel) && options.dash.robustnessLevel) { dashPlayer.getProtectionController().setRobustnessLevel(options.dash.robustnessLevel); } } dashPlayer.attachSource(source); if (autoplay) { dashPlayer.play(); } } } else { node[propName] = value; } } }; }; for (var _i2 = 0, _total2 = props.length; _i2 < _total2; _i2++) { assignGettersSetters(props[_i2]); } _window2.default['__ready__' + id] = function (_dashPlayer) { mediaElement.dashPlayer = dashPlayer = _dashPlayer; var dashEvents = dashjs.MediaPlayer.events, assignEvents = function assignEvents(eventName) { if (eventName === 'loadedmetadata') { dashPlayer.initialize(); dashPlayer.attachView(node); dashPlayer.setAutoPlay(false); if (_typeof(options.dash.drm) === 'object' && !_mejs2.default.Utils.isObjectEmpty(options.dash.drm)) { dashPlayer.setProtectionData(options.dash.drm); if ((0, _general.isString)(options.dash.robustnessLevel) && options.dash.robustnessLevel) { dashPlayer.getProtectionController().setRobustnessLevel(options.dash.robustnessLevel); } } dashPlayer.attachSource(node.getSrc()); } node.addEventListener(eventName, attachNativeEvents); }; for (var _i3 = 0, _total3 = events.length; _i3 < _total3; _i3++) { assignEvents(events[_i3]); } var assignMdashEvents = function assignMdashEvents(e) { if (e.type.toLowerCase() === 'error') { mediaElement.generateError(e.message, node.src); console.error(e); } else { var _event = (0, _general.createEvent)(e.type, mediaElement); _event.data = e; mediaElement.dispatchEvent(_event); } }; for (var eventType in dashEvents) { if (dashEvents.hasOwnProperty(eventType)) { dashPlayer.on(dashEvents[eventType], function (e) { return assignMdashEvents(e); }); } } }; if (mediaFiles && mediaFiles.length > 0) { for (var _i4 = 0, _total4 = mediaFiles.length; _i4 < _total4; _i4++) { if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i4].type)) { node.setAttribute('src', mediaFiles[_i4].src); if (typeof mediaFiles[_i4].drm !== 'undefined') { options.dash.drm = mediaFiles[_i4].drm; } break; } } } node.setAttribute('id', id); originalNode.parentNode.insertBefore(node, originalNode); originalNode.autoplay = false; originalNode.style.display = 'none'; node.setSize = function (width, height) { node.style.width = width + 'px'; node.style.height = height + 'px'; return node; }; node.hide = function () { node.pause(); node.style.display = 'none'; return node; }; node.show = function () { node.style.display = ''; return node; }; node.destroy = function () { if (dashPlayer !== null) { dashPlayer.reset(); } }; var event = (0, _general.createEvent)('rendererready', node); mediaElement.dispatchEvent(event); mediaElement.promises.push(NativeDash.load({ options: options.dash, id: id })); return node; } }; _media.typeChecks.push(function (url) { return ~url.toLowerCase().indexOf('.mpd') ? 'application/dash+xml' : null; }); _renderer.renderer.add(DashNativeRenderer); },{"16":16,"17":17,"18":18,"19":19,"3":3,"7":7,"8":8}],11:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.PluginDetector = undefined; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var _window = _dereq_(3); var _window2 = _interopRequireDefault(_window); var _document = _dereq_(2); var _document2 = _interopRequireDefault(_document); var _mejs = _dereq_(7); var _mejs2 = _interopRequireDefault(_mejs); var _i18n = _dereq_(5); var _i18n2 = _interopRequireDefault(_i18n); var _renderer = _dereq_(8); var _general = _dereq_(18); var _constants = _dereq_(16); var _media = _dereq_(19); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var PluginDetector = exports.PluginDetector = { plugins: [], hasPluginVersion: function hasPluginVersion(plugin, v) { var pv = PluginDetector.plugins[plugin]; v[1] = v[1] || 0; v[2] = v[2] || 0; return pv[0] > v[0] || pv[0] === v[0] && pv[1] > v[1] || pv[0] === v[0] && pv[1] === v[1] && pv[2] >= v[2]; }, addPlugin: function addPlugin(p, pluginName, mimeType, activeX, axDetect) { PluginDetector.plugins[p] = PluginDetector.detectPlugin(pluginName, mimeType, activeX, axDetect); }, detectPlugin: function detectPlugin(pluginName, mimeType, activeX, axDetect) { var version = [0, 0, 0], description = void 0, ax = void 0; if (_constants.NAV.plugins !== null && _constants.NAV.plugins !== undefined && _typeof(_constants.NAV.plugins[pluginName]) === 'object') { description = _constants.NAV.plugins[pluginName].description; if (description && !(typeof _constants.NAV.mimeTypes !== 'undefined' && _constants.NAV.mimeTypes[mimeType] && !_constants.NAV.mimeTypes[mimeType].enabledPlugin)) { version = description.replace(pluginName, '').replace(/^\s+/, '').replace(/\sr/gi, '.').split('.'); for (var i = 0, total = version.length; i < total; i++) { version[i] = parseInt(version[i].match(/\d+/), 10); } } } else if (_window2.default.ActiveXObject !== undefined) { try { ax = new ActiveXObject(activeX); if (ax) { version = axDetect(ax); } } catch (e) { } } return version; } }; PluginDetector.addPlugin('flash', 'Shockwave Flash', 'application/x-shockwave-flash', 'ShockwaveFlash.ShockwaveFlash', function (ax) { var version = [], d = ax.GetVariable("$version"); if (d) { d = d.split(" ")[1].split(","); version = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)]; } return version; }); var FlashMediaElementRenderer = { create: function create(mediaElement, options, mediaFiles) { var flash = {}; var isActive = false; flash.options = options; flash.id = mediaElement.id + '_' + flash.options.prefix; flash.mediaElement = mediaElement; flash.flashState = {}; flash.flashApi = null; flash.flashApiStack = []; var props = _mejs2.default.html5media.properties, assignGettersSetters = function assignGettersSetters(propName) { flash.flashState[propName] = null; var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); flash['get' + capName] = function () { if (flash.flashApi !== null) { if (typeof flash.flashApi['get_' + propName] === 'function') { var value = flash.flashApi['get_' + propName](); if (propName === 'buffered') { return { start: function start() { return 0; }, end: function end() { return value; }, length: 1 }; } return value; } else { return null; } } else { return null; } }; flash['set' + capName] = function (value) { if (propName === 'src') { value = (0, _media.absolutizeUrl)(value); } if (flash.flashApi !== null && flash.flashApi['set_' + propName] !== undefined) { try { flash.flashApi['set_' + propName](value); } catch (e) { } } else { flash.flashApiStack.push({ type: 'set', propName: propName, value: value }); } }; }; for (var i = 0, total = props.length; i < total; i++) { assignGettersSetters(props[i]); } var methods = _mejs2.default.html5media.methods, assignMethods = function assignMethods(methodName) { flash[methodName] = function () { if (isActive) { if (flash.flashApi !== null) { if (flash.flashApi['fire_' + methodName]) { try { flash.flashApi['fire_' + methodName](); } catch (e) { } } else { } } else { flash.flashApiStack.push({ type: 'call', methodName: methodName }); } } }; }; methods.push('stop'); for (var _i = 0, _total = methods.length; _i < _total; _i++) { assignMethods(methods[_i]); } var initEvents = ['rendererready']; for (var _i2 = 0, _total2 = initEvents.length; _i2 < _total2; _i2++) { var event = (0, _general.createEvent)(initEvents[_i2], flash); mediaElement.dispatchEvent(event); } _window2.default['__ready__' + flash.id] = function () { flash.flashReady = true; flash.flashApi = _document2.default.getElementById('__' + flash.id); if (flash.flashApiStack.length) { for (var _i3 = 0, _total3 = flash.flashApiStack.length; _i3 < _total3; _i3++) { var stackItem = flash.flashApiStack[_i3]; if (stackItem.type === 'set') { var propName = stackItem.propName, capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); flash['set' + capName](stackItem.value); } else if (stackItem.type === 'call') { flash[stackItem.methodName](); } } } }; _window2.default['__event__' + flash.id] = function (eventName, message) { var event = (0, _general.createEvent)(eventName, flash); if (message) { try { event.data = JSON.parse(message); event.details.data = JSON.parse(message); } catch (e) { event.message = message; } } flash.mediaElement.dispatchEvent(event); }; flash.flashWrapper = _document2.default.createElement('div'); if (['always', 'sameDomain'].indexOf(flash.options.shimScriptAccess) === -1) { flash.options.shimScriptAccess = 'sameDomain'; } var autoplay = mediaElement.originalNode.autoplay, flashVars = ['uid=' + flash.id, 'autoplay=' + autoplay, 'allowScriptAccess=' + flash.options.shimScriptAccess, 'preload=' + (mediaElement.originalNode.getAttribute('preload') || '')], isVideo = mediaElement.originalNode !== null && mediaElement.originalNode.tagName.toLowerCase() === 'video', flashHeight = isVideo ? mediaElement.originalNode.height : 1, flashWidth = isVideo ? mediaElement.originalNode.width : 1; if (mediaElement.originalNode.getAttribute('src')) { flashVars.push('src=' + mediaElement.originalNode.getAttribute('src')); } if (flash.options.enablePseudoStreaming === true) { flashVars.push('pseudostreamstart=' + flash.options.pseudoStreamingStartQueryParam); flashVars.push('pseudostreamtype=' + flash.options.pseudoStreamingType); } if (flash.options.streamDelimiter) { flashVars.push('streamdelimiter=' + encodeURIComponent(flash.options.streamDelimiter)); } if (flash.options.proxyType) { flashVars.push('proxytype=' + flash.options.proxyType); } mediaElement.appendChild(flash.flashWrapper); mediaElement.originalNode.style.display = 'none'; var settings = []; if (_constants.IS_IE || _constants.IS_EDGE) { var specialIEContainer = _document2.default.createElement('div'); flash.flashWrapper.appendChild(specialIEContainer); if (_constants.IS_EDGE) { settings = ['type="application/x-shockwave-flash"', 'data="' + flash.options.pluginPath + flash.options.filename + '"', 'id="__' + flash.id + '"', 'width="' + flashWidth + '"', 'height="' + flashHeight + '\'"']; } else { settings = ['classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"', 'codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab"', 'id="__' + flash.id + '"', 'width="' + flashWidth + '"', 'height="' + flashHeight + '"']; } if (!isVideo) { settings.push('style="clip: rect(0 0 0 0); position: absolute;"'); } specialIEContainer.outerHTML = '<object ' + settings.join(' ') + '>' + ('<param name="movie" value="' + flash.options.pluginPath + flash.options.filename + '?x=' + new Date() + '" />') + ('<param name="flashvars" value="' + flashVars.join('&') + '" />') + '<param name="quality" value="high" />' + '<param name="bgcolor" value="#000000" />' + '<param name="wmode" value="transparent" />' + ('<param name="allowScriptAccess" value="' + flash.options.shimScriptAccess + '" />') + '<param name="allowFullScreen" value="true" />' + ('<div>' + _i18n2.default.t('mejs.install-flash') + '</div>') + '</object>'; } else { settings = ['id="__' + flash.id + '"', 'name="__' + flash.id + '"', 'play="true"', 'loop="false"', 'quality="high"', 'bgcolor="#000000"', 'wmode="transparent"', 'allowScriptAccess="' + flash.options.shimScriptAccess + '"', 'allowFullScreen="true"', 'type="application/x-shockwave-flash"', 'pluginspage="//www.macromedia.com/go/getflashplayer"', 'src="' + flash.options.pluginPath + flash.options.filename + '"', 'flashvars="' + flashVars.join('&') + '"']; if (isVideo) { settings.push('width="' + flashWidth + '"'); settings.push('height="' + flashHeight + '"'); } else { settings.push('style="position: fixed; left: -9999em; top: -9999em;"'); } flash.flashWrapper.innerHTML = '<embed ' + settings.join(' ') + '>'; } flash.flashNode = flash.flashWrapper.lastChild; flash.hide = function () { isActive = false; if (isVideo) { flash.flashNode.style.display = 'none'; } }; flash.show = function () { isActive = true; if (isVideo) { flash.flashNode.style.display = ''; } }; flash.setSize = function (width, height) { flash.flashNode.style.width = width + 'px'; flash.flashNode.style.height = height + 'px'; if (flash.flashApi !== null && typeof flash.flashApi.fire_setSize === 'function') { flash.flashApi.fire_setSize(width, height); } }; flash.destroy = function () { flash.flashNode.remove(); }; if (mediaFiles && mediaFiles.length > 0) { for (var _i4 = 0, _total4 = mediaFiles.length; _i4 < _total4; _i4++) { if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i4].type)) { flash.setSrc(mediaFiles[_i4].src); break; } } } return flash; } }; var hasFlash = PluginDetector.hasPluginVersion('flash', [10, 0, 0]); if (hasFlash) { _media.typeChecks.push(function (url) { url = url.toLowerCase(); if (url.startsWith('rtmp')) { if (~url.indexOf('.mp3')) { return 'audio/rtmp'; } else { return 'video/rtmp'; } } else if (/\.og(a|g)/i.test(url)) { return 'audio/ogg'; } else if (~url.indexOf('.m3u8')) { return 'application/x-mpegURL'; } else if (~url.indexOf('.mpd')) { return 'application/dash+xml'; } else if (~url.indexOf('.flv')) { return 'video/flv'; } else { return null; } }); var FlashMediaElementVideoRenderer = { name: 'flash_video', options: { prefix: 'flash_video', filename: 'mediaelement-flash-video.swf', enablePseudoStreaming: false, pseudoStreamingStartQueryParam: 'start', pseudoStreamingType: 'byte', proxyType: '', streamDelimiter: '' }, canPlayType: function canPlayType(type) { return ~['video/mp4', 'video/rtmp', 'audio/rtmp', 'rtmp/mp4', 'audio/mp4', 'video/flv', 'video/x-flv'].indexOf(type.toLowerCase()); }, create: FlashMediaElementRenderer.create }; _renderer.renderer.add(FlashMediaElementVideoRenderer); var FlashMediaElementHlsVideoRenderer = { name: 'flash_hls', options: { prefix: 'flash_hls', filename: 'mediaelement-flash-video-hls.swf' }, canPlayType: function canPlayType(type) { return ~['application/x-mpegurl', 'application/vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase()); }, create: FlashMediaElementRenderer.create }; _renderer.renderer.add(FlashMediaElementHlsVideoRenderer); var FlashMediaElementMdashVideoRenderer = { name: 'flash_dash', options: { prefix: 'flash_dash', filename: 'mediaelement-flash-video-mdash.swf' }, canPlayType: function canPlayType(type) { return ~['application/dash+xml'].indexOf(type.toLowerCase()); }, create: FlashMediaElementRenderer.create }; _renderer.renderer.add(FlashMediaElementMdashVideoRenderer); var FlashMediaElementAudioRenderer = { name: 'flash_audio', options: { prefix: 'flash_audio', filename: 'mediaelement-flash-audio.swf' }, canPlayType: function canPlayType(type) { return ~['audio/mp3'].indexOf(type.toLowerCase()); }, create: FlashMediaElementRenderer.create }; _renderer.renderer.add(FlashMediaElementAudioRenderer); var FlashMediaElementAudioOggRenderer = { name: 'flash_audio_ogg', options: { prefix: 'flash_audio_ogg', filename: 'mediaelement-flash-audio-ogg.swf' }, canPlayType: function canPlayType(type) { return ~['audio/ogg', 'audio/oga', 'audio/ogv'].indexOf(type.toLowerCase()); }, create: FlashMediaElementRenderer.create }; _renderer.renderer.add(FlashMediaElementAudioOggRenderer); } },{"16":16,"18":18,"19":19,"2":2,"3":3,"5":5,"7":7,"8":8}],12:[function(_dereq_,module,exports){ 'use strict'; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var _window = _dereq_(3); var _window2 = _interopRequireDefault(_window); var _mejs = _dereq_(7); var _mejs2 = _interopRequireDefault(_mejs); var _renderer = _dereq_(8); var _general = _dereq_(18); var _constants = _dereq_(16); var _media = _dereq_(19); var _dom = _dereq_(17); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var NativeFlv = { promise: null, load: function load(settings) { if (typeof flvjs !== 'undefined') { NativeFlv.promise = new Promise(function (resolve) { resolve(); }).then(function () { NativeFlv._createPlayer(settings); }); } else { settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.jsdelivr.net/npm/flv.js@latest'; NativeFlv.promise = NativeFlv.promise || (0, _dom.loadScript)(settings.options.path); NativeFlv.promise.then(function () { NativeFlv._createPlayer(settings); }); } return NativeFlv.promise; }, _createPlayer: function _createPlayer(settings) { flvjs.LoggingControl.enableDebug = settings.options.debug; flvjs.LoggingControl.enableVerbose = settings.options.debug; var player = flvjs.createPlayer(settings.options, settings.configs); _window2.default['__ready__' + settings.id](player); return player; } }; var FlvNativeRenderer = { name: 'native_flv', options: { prefix: 'native_flv', flv: { path: 'https://cdn.jsdelivr.net/npm/flv.js@latest', cors: true, debug: false } }, canPlayType: function canPlayType(type) { return _constants.HAS_MSE && ['video/x-flv', 'video/flv'].indexOf(type.toLowerCase()) > -1; }, create: function create(mediaElement, options, mediaFiles) { var originalNode = mediaElement.originalNode, id = mediaElement.id + '_' + options.prefix; var node = null, flvPlayer = null; node = originalNode.cloneNode(true); options = Object.assign(options, mediaElement.options); var props = _mejs2.default.html5media.properties, events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) { return e !== 'error'; }), attachNativeEvents = function attachNativeEvents(e) { var event = (0, _general.createEvent)(e.type, mediaElement); mediaElement.dispatchEvent(event); }, assignGettersSetters = function assignGettersSetters(propName) { var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); node['get' + capName] = function () { return flvPlayer !== null ? node[propName] : null; }; node['set' + capName] = function (value) { if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) { if (propName === 'src') { node[propName] = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value; if (flvPlayer !== null) { var _flvOptions = {}; _flvOptions.type = 'flv'; _flvOptions.url = value; _flvOptions.cors = options.flv.cors; _flvOptions.debug = options.flv.debug; _flvOptions.path = options.flv.path; var _flvConfigs = options.flv.configs; flvPlayer.destroy(); for (var i = 0, total = events.length; i < total; i++) { node.removeEventListener(events[i], attachNativeEvents); } flvPlayer = NativeFlv._createPlayer({ options: _flvOptions, configs: _flvConfigs, id: id }); flvPlayer.attachMediaElement(node); flvPlayer.load(); } } else { node[propName] = value; } } }; }; for (var i = 0, total = props.length; i < total; i++) { assignGettersSetters(props[i]); } _window2.default['__ready__' + id] = function (_flvPlayer) { mediaElement.flvPlayer = flvPlayer = _flvPlayer; var flvEvents = flvjs.Events, assignEvents = function assignEvents(eventName) { if (eventName === 'loadedmetadata') { flvPlayer.unload(); flvPlayer.detachMediaElement(); flvPlayer.attachMediaElement(node); flvPlayer.load(); } node.addEventListener(eventName, attachNativeEvents); }; for (var _i = 0, _total = events.length; _i < _total; _i++) { assignEvents(events[_i]); } var assignFlvEvents = function assignFlvEvents(name, data) { if (name === 'error') { var message = data[0] + ': ' + data[1] + ' ' + data[2].msg; mediaElement.generateError(message, node.src); } else { var _event = (0, _general.createEvent)(name, mediaElement); _event.data = data; mediaElement.dispatchEvent(_event); } }; var _loop = function _loop(eventType) { if (flvEvents.hasOwnProperty(eventType)) { flvPlayer.on(flvEvents[eventType], function () { for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return assignFlvEvents(flvEvents[eventType], args); }); } }; for (var eventType in flvEvents) { _loop(eventType); } }; if (mediaFiles && mediaFiles.length > 0) { for (var _i2 = 0, _total2 = mediaFiles.length; _i2 < _total2; _i2++) { if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i2].type)) { node.setAttribute('src', mediaFiles[_i2].src); break; } } } node.setAttribute('id', id); originalNode.parentNode.insertBefore(node, originalNode); originalNode.autoplay = false; originalNode.style.display = 'none'; var flvOptions = {}; flvOptions.type = 'flv'; flvOptions.url = node.src; flvOptions.cors = options.flv.cors; flvOptions.debug = options.flv.debug; flvOptions.path = options.flv.path; var flvConfigs = options.flv.configs; node.setSize = function (width, height) { node.style.width = width + 'px'; node.style.height = height + 'px'; return node; }; node.hide = function () { if (flvPlayer !== null) { flvPlayer.pause(); } node.style.display = 'none'; return node; }; node.show = function () { node.style.display = ''; return node; }; node.destroy = function () { if (flvPlayer !== null) { flvPlayer.destroy(); } }; var event = (0, _general.createEvent)('rendererready', node); mediaElement.dispatchEvent(event); mediaElement.promises.push(NativeFlv.load({ options: flvOptions, configs: flvConfigs, id: id })); return node; } }; _media.typeChecks.push(function (url) { return ~url.toLowerCase().indexOf('.flv') ? 'video/flv' : null; }); _renderer.renderer.add(FlvNativeRenderer); },{"16":16,"17":17,"18":18,"19":19,"3":3,"7":7,"8":8}],13:[function(_dereq_,module,exports){ 'use strict'; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var _window = _dereq_(3); var _window2 = _interopRequireDefault(_window); var _mejs = _dereq_(7); var _mejs2 = _interopRequireDefault(_mejs); var _renderer = _dereq_(8); var _general = _dereq_(18); var _constants = _dereq_(16); var _media = _dereq_(19); var _dom = _dereq_(17); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var NativeHls = { promise: null, load: function load(settings) { if (typeof Hls !== 'undefined') { NativeHls.promise = new Promise(function (resolve) { resolve(); }).then(function () { NativeHls._createPlayer(settings); }); } else { settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.jsdelivr.net/npm/hls.js@latest'; NativeHls.promise = NativeHls.promise || (0, _dom.loadScript)(settings.options.path); NativeHls.promise.then(function () { NativeHls._createPlayer(settings); }); } return NativeHls.promise; }, _createPlayer: function _createPlayer(settings) { var player = new Hls(settings.options); _window2.default['__ready__' + settings.id](player); return player; } }; var HlsNativeRenderer = { name: 'native_hls', options: { prefix: 'native_hls', hls: { path: 'https://cdn.jsdelivr.net/npm/hls.js@latest', autoStartLoad: false, debug: false } }, canPlayType: function canPlayType(type) { return _constants.HAS_MSE && ['application/x-mpegurl', 'application/vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase()) > -1; }, create: function create(mediaElement, options, mediaFiles) { var originalNode = mediaElement.originalNode, id = mediaElement.id + '_' + options.prefix, preload = originalNode.getAttribute('preload'), autoplay = originalNode.autoplay; var hlsPlayer = null, node = null, index = 0, total = mediaFiles.length; node = originalNode.cloneNode(true); options = Object.assign(options, mediaElement.options); options.hls.autoStartLoad = preload && preload !== 'none' || autoplay; var props = _mejs2.default.html5media.properties, events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) { return e !== 'error'; }), attachNativeEvents = function attachNativeEvents(e) { var event = (0, _general.createEvent)(e.type, mediaElement); mediaElement.dispatchEvent(event); }, assignGettersSetters = function assignGettersSetters(propName) { var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); node['get' + capName] = function () { return hlsPlayer !== null ? node[propName] : null; }; node['set' + capName] = function (value) { if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) { if (propName === 'src') { node[propName] = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value; if (hlsPlayer !== null) { hlsPlayer.destroy(); for (var i = 0, _total = events.length; i < _total; i++) { node.removeEventListener(events[i], attachNativeEvents); } hlsPlayer = NativeHls._createPlayer({ options: options.hls, id: id }); hlsPlayer.loadSource(value); hlsPlayer.attachMedia(node); } } else { node[propName] = value; } } }; }; for (var i = 0, _total2 = props.length; i < _total2; i++) { assignGettersSetters(props[i]); } _window2.default['__ready__' + id] = function (_hlsPlayer) { mediaElement.hlsPlayer = hlsPlayer = _hlsPlayer; var hlsEvents = Hls.Events, assignEvents = function assignEvents(eventName) { if (eventName === 'loadedmetadata') { var url = mediaElement.originalNode.src; hlsPlayer.detachMedia(); hlsPlayer.loadSource(url); hlsPlayer.attachMedia(node); } node.addEventListener(eventName, attachNativeEvents); }; for (var _i = 0, _total3 = events.length; _i < _total3; _i++) { assignEvents(events[_i]); } var recoverDecodingErrorDate = void 0, recoverSwapAudioCodecDate = void 0; var assignHlsEvents = function assignHlsEvents(name, data) { if (name === 'hlsError') { console.warn(data); data = data[1]; if (data.fatal) { switch (data.type) { case 'mediaError': var now = new Date().getTime(); if (!recoverDecodingErrorDate || now - recoverDecodingErrorDate > 3000) { recoverDecodingErrorDate = new Date().getTime(); hlsPlayer.recoverMediaError(); } else if (!recoverSwapAudioCodecDate || now - recoverSwapAudioCodecDate > 3000) { recoverSwapAudioCodecDate = new Date().getTime(); console.warn('Attempting to swap Audio Codec and recover from media error'); hlsPlayer.swapAudioCodec(); hlsPlayer.recoverMediaError(); } else { var message = 'Cannot recover, last media error recovery failed'; mediaElement.generateError(message, node.src); console.error(message); } break; case 'networkError': if (data.details === 'manifestLoadError') { if (index < total && mediaFiles[index + 1] !== undefined) { node.setSrc(mediaFiles[index++].src); node.load(); node.play(); } else { var _message = 'Network error'; mediaElement.generateError(_message, mediaFiles); console.error(_message); } } else { var _message2 = 'Network error'; mediaElement.generateError(_message2, mediaFiles); console.error(_message2); } break; default: hlsPlayer.destroy(); break; } return; } } var event = (0, _general.createEvent)(name, mediaElement); event.data = data; mediaElement.dispatchEvent(event); }; var _loop = function _loop(eventType) { if (hlsEvents.hasOwnProperty(eventType)) { hlsPlayer.on(hlsEvents[eventType], function () { for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return assignHlsEvents(hlsEvents[eventType], args); }); } }; for (var eventType in hlsEvents) { _loop(eventType); } }; if (total > 0) { for (; index < total; index++) { if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[index].type)) { node.setAttribute('src', mediaFiles[index].src); break; } } } if (preload !== 'auto' && !autoplay) { node.addEventListener('play', function () { if (hlsPlayer !== null) { hlsPlayer.startLoad(); } }); node.addEventListener('pause', function () { if (hlsPlayer !== null) { hlsPlayer.stopLoad(); } }); } node.setAttribute('id', id); originalNode.parentNode.insertBefore(node, originalNode); originalNode.autoplay = false; originalNode.style.display = 'none'; node.setSize = function (width, height) { node.style.width = width + 'px'; node.style.height = height + 'px'; return node; }; node.hide = function () { node.pause(); node.style.display = 'none'; return node; }; node.show = function () { node.style.display = ''; return node; }; node.destroy = function () { if (hlsPlayer !== null) { hlsPlayer.stopLoad(); hlsPlayer.destroy(); } }; var event = (0, _general.createEvent)('rendererready', node); mediaElement.dispatchEvent(event); mediaElement.promises.push(NativeHls.load({ options: options.hls, id: id })); return node; } }; _media.typeChecks.push(function (url) { return ~url.toLowerCase().indexOf('.m3u8') ? 'application/x-mpegURL' : null; }); _renderer.renderer.add(HlsNativeRenderer); },{"16":16,"17":17,"18":18,"19":19,"3":3,"7":7,"8":8}],14:[function(_dereq_,module,exports){ 'use strict'; var _window = _dereq_(3); var _window2 = _interopRequireDefault(_window); var _document = _dereq_(2); var _document2 = _interopRequireDefault(_document); var _mejs = _dereq_(7); var _mejs2 = _interopRequireDefault(_mejs); var _renderer = _dereq_(8); var _general = _dereq_(18); var _constants = _dereq_(16); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var HtmlMediaElement = { name: 'html5', options: { prefix: 'html5' }, canPlayType: function canPlayType(type) { var mediaElement = _document2.default.createElement('video'); if (_constants.IS_ANDROID && /\/mp(3|4)$/i.test(type) || ~['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase()) && _constants.SUPPORTS_NATIVE_HLS) { return 'yes'; } else if (mediaElement.canPlayType) { return mediaElement.canPlayType(type.toLowerCase()).replace(/no/, ''); } else { return ''; } }, create: function create(mediaElement, options, mediaFiles) { var id = mediaElement.id + '_' + options.prefix; var isActive = false; var node = null; if (mediaElement.originalNode === undefined || mediaElement.originalNode === null) { node = _document2.default.createElement('audio'); mediaElement.appendChild(node); } else { node = mediaElement.originalNode; } node.setAttribute('id', id); var props = _mejs2.default.html5media.properties, assignGettersSetters = function assignGettersSetters(propName) { var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); node['get' + capName] = function () { return node[propName]; }; node['set' + capName] = function (value) { if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) { node[propName] = value; } }; }; for (var i = 0, _total = props.length; i < _total; i++) { assignGettersSetters(props[i]); } var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) { return e !== 'error'; }), assignEvents = function assignEvents(eventName) { node.addEventListener(eventName, function (e) { if (isActive) { var _event = (0, _general.createEvent)(e.type, e.target); mediaElement.dispatchEvent(_event); } }); }; for (var _i = 0, _total2 = events.length; _i < _total2; _i++) { assignEvents(events[_i]); } node.setSize = function (width, height) { node.style.width = width + 'px'; node.style.height = height + 'px'; return node; }; node.hide = function () { isActive = false; node.style.display = 'none'; return node; }; node.show = function () { isActive = true; node.style.display = ''; return node; }; var index = 0, total = mediaFiles.length; if (total > 0) { for (; index < total; index++) { if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[index].type)) { node.setAttribute('src', mediaFiles[index].src); break; } } } node.addEventListener('error', function (e) { if (e && e.target && e.target.error && e.target.error.code === 4 && isActive) { if (index < total && mediaFiles[index + 1] !== undefined) { node.src = mediaFiles[index++].src; node.load(); node.play(); } else { mediaElement.generateError('Media error: Format(s) not supported or source(s) not found', mediaFiles); } } }); var event = (0, _general.createEvent)('rendererready', node); mediaElement.dispatchEvent(event); return node; } }; _window2.default.HtmlMediaElement = _mejs2.default.HtmlMediaElement = HtmlMediaElement; _renderer.renderer.add(HtmlMediaElement); },{"16":16,"18":18,"2":2,"3":3,"7":7,"8":8}],15:[function(_dereq_,module,exports){ 'use strict'; var _window = _dereq_(3); var _window2 = _interopRequireDefault(_window); var _document = _dereq_(2); var _document2 = _interopRequireDefault(_document); var _mejs = _dereq_(7); var _mejs2 = _interopRequireDefault(_mejs); var _renderer = _dereq_(8); var _general = _dereq_(18); var _media = _dereq_(19); var _dom = _dereq_(17); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var YouTubeApi = { isIframeStarted: false, isIframeLoaded: false, iframeQueue: [], enqueueIframe: function enqueueIframe(settings) { YouTubeApi.isLoaded = typeof YT !== 'undefined' && YT.loaded; if (YouTubeApi.isLoaded) { YouTubeApi.createIframe(settings); } else { YouTubeApi.loadIframeApi(); YouTubeApi.iframeQueue.push(settings); } }, loadIframeApi: function loadIframeApi() { if (!YouTubeApi.isIframeStarted) { (0, _dom.loadScript)('https://www.youtube.com/player_api'); YouTubeApi.isIframeStarted = true; } }, iFrameReady: function iFrameReady() { YouTubeApi.isLoaded = true; YouTubeApi.isIframeLoaded = true; while (YouTubeApi.iframeQueue.length > 0) { var settings = YouTubeApi.iframeQueue.pop(); YouTubeApi.createIframe(settings); } }, createIframe: function createIframe(settings) { return new YT.Player(settings.containerId, settings); }, getYouTubeId: function getYouTubeId(url) { var youTubeId = ''; if (url.indexOf('?') > 0) { youTubeId = YouTubeApi.getYouTubeIdFromParam(url); if (youTubeId === '') { youTubeId = YouTubeApi.getYouTubeIdFromUrl(url); } } else { youTubeId = YouTubeApi.getYouTubeIdFromUrl(url); } var id = youTubeId.substring(youTubeId.lastIndexOf('/') + 1); youTubeId = id.split('?'); return youTubeId[0]; }, getYouTubeIdFromParam: function getYouTubeIdFromParam(url) { if (url === undefined || url === null || !url.trim().length) { return null; } var parts = url.split('?'), parameters = parts[1].split('&'); var youTubeId = ''; for (var i = 0, total = parameters.length; i < total; i++) { var paramParts = parameters[i].split('='); if (paramParts[0] === 'v') { youTubeId = paramParts[1]; break; } } return youTubeId; }, getYouTubeIdFromUrl: function getYouTubeIdFromUrl(url) { if (url === undefined || url === null || !url.trim().length) { return null; } var parts = url.split('?'); url = parts[0]; return url.substring(url.lastIndexOf('/') + 1); }, getYouTubeNoCookieUrl: function getYouTubeNoCookieUrl(url) { if (url === undefined || url === null || !url.trim().length || url.indexOf('//www.youtube') === -1) { return url; } var parts = url.split('/'); parts[2] = parts[2].replace('.com', '-nocookie.com'); return parts.join('/'); } }; var YouTubeIframeRenderer = { name: 'youtube_iframe', options: { prefix: 'youtube_iframe', youtube: { autoplay: 0, controls: 0, disablekb: 1, end: 0, loop: 0, modestbranding: 0, playsinline: 0, rel: 0, showinfo: 0, start: 0, iv_load_policy: 3, nocookie: false, imageQuality: null } }, canPlayType: function canPlayType(type) { return ~['video/youtube', 'video/x-youtube'].indexOf(type.toLowerCase()); }, create: function create(mediaElement, options, mediaFiles) { var youtube = {}, apiStack = [], readyState = 4; var youTubeApi = null, paused = true, ended = false, youTubeIframe = null, volume = 1; youtube.options = options; youtube.id = mediaElement.id + '_' + options.prefix; youtube.mediaElement = mediaElement; var props = _mejs2.default.html5media.properties, assignGettersSetters = function assignGettersSetters(propName) { var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); youtube['get' + capName] = function () { if (youTubeApi !== null) { var value = null; switch (propName) { case 'currentTime': return youTubeApi.getCurrentTime(); case 'duration': return youTubeApi.getDuration(); case 'volume': volume = youTubeApi.getVolume() / 100; return volume; case 'playbackRate': return youTubeApi.getPlaybackRate(); case 'paused': return paused; case 'ended': return ended; case 'muted': return youTubeApi.isMuted(); case 'buffered': var percentLoaded = youTubeApi.getVideoLoadedFraction(), duration = youTubeApi.getDuration(); return { start: function start() { return 0; }, end: function end() { return percentLoaded * duration; }, length: 1 }; case 'src': return youTubeApi.getVideoUrl(); case 'readyState': return readyState; } return value; } else { return null; } }; youtube['set' + capName] = function (value) { if (youTubeApi !== null) { switch (propName) { case 'src': var url = typeof value === 'string' ? value : value[0].src, _videoId = YouTubeApi.getYouTubeId(url); if (mediaElement.originalNode.autoplay) { youTubeApi.loadVideoById(_videoId); } else { youTubeApi.cueVideoById(_videoId); } break; case 'currentTime': youTubeApi.seekTo(value); break; case 'muted': if (value) { youTubeApi.mute(); } else { youTubeApi.unMute(); } setTimeout(function () { var event = (0, _general.createEvent)('volumechange', youtube); mediaElement.dispatchEvent(event); }, 50); break; case 'volume': volume = value; youTubeApi.setVolume(value * 100); setTimeout(function () { var event = (0, _general.createEvent)('volumechange', youtube); mediaElement.dispatchEvent(event); }, 50); break; case 'playbackRate': youTubeApi.setPlaybackRate(value); setTimeout(function () { var event = (0, _general.createEvent)('ratechange', youtube); mediaElement.dispatchEvent(event); }, 50); break; case 'readyState': var event = (0, _general.createEvent)('canplay', youtube); mediaElement.dispatchEvent(event); break; default: break; } } else { apiStack.push({ type: 'set', propName: propName, value: value }); } }; }; for (var i = 0, total = props.length; i < total; i++) { assignGettersSetters(props[i]); } var methods = _mejs2.default.html5media.methods, assignMethods = function assignMethods(methodName) { youtube[methodName] = function () { if (youTubeApi !== null) { switch (methodName) { case 'play': paused = false; return youTubeApi.playVideo(); case 'pause': paused = true; return youTubeApi.pauseVideo(); case 'load': return null; } } else { apiStack.push({ type: 'call', methodName: methodName }); } }; }; for (var _i = 0, _total = methods.length; _i < _total; _i++) { assignMethods(methods[_i]); } var errorHandler = function errorHandler(error) { var message = ''; switch (error.data) { case 2: message = 'The request contains an invalid parameter value. Verify that video ID has 11 characters and that contains no invalid characters, such as exclamation points or asterisks.'; break; case 5: message = 'The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.'; break; case 100: message = 'The video requested was not found. Either video has been removed or has been marked as private.'; break; case 101: case 105: message = 'The owner of the requested video does not allow it to be played in embedded players.'; break; default: message = 'Unknown error.'; break; } mediaElement.generateError('Code ' + error.data + ': ' + message, mediaFiles); }; var youtubeContainer = _document2.default.createElement('div'); youtubeContainer.id = youtube.id; if (youtube.options.youtube.nocookie) { mediaElement.originalNode.src = YouTubeApi.getYouTubeNoCookieUrl(mediaFiles[0].src); } mediaElement.originalNode.parentNode.insertBefore(youtubeContainer, mediaElement.originalNode); mediaElement.originalNode.style.display = 'none'; var isAudio = mediaElement.originalNode.tagName.toLowerCase() === 'audio', height = isAudio ? '1' : mediaElement.originalNode.height, width = isAudio ? '1' : mediaElement.originalNode.width, videoId = YouTubeApi.getYouTubeId(mediaFiles[0].src), youtubeSettings = { id: youtube.id, containerId: youtubeContainer.id, videoId: videoId, height: height, width: width, host: youtube.options.youtube && youtube.options.youtube.nocookie ? 'https://www.youtube-nocookie.com' : undefined, playerVars: Object.assign({ controls: 0, rel: 0, disablekb: 1, showinfo: 0, modestbranding: 0, html5: 1, iv_load_policy: 3 }, youtube.options.youtube), origin: _window2.default.location.host, events: { onReady: function onReady(e) { mediaElement.youTubeApi = youTubeApi = e.target; mediaElement.youTubeState = { paused: true, ended: false }; if (apiStack.length) { for (var _i2 = 0, _total2 = apiStack.length; _i2 < _total2; _i2++) { var stackItem = apiStack[_i2]; if (stackItem.type === 'set') { var propName = stackItem.propName, capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); youtube['set' + capName](stackItem.value); } else if (stackItem.type === 'call') { youtube[stackItem.methodName](); } } } youTubeIframe = youTubeApi.getIframe(); if (mediaElement.originalNode.muted) { youTubeApi.mute(); } var events = ['mouseover', 'mouseout'], assignEvents = function assignEvents(e) { var newEvent = (0, _general.createEvent)(e.type, youtube); mediaElement.dispatchEvent(newEvent); }; for (var _i3 = 0, _total3 = events.length; _i3 < _total3; _i3++) { youTubeIframe.addEventListener(events[_i3], assignEvents, false); } var initEvents = ['rendererready', 'loadedmetadata', 'loadeddata', 'canplay']; for (var _i4 = 0, _total4 = initEvents.length; _i4 < _total4; _i4++) { var event = (0, _general.createEvent)(initEvents[_i4], youtube); mediaElement.dispatchEvent(event); } }, onStateChange: function onStateChange(e) { var events = []; switch (e.data) { case -1: events = ['loadedmetadata']; paused = true; ended = false; break; case 0: events = ['ended']; paused = false; ended = !youtube.options.youtube.loop; if (!youtube.options.youtube.loop) { youtube.stopInterval(); } break; case 1: events = ['play', 'playing']; paused = false; ended = false; youtube.startInterval(); break; case 2: events = ['pause']; paused = true; ended = false; youtube.stopInterval(); break; case 3: events = ['progress']; ended = false; break; case 5: events = ['loadeddata', 'loadedmetadata', 'canplay']; paused = true; ended = false; break; } for (var _i5 = 0, _total5 = events.length; _i5 < _total5; _i5++) { var event = (0, _general.createEvent)(events[_i5], youtube); mediaElement.dispatchEvent(event); } }, onError: function onError(e) { return errorHandler(e); } } }; if (isAudio || mediaElement.originalNode.hasAttribute('playsinline')) { youtubeSettings.playerVars.playsinline = 1; } if (mediaElement.originalNode.controls) { youtubeSettings.playerVars.controls = 1; } if (mediaElement.originalNode.autoplay) { youtubeSettings.playerVars.autoplay = 1; } if (mediaElement.originalNode.loop) { youtubeSettings.playerVars.loop = 1; } if ((youtubeSettings.playerVars.loop && parseInt(youtubeSettings.playerVars.loop, 10) === 1 || mediaElement.originalNode.src.indexOf('loop=') > -1) && !youtubeSettings.playerVars.playlist && mediaElement.originalNode.src.indexOf('playlist=') === -1) { youtubeSettings.playerVars.playlist = YouTubeApi.getYouTubeId(mediaElement.originalNode.src); } YouTubeApi.enqueueIframe(youtubeSettings); youtube.onEvent = function (eventName, player, _youTubeState) { if (_youTubeState !== null && _youTubeState !== undefined) { mediaElement.youTubeState = _youTubeState; } }; youtube.setSize = function (width, height) { if (youTubeApi !== null) { youTubeApi.setSize(width, height); } }; youtube.hide = function () { youtube.stopInterval(); youtube.pause(); if (youTubeIframe) { youTubeIframe.style.display = 'none'; } }; youtube.show = function () { if (youTubeIframe) { youTubeIframe.style.display = ''; } }; youtube.destroy = function () { youTubeApi.destroy(); }; youtube.interval = null; youtube.startInterval = function () { youtube.interval = setInterval(function () { var event = (0, _general.createEvent)('timeupdate', youtube); mediaElement.dispatchEvent(event); }, 250); }; youtube.stopInterval = function () { if (youtube.interval) { clearInterval(youtube.interval); } }; youtube.getPosterUrl = function () { var quality = options.youtube.imageQuality, resolutions = ['default', 'hqdefault', 'mqdefault', 'sddefault', 'maxresdefault'], id = YouTubeApi.getYouTubeId(mediaElement.originalNode.src); return quality && resolutions.indexOf(quality) > -1 && id ? 'https://img.youtube.com/vi/' + id + '/' + quality + '.jpg' : ''; }; return youtube; } }; _window2.default.onYouTubePlayerAPIReady = function () { YouTubeApi.iFrameReady(); }; _media.typeChecks.push(function (url) { return (/\/\/(www\.youtube|youtu\.?be)/i.test(url) ? 'video/x-youtube' : null ); }); _renderer.renderer.add(YouTubeIframeRenderer); },{"17":17,"18":18,"19":19,"2":2,"3":3,"7":7,"8":8}],16:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.cancelFullScreen = exports.requestFullScreen = exports.isFullScreen = exports.FULLSCREEN_EVENT_NAME = exports.HAS_NATIVE_FULLSCREEN_ENABLED = exports.HAS_TRUE_NATIVE_FULLSCREEN = exports.HAS_IOS_FULLSCREEN = exports.HAS_MS_NATIVE_FULLSCREEN = exports.HAS_MOZ_NATIVE_FULLSCREEN = exports.HAS_WEBKIT_NATIVE_FULLSCREEN = exports.HAS_NATIVE_FULLSCREEN = exports.SUPPORTS_NATIVE_HLS = exports.SUPPORT_PASSIVE_EVENT = exports.SUPPORT_POINTER_EVENTS = exports.HAS_MSE = exports.IS_STOCK_ANDROID = exports.IS_SAFARI = exports.IS_FIREFOX = exports.IS_CHROME = exports.IS_EDGE = exports.IS_IE = exports.IS_ANDROID = exports.IS_IOS = exports.IS_IPOD = exports.IS_IPHONE = exports.IS_IPAD = exports.UA = exports.NAV = undefined; var _window = _dereq_(3); var _window2 = _interopRequireDefault(_window); var _document = _dereq_(2); var _document2 = _interopRequireDefault(_document); var _mejs = _dereq_(7); var _mejs2 = _interopRequireDefault(_mejs); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var NAV = exports.NAV = _window2.default.navigator; var UA = exports.UA = NAV.userAgent.toLowerCase(); var IS_IPAD = exports.IS_IPAD = /ipad/i.test(UA) && !_window2.default.MSStream; var IS_IPHONE = exports.IS_IPHONE = /iphone/i.test(UA) && !_window2.default.MSStream; var IS_IPOD = exports.IS_IPOD = /ipod/i.test(UA) && !_window2.default.MSStream; var IS_IOS = exports.IS_IOS = /ipad|iphone|ipod/i.test(UA) && !_window2.default.MSStream; var IS_ANDROID = exports.IS_ANDROID = /android/i.test(UA); var IS_IE = exports.IS_IE = /(trident|microsoft)/i.test(NAV.appName); var IS_EDGE = exports.IS_EDGE = 'msLaunchUri' in NAV && !('documentMode' in _document2.default); var IS_CHROME = exports.IS_CHROME = /chrome/i.test(UA); var IS_FIREFOX = exports.IS_FIREFOX = /firefox/i.test(UA); var IS_SAFARI = exports.IS_SAFARI = /safari/i.test(UA) && !IS_CHROME; var IS_STOCK_ANDROID = exports.IS_STOCK_ANDROID = /^mozilla\/\d+\.\d+\s\(linux;\su;/i.test(UA); var HAS_MSE = exports.HAS_MSE = 'MediaSource' in _window2.default; var SUPPORT_POINTER_EVENTS = exports.SUPPORT_POINTER_EVENTS = function () { var element = _document2.default.createElement('x'), documentElement = _document2.default.documentElement, getComputedStyle = _window2.default.getComputedStyle; if (!('pointerEvents' in element.style)) { return false; } element.style.pointerEvents = 'auto'; element.style.pointerEvents = 'x'; documentElement.appendChild(element); var supports = getComputedStyle && (getComputedStyle(element, '') || {}).pointerEvents === 'auto'; element.remove(); return !!supports; }(); var SUPPORT_PASSIVE_EVENT = exports.SUPPORT_PASSIVE_EVENT = function () { var supportsPassive = false; try { var opts = Object.defineProperty({}, 'passive', { get: function get() { supportsPassive = true; } }); _window2.default.addEventListener('test', null, opts); } catch (e) {} return supportsPassive; }(); var html5Elements = ['source', 'track', 'audio', 'video']; var video = void 0; for (var i = 0, total = html5Elements.length; i < total; i++) { video = _document2.default.createElement(html5Elements[i]); } var SUPPORTS_NATIVE_HLS = exports.SUPPORTS_NATIVE_HLS = IS_SAFARI || IS_IE && /edge/i.test(UA); var hasiOSFullScreen = video.webkitEnterFullscreen !== undefined; var hasNativeFullscreen = video.requestFullscreen !== undefined; if (hasiOSFullScreen && /mac os x 10_5/i.test(UA)) { hasNativeFullscreen = false; hasiOSFullScreen = false; } var hasWebkitNativeFullScreen = video.webkitRequestFullScreen !== undefined; var hasMozNativeFullScreen = video.mozRequestFullScreen !== undefined; var hasMsNativeFullScreen = video.msRequestFullscreen !== undefined; var hasTrueNativeFullScreen = hasWebkitNativeFullScreen || hasMozNativeFullScreen || hasMsNativeFullScreen; var nativeFullScreenEnabled = hasTrueNativeFullScreen; var fullScreenEventName = ''; var isFullScreen = void 0, requestFullScreen = void 0, cancelFullScreen = void 0; if (hasMozNativeFullScreen) { nativeFullScreenEnabled = _document2.default.mozFullScreenEnabled; } else if (hasMsNativeFullScreen) { nativeFullScreenEnabled = _document2.default.msFullscreenEnabled; } if (IS_CHROME) { hasiOSFullScreen = false; } if (hasTrueNativeFullScreen) { if (hasWebkitNativeFullScreen) { fullScreenEventName = 'webkitfullscreenchange'; } else if (hasMozNativeFullScreen) { fullScreenEventName = 'fullscreenchange'; } else if (hasMsNativeFullScreen) { fullScreenEventName = 'MSFullscreenChange'; } exports.isFullScreen = isFullScreen = function isFullScreen() { if (hasMozNativeFullScreen) { return _document2.default.mozFullScreen; } else if (hasWebkitNativeFullScreen) { return _document2.default.webkitIsFullScreen; } else if (hasMsNativeFullScreen) { return _document2.default.msFullscreenElement !== null; } }; exports.requestFullScreen = requestFullScreen = function requestFullScreen(el) { if (hasWebkitNativeFullScreen) { el.webkitRequestFullScreen(); } else if (hasMozNativeFullScreen) { el.mozRequestFullScreen(); } else if (hasMsNativeFullScreen) { el.msRequestFullscreen(); } }; exports.cancelFullScreen = cancelFullScreen = function cancelFullScreen() { if (hasWebkitNativeFullScreen) { _document2.default.webkitCancelFullScreen(); } else if (hasMozNativeFullScreen) { _document2.default.mozCancelFullScreen(); } else if (hasMsNativeFullScreen) { _document2.default.msExitFullscreen(); } }; } var HAS_NATIVE_FULLSCREEN = exports.HAS_NATIVE_FULLSCREEN = hasNativeFullscreen; var HAS_WEBKIT_NATIVE_FULLSCREEN = exports.HAS_WEBKIT_NATIVE_FULLSCREEN = hasWebkitNativeFullScreen; var HAS_MOZ_NATIVE_FULLSCREEN = exports.HAS_MOZ_NATIVE_FULLSCREEN = hasMozNativeFullScreen; var HAS_MS_NATIVE_FULLSCREEN = exports.HAS_MS_NATIVE_FULLSCREEN = hasMsNativeFullScreen; var HAS_IOS_FULLSCREEN = exports.HAS_IOS_FULLSCREEN = hasiOSFullScreen; var HAS_TRUE_NATIVE_FULLSCREEN = exports.HAS_TRUE_NATIVE_FULLSCREEN = hasTrueNativeFullScreen; var HAS_NATIVE_FULLSCREEN_ENABLED = exports.HAS_NATIVE_FULLSCREEN_ENABLED = nativeFullScreenEnabled; var FULLSCREEN_EVENT_NAME = exports.FULLSCREEN_EVENT_NAME = fullScreenEventName; exports.isFullScreen = isFullScreen; exports.requestFullScreen = requestFullScreen; exports.cancelFullScreen = cancelFullScreen; _mejs2.default.Features = _mejs2.default.Features || {}; _mejs2.default.Features.isiPad = IS_IPAD; _mejs2.default.Features.isiPod = IS_IPOD; _mejs2.default.Features.isiPhone = IS_IPHONE; _mejs2.default.Features.isiOS = _mejs2.default.Features.isiPhone || _mejs2.default.Features.isiPad; _mejs2.default.Features.isAndroid = IS_ANDROID; _mejs2.default.Features.isIE = IS_IE; _mejs2.default.Features.isEdge = IS_EDGE; _mejs2.default.Features.isChrome = IS_CHROME; _mejs2.default.Features.isFirefox = IS_FIREFOX; _mejs2.default.Features.isSafari = IS_SAFARI; _mejs2.default.Features.isStockAndroid = IS_STOCK_ANDROID; _mejs2.default.Features.hasMSE = HAS_MSE; _mejs2.default.Features.supportsNativeHLS = SUPPORTS_NATIVE_HLS; _mejs2.default.Features.supportsPointerEvents = SUPPORT_POINTER_EVENTS; _mejs2.default.Features.supportsPassiveEvent = SUPPORT_PASSIVE_EVENT; _mejs2.default.Features.hasiOSFullScreen = HAS_IOS_FULLSCREEN; _mejs2.default.Features.hasNativeFullscreen = HAS_NATIVE_FULLSCREEN; _mejs2.default.Features.hasWebkitNativeFullScreen = HAS_WEBKIT_NATIVE_FULLSCREEN; _mejs2.default.Features.hasMozNativeFullScreen = HAS_MOZ_NATIVE_FULLSCREEN; _mejs2.default.Features.hasMsNativeFullScreen = HAS_MS_NATIVE_FULLSCREEN; _mejs2.default.Features.hasTrueNativeFullScreen = HAS_TRUE_NATIVE_FULLSCREEN; _mejs2.default.Features.nativeFullScreenEnabled = HAS_NATIVE_FULLSCREEN_ENABLED; _mejs2.default.Features.fullScreenEventName = FULLSCREEN_EVENT_NAME; _mejs2.default.Features.isFullScreen = isFullScreen; _mejs2.default.Features.requestFullScreen = requestFullScreen; _mejs2.default.Features.cancelFullScreen = cancelFullScreen; },{"2":2,"3":3,"7":7}],17:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.removeClass = exports.addClass = exports.hasClass = undefined; exports.loadScript = loadScript; exports.offset = offset; exports.toggleClass = toggleClass; exports.fadeOut = fadeOut; exports.fadeIn = fadeIn; exports.siblings = siblings; exports.visible = visible; exports.ajax = ajax; var _window = _dereq_(3); var _window2 = _interopRequireDefault(_window); var _document = _dereq_(2); var _document2 = _interopRequireDefault(_document); var _mejs = _dereq_(7); var _mejs2 = _interopRequireDefault(_mejs); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function loadScript(url) { return new Promise(function (resolve, reject) { var script = _document2.default.createElement('script'); script.src = url; script.async = true; script.onload = function () { script.remove(); resolve(); }; script.onerror = function () { script.remove(); reject(); }; _document2.default.head.appendChild(script); }); } function offset(el) { var rect = el.getBoundingClientRect(), scrollLeft = _window2.default.pageXOffset || _document2.default.documentElement.scrollLeft, scrollTop = _window2.default.pageYOffset || _document2.default.documentElement.scrollTop; return { top: rect.top + scrollTop, left: rect.left + scrollLeft }; } var hasClassMethod = void 0, addClassMethod = void 0, removeClassMethod = void 0; if ('classList' in _document2.default.documentElement) { hasClassMethod = function hasClassMethod(el, className) { return el.classList !== undefined && el.classList.contains(className); }; addClassMethod = function addClassMethod(el, className) { return el.classList.add(className); }; removeClassMethod = function removeClassMethod(el, className) { return el.classList.remove(className); }; } else { hasClassMethod = function hasClassMethod(el, className) { return new RegExp('\\b' + className + '\\b').test(el.className); }; addClassMethod = function addClassMethod(el, className) { if (!hasClass(el, className)) { el.className += ' ' + className; } }; removeClassMethod = function removeClassMethod(el, className) { el.className = el.className.replace(new RegExp('\\b' + className + '\\b', 'g'), ''); }; } var hasClass = exports.hasClass = hasClassMethod; var addClass = exports.addClass = addClassMethod; var removeClass = exports.removeClass = removeClassMethod; function toggleClass(el, className) { hasClass(el, className) ? removeClass(el, className) : addClass(el, className); } function fadeOut(el) { var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400; var callback = arguments[2]; if (!el.style.opacity) { el.style.opacity = 1; } var start = null; _window2.default.requestAnimationFrame(function animate(timestamp) { start = start || timestamp; var progress = timestamp - start; var opacity = parseFloat(1 - progress / duration, 2); el.style.opacity = opacity < 0 ? 0 : opacity; if (progress > duration) { if (callback && typeof callback === 'function') { callback(); } } else { _window2.default.requestAnimationFrame(animate); } }); } function fadeIn(el) { var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400; var callback = arguments[2]; if (!el.style.opacity) { el.style.opacity = 0; } var start = null; _window2.default.requestAnimationFrame(function animate(timestamp) { start = start || timestamp; var progress = timestamp - start; var opacity = parseFloat(progress / duration, 2); el.style.opacity = opacity > 1 ? 1 : opacity; if (progress > duration) { if (callback && typeof callback === 'function') { callback(); } } else { _window2.default.requestAnimationFrame(animate); } }); } function siblings(el, filter) { var siblings = []; el = el.parentNode.firstChild; do { if (!filter || filter(el)) { siblings.push(el); } } while (el = el.nextSibling); return siblings; } function visible(elem) { if (elem.getClientRects !== undefined && elem.getClientRects === 'function') { return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length); } return !!(elem.offsetWidth || elem.offsetHeight); } function ajax(url, dataType, success, error) { var xhr = _window2.default.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'); var type = 'application/x-www-form-urlencoded; charset=UTF-8', completed = false, accept = '*/'.concat('*'); switch (dataType) { case 'text': type = 'text/plain'; break; case 'json': type = 'application/json, text/javascript'; break; case 'html': type = 'text/html'; break; case 'xml': type = 'application/xml, text/xml'; break; } if (type !== 'application/x-www-form-urlencoded') { accept = type + ', */*; q=0.01'; } if (xhr) { xhr.open('GET', url, true); xhr.setRequestHeader('Accept', accept); xhr.onreadystatechange = function () { if (completed) { return; } if (xhr.readyState === 4) { if (xhr.status === 200) { completed = true; var data = void 0; switch (dataType) { case 'json': data = JSON.parse(xhr.responseText); break; case 'xml': data = xhr.responseXML; break; default: data = xhr.responseText; break; } success(data); } else if (typeof error === 'function') { error(xhr.status); } } }; xhr.send(); } } _mejs2.default.Utils = _mejs2.default.Utils || {}; _mejs2.default.Utils.offset = offset; _mejs2.default.Utils.hasClass = hasClass; _mejs2.default.Utils.addClass = addClass; _mejs2.default.Utils.removeClass = removeClass; _mejs2.default.Utils.toggleClass = toggleClass; _mejs2.default.Utils.fadeIn = fadeIn; _mejs2.default.Utils.fadeOut = fadeOut; _mejs2.default.Utils.siblings = siblings; _mejs2.default.Utils.visible = visible; _mejs2.default.Utils.ajax = ajax; _mejs2.default.Utils.loadScript = loadScript; },{"2":2,"3":3,"7":7}],18:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.escapeHTML = escapeHTML; exports.debounce = debounce; exports.isObjectEmpty = isObjectEmpty; exports.splitEvents = splitEvents; exports.createEvent = createEvent; exports.isNodeAfter = isNodeAfter; exports.isString = isString; var _mejs = _dereq_(7); var _mejs2 = _interopRequireDefault(_mejs); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function escapeHTML(input) { if (typeof input !== 'string') { throw new Error('Argument passed must be a string'); } var map = { '&': '&', '<': '<', '>': '>', '"': '"' }; return input.replace(/[&<>"]/g, function (c) { return map[c]; }); } function debounce(func, wait) { var _this = this, _arguments = arguments; var immediate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; if (typeof func !== 'function') { throw new Error('First argument must be a function'); } if (typeof wait !== 'number') { throw new Error('Second argument must be a numeric value'); } var timeout = void 0; return function () { var context = _this, args = _arguments; var later = function later() { timeout = null; if (!immediate) { func.apply(context, args); } }; var callNow = immediate && !timeout; clearTimeout(timeout); timeout = setTimeout(later, wait); if (callNow) { func.apply(context, args); } }; } function isObjectEmpty(instance) { return Object.getOwnPropertyNames(instance).length <= 0; } function splitEvents(events, id) { var rwindow = /^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/; var ret = { d: [], w: [] }; (events || '').split(' ').forEach(function (v) { var eventName = '' + v + (id ? '.' + id : ''); if (eventName.startsWith('.')) { ret.d.push(eventName); ret.w.push(eventName); } else { ret[rwindow.test(v) ? 'w' : 'd'].push(eventName); } }); ret.d = ret.d.join(' '); ret.w = ret.w.join(' '); return ret; } function createEvent(eventName, target) { if (typeof eventName !== 'string') { throw new Error('Event name must be a string'); } var eventFrags = eventName.match(/([a-z]+\.([a-z]+))/i), detail = { target: target }; if (eventFrags !== null) { eventName = eventFrags[1]; detail.namespace = eventFrags[2]; } return new window.CustomEvent(eventName, { detail: detail }); } function isNodeAfter(sourceNode, targetNode) { return !!(sourceNode && targetNode && sourceNode.compareDocumentPosition(targetNode) & 2); } function isString(value) { return typeof value === 'string'; } _mejs2.default.Utils = _mejs2.default.Utils || {}; _mejs2.default.Utils.escapeHTML = escapeHTML; _mejs2.default.Utils.debounce = debounce; _mejs2.default.Utils.isObjectEmpty = isObjectEmpty; _mejs2.default.Utils.splitEvents = splitEvents; _mejs2.default.Utils.createEvent = createEvent; _mejs2.default.Utils.isNodeAfter = isNodeAfter; _mejs2.default.Utils.isString = isString; },{"7":7}],19:[function(_dereq_,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.typeChecks = undefined; exports.absolutizeUrl = absolutizeUrl; exports.formatType = formatType; exports.getMimeFromType = getMimeFromType; exports.getTypeFromFile = getTypeFromFile; exports.getExtension = getExtension; exports.normalizeExtension = normalizeExtension; var _mejs = _dereq_(7); var _mejs2 = _interopRequireDefault(_mejs); var _general = _dereq_(18); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var typeChecks = exports.typeChecks = []; function absolutizeUrl(url) { if (typeof url !== 'string') { throw new Error('`url` argument must be a string'); } var el = document.createElement('div'); el.innerHTML = '<a href="' + (0, _general.escapeHTML)(url) + '">x</a>'; return el.firstChild.href; } function formatType(url) { var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; return url && !type ? getTypeFromFile(url) : type; } function getMimeFromType(type) { if (typeof type !== 'string') { throw new Error('`type` argument must be a string'); } return type && type.indexOf(';') > -1 ? type.substr(0, type.indexOf(';')) : type; } function getTypeFromFile(url) { if (typeof url !== 'string') { throw new Error('`url` argument must be a string'); } for (var i = 0, total = typeChecks.length; i < total; i++) { var type = typeChecks[i](url); if (type) { return type; } } var ext = getExtension(url), normalizedExt = normalizeExtension(ext); var mime = 'video/mp4'; if (normalizedExt) { if (~['mp4', 'm4v', 'ogg', 'ogv', 'webm', 'flv', 'mpeg'].indexOf(normalizedExt)) { mime = 'video/' + normalizedExt; } else if ('mov' === normalizedExt) { mime = 'video/quicktime'; } else if (~['mp3', 'oga', 'wav', 'mid', 'midi'].indexOf(normalizedExt)) { mime = 'audio/' + normalizedExt; } } return mime; } function getExtension(url) { if (typeof url !== 'string') { throw new Error('`url` argument must be a string'); } var baseUrl = url.split('?')[0], baseName = baseUrl.split('\\').pop().split('/').pop(); return ~baseName.indexOf('.') ? baseName.substring(baseName.lastIndexOf('.') + 1) : ''; } function normalizeExtension(extension) { if (typeof extension !== 'string') { throw new Error('`extension` argument must be a string'); } switch (extension) { case 'mp4': case 'm4v': return 'mp4'; case 'webm': case 'webma': case 'webmv': return 'webm'; case 'ogg': case 'oga': case 'ogv': return 'ogg'; default: return extension; } } _mejs2.default.Utils = _mejs2.default.Utils || {}; _mejs2.default.Utils.typeChecks = typeChecks; _mejs2.default.Utils.absolutizeUrl = absolutizeUrl; _mejs2.default.Utils.formatType = formatType; _mejs2.default.Utils.getMimeFromType = getMimeFromType; _mejs2.default.Utils.getTypeFromFile = getTypeFromFile; _mejs2.default.Utils.getExtension = getExtension; _mejs2.default.Utils.normalizeExtension = normalizeExtension; },{"18":18,"7":7}],20:[function(_dereq_,module,exports){ 'use strict'; var _document = _dereq_(2); var _document2 = _interopRequireDefault(_document); var _promisePolyfill = _dereq_(4); var _promisePolyfill2 = _interopRequireDefault(_promisePolyfill); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } (function (arr) { arr.forEach(function (item) { if (item.hasOwnProperty('remove')) { return; } Object.defineProperty(item, 'remove', { configurable: true, enumerable: true, writable: true, value: function remove() { this.parentNode.removeChild(this); } }); }); })([Element.prototype, CharacterData.prototype, DocumentType.prototype]); (function () { if (typeof window.CustomEvent === 'function') { return false; } function CustomEvent(event, params) { params = params || { bubbles: false, cancelable: false, detail: undefined }; var evt = _document2.default.createEvent('CustomEvent'); evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail); return evt; } CustomEvent.prototype = window.Event.prototype; window.CustomEvent = CustomEvent; })(); if (typeof Object.assign !== 'function') { Object.assign = function (target) { if (target === null || target === undefined) { throw new TypeError('Cannot convert undefined or null to object'); } var to = Object(target); for (var index = 1, total = arguments.length; index < total; index++) { var nextSource = arguments[index]; if (nextSource !== null) { for (var nextKey in nextSource) { if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) { to[nextKey] = nextSource[nextKey]; } } } } return to; }; } if (!String.prototype.startsWith) { String.prototype.startsWith = function (searchString, position) { position = position || 0; return this.substr(position, searchString.length) === searchString; }; } if (!Element.prototype.matches) { Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function (s) { var matches = (this.document || this.ownerDocument).querySelectorAll(s), i = matches.length - 1; while (--i >= 0 && matches.item(i) !== this) {} return i > -1; }; } if (window.Element && !Element.prototype.closest) { Element.prototype.closest = function (s) { var matches = (this.document || this.ownerDocument).querySelectorAll(s), i = void 0, el = this; do { i = matches.length; while (--i >= 0 && matches.item(i) !== el) {} } while (i < 0 && (el = el.parentElement)); return el; }; } (function () { var lastTime = 0; var vendors = ['ms', 'moz', 'webkit', 'o']; for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) { window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame']; window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame']; } if (!window.requestAnimationFrame) window.requestAnimationFrame = function (callback) { var currTime = new Date().getTime(); var timeToCall = Math.max(0, 16 - (currTime - lastTime)); var id = window.setTimeout(function () { callback(currTime + timeToCall); }, timeToCall); lastTime = currTime + timeToCall; return id; }; if (!window.cancelAnimationFrame) window.cancelAnimationFrame = function (id) { clearTimeout(id); }; })(); if (/firefox/i.test(navigator.userAgent)) { var getComputedStyle = window.getComputedStyle; window.getComputedStyle = function (el, pseudoEl) { var t = getComputedStyle(el, pseudoEl); return t === null ? { getPropertyValue: function getPropertyValue() {} } : t; }; } if (!window.Promise) { window.Promise = _promisePolyfill2.default; } (function (constructor) { if (constructor && constructor.prototype && constructor.prototype.children === null) { Object.defineProperty(constructor.prototype, 'children', { get: function get() { var i = 0, node = void 0, nodes = this.childNodes, children = []; while (node = nodes[i++]) { if (node.nodeType === 1) { children.push(node); } } return children; } }); } })(window.Node || window.Element); },{"2":2,"4":4}]},{},[20,6,5,9,14,11,10,12,13,15]); PK ��\i!#>