/*! Lity - v3.0.0-dev - 2020-04-26 * http://sorgalla.com/lity/ * Copyright (c) 2015-2020 Jan Sorgalla; Licensed MIT */ (function(window, factory) { if (typeof define === 'function' && define.amd) { define(['jquery'], function($) { return factory(window, $); }); } else if (typeof module === 'object' && typeof module.exports === 'object') { module.exports = factory(window, require('jquery')); } else { window.lity = factory(window, window.jQuery || window.Zepto); } }(typeof window !== "undefined" ? window : this, function(window, $) { 'use strict'; var document = window.document; var _win = $(window); var _deferred = $.Deferred; var _html = $('html'); var _instances = []; var _attrAriaHidden = 'aria-hidden'; var _dataAriaHidden = 'lity-' + _attrAriaHidden; var _focusableElementsSelector = 'a[href],area[href],input:not([disabled]),select:not([disabled]),textarea:not([disabled]),button:not([disabled]),iframe,object,embed,[contenteditable],[tabindex]:not([tabindex^="-"])'; var _defaultOptions = { esc: true, handler: null, handlers: { image: imageHandler, inline: inlineHandler, iframe: iframeHandler }, forceFocusInside: false, template: '' }; var _imageRegexp = /(^data:image\/)|(\.(png|jpe?g|gif|svg|webp|bmp|ico|tiff?)(\?\S*)?$)/i; var _transitionEndEvent = (function() { var el = document.createElement('div'); var transEndEventNames = { WebkitTransition: 'webkitTransitionEnd', MozTransition: 'transitionend', OTransition: 'oTransitionEnd otransitionend', transition: 'transitionend' }; for (var name in transEndEventNames) { if (el.style[name] !== undefined) { return transEndEventNames[name]; } } return false; })(); function transitionEnd(element) { var deferred = _deferred(); if (!_transitionEndEvent || !element.length) { deferred.resolve(); } else { element.one(_transitionEndEvent, deferred.resolve); setTimeout(deferred.resolve, 500); } return deferred.promise(); } function settings(currSettings, key, value) { if (arguments.length === 1) { return $.extend({}, currSettings); } if (typeof key === 'string') { if (typeof value === 'undefined') { return typeof currSettings[key] === 'undefined' ? null : currSettings[key]; } currSettings[key] = value; } else { $.extend(currSettings, key); } return this; } function parseQueryParams(params) { var pos = params.indexOf('?'); if (pos > -1) { params = params.substr(pos + 1); } var pairs = decodeURI(params.split('#')[0]).split('&'); var obj = {}, p; for (var i = 0, n = pairs.length; i < n; i++) { if (!pairs[i]) { continue; } p = pairs[i].split('='); obj[p[0]] = p[1]; } return obj; } function appendQueryParams(url, params) { if (!params) { return url; } if ('string' === $.type(params)) { params = parseQueryParams(params); } if (url.indexOf('?') > -1) { var split = url.split('?'); url = split.shift(); params = $.extend( {}, parseQueryParams(split[0]), params ) } return url + '?' + $.param(params); } function transferHash(originalUrl, newUrl) { var pos = originalUrl.indexOf('#'); if (-1 === pos) { return newUrl; } if (pos > 0) { originalUrl = originalUrl.substr(pos); } return newUrl + originalUrl; } function iframe(iframeUrl, instance, queryParams, hashUrl) { instance && instance.element().addClass('lity-iframe'); if (queryParams) { iframeUrl = appendQueryParams(iframeUrl, queryParams); } if (hashUrl) { iframeUrl = transferHash(hashUrl, iframeUrl); } return '