diff options
Diffstat (limited to 'build/js/jsxc/lib/magnific-popup/dist/jquery.magnific-popup.js')
-rw-r--r-- | build/js/jsxc/lib/magnific-popup/dist/jquery.magnific-popup.js | 334 |
1 files changed, 67 insertions, 267 deletions
diff --git a/build/js/jsxc/lib/magnific-popup/dist/jquery.magnific-popup.js b/build/js/jsxc/lib/magnific-popup/dist/jquery.magnific-popup.js index 01f6f38..927b3c1 100644 --- a/build/js/jsxc/lib/magnific-popup/dist/jquery.magnific-popup.js +++ b/build/js/jsxc/lib/magnific-popup/dist/jquery.magnific-popup.js @@ -1,6 +1,6 @@ -/*! Magnific Popup - v1.0.0 - 2015-01-03 +/*! Magnific Popup - v1.1.0 - 2016-02-20 * http://dimsemenov.com/plugins/magnific-popup/ -* Copyright (c) 2015 Dmitry Semenov; */ +* Copyright (c) 2016 Dmitry Semenov; */ ;(function (factory) { if (typeof define === 'function' && define.amd) { // AMD. Register as an anonymous module. @@ -136,9 +136,7 @@ MagnificPopup.prototype = { */ init: function() { var appVersion = navigator.appVersion; - mfp.isIE7 = appVersion.indexOf("MSIE 7.") !== -1; - mfp.isIE8 = appVersion.indexOf("MSIE 8.") !== -1; - mfp.isLowIE = mfp.isIE7 || mfp.isIE8; + mfp.isLowIE = mfp.isIE8 = document.all && !document.addEventListener; mfp.isAndroid = (/android/gi).test(appVersion); mfp.isIOS = (/iphone|ipad|ipod/gi).test(appVersion); mfp.supportsTransition = supportsTransitions(); @@ -446,7 +444,7 @@ MagnificPopup.prototype = { } - if(mfp._lastFocusedEl) { + if(mfp.st.autoFocusLast && mfp._lastFocusedEl) { $(mfp._lastFocusedEl).focus(); // put tab focus back } mfp.currItem = null; @@ -493,17 +491,13 @@ MagnificPopup.prototype = { item = mfp.parseEl( mfp.index ); } - var type = item.type; + var type = item.type; _mfpTrigger('BeforeChange', [mfp.currItem ? mfp.currItem.type : '', type]); // BeforeChange event works like so: // _mfpOn('BeforeChange', function(e, prevType, newType) { }); - - mfp.currItem = item; - - - + mfp.currItem = item; if(!mfp.currTemplate[type]) { var markup = mfp.st[type] ? mfp.st[type].markup : false; @@ -522,7 +516,7 @@ MagnificPopup.prototype = { if(_prevContentType && _prevContentType !== item.type) { mfp.container.removeClass('mfp-'+_prevContentType+'-holder'); } - + var newContent = mfp['get' + type.charAt(0).toUpperCase() + type.slice(1)](item, mfp.currTemplate[type]); mfp.appendContent(newContent, type); @@ -530,7 +524,7 @@ MagnificPopup.prototype = { _mfpTrigger(CHANGE_EVENT, item); _prevContentType = item.type; - + // Append container back after its content changed mfp.container.prepend(mfp.contentContainer); @@ -543,7 +537,7 @@ MagnificPopup.prototype = { */ appendContent: function(newContent, type) { mfp.content = newContent; - + if(newContent) { if(mfp.st.showCloseBtn && mfp.st.closeBtnInside && mfp.currTemplate[type] === true) { @@ -565,8 +559,6 @@ MagnificPopup.prototype = { }, - - /** * Creates Magnific Popup data object based on given data * @param {int} index Index of item to parse @@ -620,11 +612,11 @@ MagnificPopup.prototype = { if(!options) { options = {}; - } + } var eName = 'click.magnificPopup'; options.mainEl = el; - + if(options.items) { options.isObj = true; el.off(eName).on(eName, eHandler); @@ -642,7 +634,7 @@ MagnificPopup.prototype = { var midClick = options.midClick !== undefined ? options.midClick : $.magnificPopup.defaults.midClick; - if(!midClick && ( e.which === 2 || e.ctrlKey || e.metaKey ) ) { + if(!midClick && ( e.which === 2 || e.ctrlKey || e.metaKey || e.altKey || e.shiftKey ) ) { return; } @@ -659,7 +651,7 @@ MagnificPopup.prototype = { } } } - + if(e.type) { e.preventDefault(); @@ -668,7 +660,6 @@ MagnificPopup.prototype = { e.stopPropagation(); } } - options.el = $(e.mfpEl); if(options.delegate) { @@ -797,7 +788,7 @@ MagnificPopup.prototype = { if(el.is('img')) { el.attr('src', value); } else { - el.replaceWith( '<img src="'+value+'" class="' + el.attr('class') + '" />' ); + el.replaceWith( $('<img>').attr('src', value).attr('class', el.attr('class')) ); } } else { el.attr(arr[1], value); @@ -836,14 +827,13 @@ $.magnificPopup = { modules: [], open: function(options, index) { - _checkInstance(); + _checkInstance(); if(!options) { options = {}; } else { options = $.extend(true, {}, options); } - options.isObj = true; options.index = index || 0; @@ -858,16 +848,16 @@ $.magnificPopup = { if(module.options) { $.magnificPopup.defaults[name] = module.options; } - $.extend(this.proto, module.proto); + $.extend(this.proto, module.proto); this.modules.push(name); }, - defaults: { + defaults: { // Info about options is in docs: // http://dimsemenov.com/plugins/magnific-popup/documentation.html#options - - disableOn: 0, + + disableOn: 0, key: null, @@ -878,12 +868,12 @@ $.magnificPopup = { preloader: true, focus: '', // CSS selector of input to focus after popup is opened - + closeOnContentClick: false, closeOnBgClick: true, - closeBtnInside: true, + closeBtnInside: true, showCloseBtn: true, @@ -892,22 +882,24 @@ $.magnificPopup = { modal: false, alignTop: false, - + removalDelay: 0, prependTo: null, - - fixedContentPos: 'auto', - + + fixedContentPos: 'auto', + fixedBgPos: 'auto', overflowY: 'auto', - closeMarkup: '<button title="%title%" type="button" class="mfp-close">×</button>', + closeMarkup: '<button title="%title%" type="button" class="mfp-close">×</button>', tClose: 'Close (Esc)', - tLoading: 'Loading...' + tLoading: 'Loading...', + + autoFocusLast: true } }; @@ -945,9 +937,9 @@ $.fn.magnificPopup = function(options) { } else { // clone options obj options = $.extend(true, {}, options); - + /* - * As Zepto doesn't support .data() method for objects + * As Zepto doesn't support .data() method for objects * and it works only in normal browsers * we assign "options" object directly to the DOM element. FTW! */ @@ -963,33 +955,13 @@ $.fn.magnificPopup = function(options) { return jqEl; }; - -//Quick benchmark -/* -var start = performance.now(), - i, - rounds = 1000; - -for(i = 0; i < rounds; i++) { - -} -console.log('Test #1:', performance.now() - start); - -start = performance.now(); -for(i = 0; i < rounds; i++) { - -} -console.log('Test #2:', performance.now() - start); -*/ - - /*>>core*/ /*>>inline*/ var INLINE_NS = 'inline', _hiddenClass, - _inlinePlaceholder, + _inlinePlaceholder, _lastInlineElement, _putInlineElementsBack = function() { if(_lastInlineElement) { @@ -1134,18 +1106,12 @@ $.magnificPopup.registerModule(AJAX_NS, { } }); - - - - - - /*>>ajax*/ /*>>image*/ var _imgInterval, _getTitle = function(item) { - if(item.data && item.data.title !== undefined) + if(item.data && item.data.title !== undefined) return item.data.title; var src = mfp.st.image.titleSrc; @@ -1176,7 +1142,7 @@ $.magnificPopup.registerModule('image', { '</figure>'+ '</div>', cursor: 'mfp-zoom-out-cur', - titleSrc: 'title', + titleSrc: 'title', verticalFit: true, tError: '<a href="%url%">The image</a> could not be loaded.' }, @@ -1221,13 +1187,13 @@ $.magnificPopup.registerModule('image', { }, _onImageHasSize: function(item) { if(item.img) { - + item.hasSize = true; if(_imgInterval) { clearInterval(_imgInterval); } - + item.isCheckingImgSize = false; _mfpTrigger('ImageHasSize', item); @@ -1235,7 +1201,7 @@ $.magnificPopup.registerModule('image', { if(item.imgHidden) { if(mfp.content) mfp.content.removeClass('mfp-loading'); - + item.imgHidden = false; } @@ -1288,7 +1254,7 @@ $.magnificPopup.registerModule('image', { if(item) { if (item.img[0].complete) { item.img.off('.mfploader'); - + if(item === mfp.currItem){ mfp._onImageHasSize(item); @@ -1299,7 +1265,7 @@ $.magnificPopup.registerModule('image', { item.loaded = true; _mfpTrigger('ImageLoadComplete'); - + } else { // if image complete check fails 200 times (20 sec), we assume that there was an error. @@ -1349,7 +1315,7 @@ $.magnificPopup.registerModule('image', { img = item.img[0]; if(img.naturalWidth > 0) { item.hasSize = true; - } else if(!img.width) { + } else if(!img.width) { item.hasSize = false; } } @@ -1381,15 +1347,13 @@ $.magnificPopup.registerModule('image', { item.imgHidden = true; template.addClass('mfp-loading'); mfp.findImageSize(item); - } + } return template; } } }); - - /*>>image*/ /*>>zoom*/ @@ -1398,7 +1362,7 @@ var hasMozTransform, if(hasMozTransform === undefined) { hasMozTransform = document.createElement('p').style.MozTransform !== undefined; } - return hasMozTransform; + return hasMozTransform; }; $.magnificPopup.registerModule('zoom', { @@ -1418,7 +1382,7 @@ $.magnificPopup.registerModule('zoom', { var zoomSt = mfp.st.zoom, ns = '.zoom', image; - + if(!zoomSt.enabled || !mfp.supportsTransition) { return; } @@ -1454,7 +1418,7 @@ $.magnificPopup.registerModule('zoom', { mfp.content.css('visibility', 'hidden'); // Basically, all code below does is clones existing image, puts in on top of the current one and animated it - + image = mfp._getItemToZoom(); if(!image) { @@ -1462,8 +1426,8 @@ $.magnificPopup.registerModule('zoom', { return; } - animatedImg = getElToAnimate(image); - + animatedImg = getElToAnimate(image); + animatedImg.css( mfp._getOffset() ); mfp.wrap.append(animatedImg); @@ -1478,7 +1442,7 @@ $.magnificPopup.registerModule('zoom', { animatedImg.remove(); image = animatedImg = null; _mfpTrigger('ZoomAnimationEnded'); - }, 16); // avoid blink when switching images + }, 16); // avoid blink when switching images }, duration); // this timeout equals animation duration @@ -1502,12 +1466,11 @@ $.magnificPopup.registerModule('zoom', { } animatedImg = getElToAnimate(image); } - - + animatedImg.css( mfp._getOffset(true) ); mfp.wrap.append(animatedImg); mfp.content.css('visibility', 'hidden'); - + setTimeout(function() { animatedImg.css( mfp._getOffset() ); }, 16); @@ -1522,7 +1485,7 @@ $.magnificPopup.registerModule('zoom', { animatedImg.remove(); } image = null; - } + } }); }, @@ -1554,7 +1517,7 @@ $.magnificPopup.registerModule('zoom', { /* - + Animating left + top + width/height looks glitchy in Firefox, but perfect in Chrome. And vice-versa. */ @@ -1585,11 +1548,11 @@ $.magnificPopup.registerModule('zoom', { var IFRAME_NS = 'iframe', _emptyPage = '//about:blank', - + _fixIframeBugs = function(isShowing) { if(mfp.currTemplate[IFRAME_NS]) { var el = mfp.currTemplate[IFRAME_NS].find('iframe'); - if(el.length) { + if(el.length) { // reset src after the popup is closed to avoid "video keeps playing after popup is closed" bug if(!isShowing) { el[0].src = _emptyPage; @@ -1616,8 +1579,8 @@ $.magnificPopup.registerModule(IFRAME_NS, { // we don't care and support only one default type of URL by default patterns: { youtube: { - index: 'youtube.com', - id: 'v=', + index: 'youtube.com', + id: 'v=', src: '//www.youtube.com/embed/%id%?autoplay=1' }, vimeo: { @@ -1642,7 +1605,7 @@ $.magnificPopup.registerModule(IFRAME_NS, { _fixIframeBugs(); // iframe if removed } else if(newType === IFRAME_NS) { _fixIframeBugs(true); // iframe is showing - } + } }// else { // iframe source is switched, don't do anything //} @@ -1656,7 +1619,7 @@ $.magnificPopup.registerModule(IFRAME_NS, { getIframe: function(item, template) { var embedSrc = item.src; var iframeSt = mfp.st.iframe; - + $.each(iframeSt.patterns, function() { if(embedSrc.indexOf( this.index ) > -1) { if(this.id) { @@ -1670,7 +1633,7 @@ $.magnificPopup.registerModule(IFRAME_NS, { return false; // break; } }); - + var dataObj = {}; if(iframeSt.srcAction) { dataObj[iframeSt.srcAction] = embedSrc; @@ -1723,11 +1686,10 @@ $.magnificPopup.registerModule('gallery', { initGallery: function() { var gSt = mfp.st.gallery, - ns = '.mfp-gallery', - supportsFastClick = Boolean($.fn.mfpFastClick); + ns = '.mfp-gallery'; mfp.direction = true; // true - next, false - prev - + if(!gSt || !gSt.enabled ) return false; _wrapClasses += ' mfp-gallery'; @@ -1766,24 +1728,15 @@ $.magnificPopup.registerModule('gallery', { _mfpOn('BuildControls' + ns, function() { if(mfp.items.length > 1 && gSt.arrows && !mfp.arrowLeft) { var markup = gSt.arrowMarkup, - arrowLeft = mfp.arrowLeft = $( markup.replace(/%title%/gi, gSt.tPrev).replace(/%dir%/gi, 'left') ).addClass(PREVENT_CLOSE_CLASS), + arrowLeft = mfp.arrowLeft = $( markup.replace(/%title%/gi, gSt.tPrev).replace(/%dir%/gi, 'left') ).addClass(PREVENT_CLOSE_CLASS), arrowRight = mfp.arrowRight = $( markup.replace(/%title%/gi, gSt.tNext).replace(/%dir%/gi, 'right') ).addClass(PREVENT_CLOSE_CLASS); - var eName = supportsFastClick ? 'mfpFastClick' : 'click'; - arrowLeft[eName](function() { + arrowLeft.click(function() { mfp.prev(); - }); - arrowRight[eName](function() { + }); + arrowRight.click(function() { mfp.next(); - }); - - // Polyfill for :before and :after (adds elements with classes mfp-a and mfp-b) - if(mfp.isIE7) { - _getEl('b', arrowLeft[0], false, true); - _getEl('a', arrowLeft[0], false, true); - _getEl('b', arrowRight[0], false, true); - _getEl('a', arrowRight[0], false, true); - } + }); mfp.container.append(arrowLeft.add(arrowRight)); } @@ -1795,21 +1748,17 @@ $.magnificPopup.registerModule('gallery', { mfp._preloadTimeout = setTimeout(function() { mfp.preloadNearbyImages(); mfp._preloadTimeout = null; - }, 16); + }, 16); }); _mfpOn(CLOSE_EVENT+ns, function() { _document.off(ns); mfp.wrap.off('click'+ns); - - if(mfp.arrowLeft && supportsFastClick) { - mfp.arrowLeft.add(mfp.arrowRight).destroyMfpFastClick(); - } mfp.arrowRight = mfp.arrowLeft = null; }); - }, + }, next: function() { mfp.direction = true; mfp.index = _getLoopedId(mfp.index + 1); @@ -1868,58 +1817,6 @@ $.magnificPopup.registerModule('gallery', { } }); -/* -Touch Support that might be implemented some day - -addSwipeGesture: function() { - var startX, - moved, - multipleTouches; - - return; - - var namespace = '.mfp', - addEventNames = function(pref, down, move, up, cancel) { - mfp._tStart = pref + down + namespace; - mfp._tMove = pref + move + namespace; - mfp._tEnd = pref + up + namespace; - mfp._tCancel = pref + cancel + namespace; - }; - - if(window.navigator.msPointerEnabled) { - addEventNames('MSPointer', 'Down', 'Move', 'Up', 'Cancel'); - } else if('ontouchstart' in window) { - addEventNames('touch', 'start', 'move', 'end', 'cancel'); - } else { - return; - } - _window.on(mfp._tStart, function(e) { - var oE = e.originalEvent; - multipleTouches = moved = false; - startX = oE.pageX || oE.changedTouches[0].pageX; - }).on(mfp._tMove, function(e) { - if(e.originalEvent.touches.length > 1) { - multipleTouches = e.originalEvent.touches.length; - } else { - //e.preventDefault(); - moved = true; - } - }).on(mfp._tEnd + ' ' + mfp._tCancel, function(e) { - if(moved && !multipleTouches) { - var oE = e.originalEvent, - diff = startX - (oE.pageX || oE.changedTouches[0].pageX); - - if(diff > 20) { - mfp.next(); - } else if(diff < -20) { - mfp.prev(); - } - } - }); -}, -*/ - - /*>>gallery*/ /*>>retina*/ @@ -1960,101 +1857,4 @@ $.magnificPopup.registerModule(RETINA_NS, { }); /*>>retina*/ - -/*>>fastclick*/ -/** - * FastClick event implementation. (removes 300ms delay on touch devices) - * Based on https://developers.google.com/mobile/articles/fast_buttons - * - * You may use it outside the Magnific Popup by calling just: - * - * $('.your-el').mfpFastClick(function() { - * console.log('Clicked!'); - * }); - * - * To unbind: - * $('.your-el').destroyMfpFastClick(); - * - * - * Note that it's a very basic and simple implementation, it blocks ghost click on the same element where it was bound. - * If you need something more advanced, use plugin by FT Labs https://github.com/ftlabs/fastclick - * - */ - -(function() { - var ghostClickDelay = 1000, - supportsTouch = 'ontouchstart' in window, - unbindTouchMove = function() { - _window.off('touchmove'+ns+' touchend'+ns); - }, - eName = 'mfpFastClick', - ns = '.'+eName; - - - // As Zepto.js doesn't have an easy way to add custom events (like jQuery), so we implement it in this way - $.fn.mfpFastClick = function(callback) { - - return $(this).each(function() { - - var elem = $(this), - lock; - - if( supportsTouch ) { - - var timeout, - startX, - startY, - pointerMoved, - point, - numPointers; - - elem.on('touchstart' + ns, function(e) { - pointerMoved = false; - numPointers = 1; - - point = e.originalEvent ? e.originalEvent.touches[0] : e.touches[0]; - startX = point.clientX; - startY = point.clientY; - - _window.on('touchmove'+ns, function(e) { - point = e.originalEvent ? e.originalEvent.touches : e.touches; - numPointers = point.length; - point = point[0]; - if (Math.abs(point.clientX - startX) > 10 || - Math.abs(point.clientY - startY) > 10) { - pointerMoved = true; - unbindTouchMove(); - } - }).on('touchend'+ns, function(e) { - unbindTouchMove(); - if(pointerMoved || numPointers > 1) { - return; - } - lock = true; - e.preventDefault(); - clearTimeout(timeout); - timeout = setTimeout(function() { - lock = false; - }, ghostClickDelay); - callback(); - }); - }); - - } - - elem.on('click' + ns, function() { - if(!lock) { - callback(); - } - }); - }); - }; - - $.fn.destroyMfpFastClick = function() { - $(this).off('touchstart' + ns + ' click' + ns); - if(supportsTouch) _window.off('touchmove'+ns+' touchend'+ns); - }; -})(); - -/*>>fastclick*/ _checkInstance(); }));
\ No newline at end of file |