#1 JavaScript::Eval (size: 13495, repeated: 1) - SHA256: ba036b303d373c2d71a051d839748ddd98e56d2e9440e1957474a466997f5f27
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */
__webpack_require__.d(__webpack_exports__, "Foundation", function() {
return Foundation;
});
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! jquery */ "jquery");
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */
var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
/* harmony import */
var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! ./foundation.util.mediaQuery */ "./js/foundation.util.mediaQuery.js");
function _typeof(obj) {
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function _typeof(obj) {
return typeof obj;
};
} else {
_typeof = function _typeof(obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
return _typeof(obj);
}
var FOUNDATION_VERSION = '6.5.1'; // Global Foundation object
// This is attached to the window, or used as a module for AMD/Browserify
var Foundation = {
version: FOUNDATION_VERSION,
/**
* Stores initialized plugins.
*/
_plugins: {},
/**
* Stores generated unique ids for plugin instances
*/
_uuids: [],
/**
* Defines a Foundation plugin, adding it to the `Foundation` namespace and the list of plugins to initialize when reflowing.
* @param {Object} plugin - The constructor of the plugin.
*/
plugin: function plugin(_plugin, name) {
// Object key to use when adding to global Foundation object
// Examples: Foundation.Reveal, Foundation.OffCanvas
var className = name || functionName(_plugin); // Object key to use when storing the plugin, also used to create the identifying data attribute for the plugin
// Examples: data-reveal, data-off-canvas
var attrName = hyphenate(className); // Add to the Foundation object and the plugins list (for reflowing)
this._plugins[attrName] = this[className] = _plugin;
},
/**
* @function
* Populates the _uuids array with pointers to each individual plugin instance.
* Adds the `zfPlugin` data-attribute to programmatically created plugins to allow use of $(selector).foundation(method) calls.
* Also fires the initialization event for each plugin, consolidating repetitive code.
* @param {Object} plugin - an instance of a plugin, usually `this` in context.
* @param {String} name - the name of the plugin, passed as a camelCased string.
* @fires Plugin#init
*/
registerPlugin: function registerPlugin(plugin, name) {
var pluginName = name ? hyphenate(name) : functionName(plugin.constructor).toLowerCase();
plugin.uuid = Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["GetYoDigits"])(6, pluginName);
if (!plugin.$element.attr("data-".concat(pluginName))) {
plugin.$element.attr("data-".concat(pluginName), plugin.uuid);
}
if (!plugin.$element.data('zfPlugin')) {
plugin.$element.data('zfPlugin', plugin);
}
/**
* Fires when the plugin has initialized.
* @event Plugin#init
*/
plugin.$element.trigger("init.zf.".concat(pluginName));
this._uuids.push(plugin.uuid);
return;
},
/**
* @function
* Removes the plugins uuid from the _uuids array.
* Removes the zfPlugin data attribute, as well as the data-plugin-name attribute.
* Also fires the destroyed event for the plugin, consolidating repetitive code.
* @param {Object} plugin - an instance of a plugin, usually `this` in context.
* @fires Plugin#destroyed
*/
unregisterPlugin: function unregisterPlugin(plugin) {
var pluginName = hyphenate(functionName(plugin.$element.data('zfPlugin').constructor));
this._uuids.splice(this._uuids.indexOf(plugin.uuid), 1);
plugin.$element.removeAttr("data-".concat(pluginName)).removeData('zfPlugin')
/**
* Fires when the plugin has been destroyed.
* @event Plugin#destroyed
*/
.trigger("destroyed.zf.".concat(pluginName));
for (var prop in plugin) {
plugin[prop] = null; //clean up script to prep for garbage collection.
}
return;
},
/**
* @function
* Causes one or more active plugins to re-initialize, resetting event listeners, recalculating positions, etc.
* @param {String} plugins - optional string of an individual plugin key, attained by calling `$(element).data('pluginName')`, or string of a plugin class i.e. `'dropdown'`
* @default If no argument is passed, reflow all currently active plugins.
*/
reInit: function reInit(plugins) {
var isJQ = plugins instanceof jquery__WEBPACK_IMPORTED_MODULE_0___default.a;
try {
if (isJQ) {
plugins.each(function() {
jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('zfPlugin')._init();
});
} else {
var type = _typeof(plugins),
_this = this,
fns = {
'object': function object(plgs) {
plgs.forEach(function(p) {
p = hyphenate(p);
jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-' + p + ']').foundation('_init');
});
},
'string': function string() {
plugins = hyphenate(plugins);
jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-' + plugins + ']').foundation('_init');
},
'undefined': function undefined() {
this['object'](Object.keys(_this._plugins));
}
};
fns[type](plugins);
}
} catch (err) {
console.error(err);
} finally {
return plugins;
}
},
/**
* Initialize plugins on any elements within `elem` (and `elem` itself) that aren't already initialized.
* @param {Object} elem - jQuery object containing the element to check inside. Also checks the element itself, unless it's the `document` object.
* @param {String|Array} plugins - A list of plugins to initialize. Leave this out to initialize everything.
*/
reflow: function reflow(elem, plugins) {
// If plugins is undefined, just grab everything
if (typeof plugins === 'undefined') {
plugins = Object.keys(this._plugins);
} // If plugins is a string, convert it to an array with one item
else if (typeof plugins === 'string') {
plugins = [plugins];
}
var _this = this; // Iterate through each plugin
jquery__WEBPACK_IMPORTED_MODULE_0___default.a.each(plugins, function(i, name) {
// Get the current plugin
var plugin = _this._plugins[name]; // Localize the search to all elements inside elem, as well as elem itself, unless elem === document
var $elem = jquery__WEBPACK_IMPORTED_MODULE_0___default()(elem).find('[data-' + name + ']').addBack('[data-' + name + ']'); // For each plugin found, initialize it
$elem.each(function() {
var $el = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),
opts = {}; // Don't double-dip on plugins
if ($el.data('zfPlugin')) {
console.warn("Tried to initialize " + name + " on an element that already has a Foundation plugin.");
return;
}
if ($el.attr('data-options')) {
var thing = $el.attr('data-options').split(';').forEach(function(e, i) {
var opt = e.split(':').map(function(el) {
return el.trim();
});
if (opt[0]) opts[opt[0]] = parseValue(opt[1]);
});
}
try {
$el.data('zfPlugin', new plugin(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), opts));
} catch (er) {
console.error(er);
} finally {
return;
}
});
});
},
getFnName: functionName,
addToJquery: function addToJquery($) {
// TODO: consider not making this a jQuery function
// TODO: need way to reflow vs. re-initialize
/**
* The Foundation jQuery method.
* @param {String|Array} method - An action to perform on the current jQuery object.
*/
var foundation = function foundation(method) {
var type = _typeof(method),
$noJS = $('.no-js');
if ($noJS.length) {
$noJS.removeClass('no-js');
}
if (type === 'undefined') {
//needs to initialize the Foundation object, or an individual plugin.
_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_2__["MediaQuery"]._init();
Foundation.reflow(this);
} else if (type === 'string') {
//an individual method to invoke on a plugin or group of plugins
var args = Array.prototype.slice.call(arguments, 1); //collect all the arguments, if necessary
var plugClass = this.data('zfPlugin'); //determine the class of plugin
if (typeof plugClass !== 'undefined' && typeof plugClass[method] !== 'undefined') {
//make sure both the class and method exist
if (this.length === 1) {
//if there's only one, call it directly.
plugClass[method].apply(plugClass, args);
} else {
this.each(function(i, el) {
//otherwise loop through the jQuery collection and invoke the method on each
plugClass[method].apply($(el).data('zfPlugin'), args);
});
}
} else {
//error for no class or no method
throw new ReferenceError("We're sorry, '" + method + "' is not an available method for " + (plugClass ? functionName(plugClass) : 'this element') + '.');
}
} else {
//error for invalid argument type
throw new TypeError("We're sorry, ".concat(type, " is not a valid parameter. You must use a string representing the method you wish to invoke."));
}
return this;
};
$.fn.foundation = foundation;
return $;
}
};
Foundation.util = {
/**
* Function for applying a debounce effect to a function call.
* @function
* @param {Function} func - Function to be called at end of timeout.
* @param {Number} delay - Time in ms to delay the call of `func`.
* @returns function
*/
throttle: function throttle(func, delay) {
var timer = null;
return function() {
var context = this,
args = arguments;
if (timer === null) {
timer = setTimeout(function() {
func.apply(context, args);
timer = null;
}, delay);
}
};
}
};
window.Foundation = Foundation; // Polyfill for requestAnimationFrame
(function() {
if (!Date.now || !window.Date.now) window.Date.now = Date.now = function() {
return new Date().getTime();
};
var vendors = ['webkit', 'moz'];
for (var i = 0; i < vendors.length && !window.requestAnimationFrame; ++i) {
var vp = vendors[i];
window.requestAnimationFrame = window[vp + 'RequestAnimationFrame'];
window.cancelAnimationFrame = window[vp + 'CancelAnimationFrame'] || window[vp + 'CancelRequestAnimationFrame'];
}
if (/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent) || !window.requestAnimationFrame || !window.cancelAnimationFrame) {
var lastTime = 0;
window.requestAnimationFrame = function(callback) {
var now = Date.now();
var nextTime = Math.max(lastTime + 16, now);
return setTimeout(function() {
callback(lastTime = nextTime);
}, nextTime - now);
};
window.cancelAnimationFrame = clearTimeout;
}
/**
* Polyfill for performance.now, required by rAF
*/
if (!window.performance || !window.performance.now) {
window.performance = {
start: Date.now(),
now: function now() {
return Date.now() - this.start;
}
};
}
})();
if (!Function.prototype.bind) {
Function.prototype.bind = function(oThis) {
if (typeof this !== 'function') {
// closest thing possible to the ECMAScript 5
// internal IsCallable function
throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');
}
var aArgs = Array.prototype.slice.call(arguments, 1),
fToBind = this,
fNOP = function fNOP() {},
fBound = function fBound() {
return fToBind.apply(this instanceof fNOP ? this : oThis, aArgs.concat(Array.prototype.slice.call(arguments)));
};
if (this.prototype) {
// native functions don't have a prototype
fNOP.prototype = this.prototype;
}
fBound.prototype = new fNOP();
return fBound;
};
} // Polyfill to get the name of a function in IE9
function functionName(fn) {
if (typeof Function.prototype.name === 'undefined') {
var funcNameRegex = /function\s([^(]{1,})\(/;
var results = funcNameRegex.exec(fn.toString());
return results && results.length > 1 ? results[1].trim() : "";
} else if (typeof fn.prototype === 'undefined') {
return fn.constructor.name;
} else {
return fn.prototype.constructor.name;
}
}
function parseValue(str) {
if ('true' === str) return true;
else if ('false' === str) return false;
else if (!isNaN(str * 1)) return parseFloat(str);
return str;
} // Convert PascalCase to kebab-case
// Thank you: http://stackoverflow.com/a/8955580
function hyphenate(str) {
return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
}
//# sourceURL=webpack:///./js/foundation.core.js?
|
#2 JavaScript::Eval (size: 11496, repeated: 1) - SHA256: e334c7172d9179cf53458f48af97d2f90c3d444717de480b61a13d02b877b810
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */
__webpack_require__.d(__webpack_exports__, "Triggers", function() {
return Triggers;
});
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! jquery */ "jquery");
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */
var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
/* harmony import */
var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! ./foundation.util.motion */ "./js/foundation.util.motion.js");
function _typeof(obj) {
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function _typeof(obj) {
return typeof obj;
};
} else {
_typeof = function _typeof(obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
return _typeof(obj);
}
var MutationObserver = function() {
var prefixes = ['WebKit', 'Moz', 'O', 'Ms', ''];
for (var i = 0; i < prefixes.length; i++) {
if ("".concat(prefixes[i], "MutationObserver") in window) {
return window["".concat(prefixes[i], "MutationObserver")];
}
}
return false;
}();
var triggers = function triggers(el, type) {
el.data(type).split(' ').forEach(function(id) {
jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(id))[type === 'close' ? 'trigger' : 'triggerHandler']("".concat(type, ".zf.trigger"), [el]);
});
};
var Triggers = {
Listeners: {
Basic: {},
Global: {}
},
Initializers: {}
};
Triggers.Listeners.Basic = {
openListener: function openListener() {
triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'open');
},
closeListener: function closeListener() {
var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('close');
if (id) {
triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'close');
} else {
jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('close.zf.trigger');
}
},
toggleListener: function toggleListener() {
var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('toggle');
if (id) {
triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'toggle');
} else {
jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('toggle.zf.trigger');
}
},
closeableListener: function closeableListener(e) {
e.stopPropagation();
var animation = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('closable');
if (animation !== '') {
_foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__["Motion"].animateOut(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), animation, function() {
jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('closed.zf');
});
} else {
jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).fadeOut().trigger('closed.zf');
}
},
toggleFocusListener: function toggleFocusListener() {
var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('toggle-focus');
jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(id)).triggerHandler('toggle.zf.trigger', [jquery__WEBPACK_IMPORTED_MODULE_0___default()(this)]);
}
}; // Elements with [data-open] will reveal a plugin that supports it when clicked.
Triggers.Initializers.addOpenListener = function($elem) {
$elem.off('click.zf.trigger', Triggers.Listeners.Basic.openListener);
$elem.on('click.zf.trigger', '[data-open]', Triggers.Listeners.Basic.openListener);
}; // Elements with [data-close] will close a plugin that supports it when clicked.
// If used without a value on [data-close], the event will bubble, allowing it to close a parent component.
Triggers.Initializers.addCloseListener = function($elem) {
$elem.off('click.zf.trigger', Triggers.Listeners.Basic.closeListener);
$elem.on('click.zf.trigger', '[data-close]', Triggers.Listeners.Basic.closeListener);
}; // Elements with [data-toggle] will toggle a plugin that supports it when clicked.
Triggers.Initializers.addToggleListener = function($elem) {
$elem.off('click.zf.trigger', Triggers.Listeners.Basic.toggleListener);
$elem.on('click.zf.trigger', '[data-toggle]', Triggers.Listeners.Basic.toggleListener);
}; // Elements with [data-closable] will respond to close.zf.trigger events.
Triggers.Initializers.addCloseableListener = function($elem) {
$elem.off('close.zf.trigger', Triggers.Listeners.Basic.closeableListener);
$elem.on('close.zf.trigger', '[data-closeable], [data-closable]', Triggers.Listeners.Basic.closeableListener);
}; // Elements with [data-toggle-focus] will respond to coming in and out of focus
Triggers.Initializers.addToggleFocusListener = function($elem) {
$elem.off('focus.zf.trigger blur.zf.trigger', Triggers.Listeners.Basic.toggleFocusListener);
$elem.on('focus.zf.trigger blur.zf.trigger', '[data-toggle-focus]', Triggers.Listeners.Basic.toggleFocusListener);
}; // More Global/complex listeners and triggers
Triggers.Listeners.Global = {
resizeListener: function resizeListener($nodes) {
if (!MutationObserver) {
//fallback for IE 9
$nodes.each(function() {
jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).triggerHandler('resizeme.zf.trigger');
});
} //trigger all listening elements and signal a resize event
$nodes.attr('data-events', "resize");
},
scrollListener: function scrollListener($nodes) {
if (!MutationObserver) {
//fallback for IE 9
$nodes.each(function() {
jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).triggerHandler('scrollme.zf.trigger');
});
} //trigger all listening elements and signal a scroll event
$nodes.attr('data-events', "scroll");
},
closeMeListener: function closeMeListener(e, pluginId) {
var plugin = e.namespace.split('.')[0];
var plugins = jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-".concat(plugin, "]")).not("[data-yeti-box=\"".concat(pluginId, "\"]"));
plugins.each(function() {
var _this = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this);
_this.triggerHandler('close.zf.trigger', [_this]);
});
} // Global, parses whole document.
};
Triggers.Initializers.addClosemeListener = function(pluginName) {
var yetiBoxes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-yeti-box]'),
plugNames = ['dropdown', 'tooltip', 'reveal'];
if (pluginName) {
if (typeof pluginName === 'string') {
plugNames.push(pluginName);
} else if (_typeof(pluginName) === 'object' && typeof pluginName[0] === 'string') {
plugNames.concat(pluginName);
} else {
console.error('Plugin names must be strings');
}
}
if (yetiBoxes.length) {
var listeners = plugNames.map(function(name) {
return "closeme.zf.".concat(name);
}).join(' ');
jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(listeners).on(listeners, Triggers.Listeners.Global.closeMeListener);
}
};
function debounceGlobalListener(debounce, trigger, listener) {
var timer,
args = Array.prototype.slice.call(arguments, 3);
jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(trigger).on(trigger, function(e) {
if (timer) {
clearTimeout(timer);
}
timer = setTimeout(function() {
listener.apply(null, args);
}, debounce || 10); //default time to emit scroll event
});
}
Triggers.Initializers.addResizeListener = function(debounce) {
var $nodes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-resize]');
if ($nodes.length) {
debounceGlobalListener(debounce, 'resize.zf.trigger', Triggers.Listeners.Global.resizeListener, $nodes);
}
};
Triggers.Initializers.addScrollListener = function(debounce) {
var $nodes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-scroll]');
if ($nodes.length) {
debounceGlobalListener(debounce, 'scroll.zf.trigger', Triggers.Listeners.Global.scrollListener, $nodes);
}
};
Triggers.Initializers.addMutationEventsListener = function($elem) {
if (!MutationObserver) {
return false;
}
var $nodes = $elem.find('[data-resize], [data-scroll], [data-mutate]'); //element callback
var listeningElementsMutation = function listeningElementsMutation(mutationRecordsList) {
var $target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(mutationRecordsList[0].target); //trigger the event handler for the element depending on type
switch (mutationRecordsList[0].type) {
case "attributes":
if ($target.attr("data-events") === "scroll" && mutationRecordsList[0].attributeName === "data-events") {
$target.triggerHandler('scrollme.zf.trigger', [$target, window.pageYOffset]);
}
if ($target.attr("data-events") === "resize" && mutationRecordsList[0].attributeName === "data-events") {
$target.triggerHandler('resizeme.zf.trigger', [$target]);
}
if (mutationRecordsList[0].attributeName === "style") {
$target.closest("[data-mutate]").attr("data-events", "mutate");
$target.closest("[data-mutate]").triggerHandler('mutateme.zf.trigger', [$target.closest("[data-mutate]")]);
}
break;
case "childList":
$target.closest("[data-mutate]").attr("data-events", "mutate");
$target.closest("[data-mutate]").triggerHandler('mutateme.zf.trigger', [$target.closest("[data-mutate]")]);
break;
default:
return false;
//nothing
}
};
if ($nodes.length) {
//for each element that needs to listen for resizing, scrolling, or mutation add a single observer
for (var i = 0; i <= $nodes.length - 1; i++) {
var elementObserver = new MutationObserver(listeningElementsMutation);
elementObserver.observe($nodes[i], {
attributes: true,
childList: true,
characterData: false,
subtree: true,
attributeFilter: ["data-events", "style"]
});
}
}
};
Triggers.Initializers.addSimpleListeners = function() {
var $document = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document);
Triggers.Initializers.addOpenListener($document);
Triggers.Initializers.addCloseListener($document);
Triggers.Initializers.addToggleListener($document);
Triggers.Initializers.addCloseableListener($document);
Triggers.Initializers.addToggleFocusListener($document);
};
Triggers.Initializers.addGlobalListeners = function() {
var $document = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document);
Triggers.Initializers.addMutationEventsListener($document);
Triggers.Initializers.addResizeListener();
Triggers.Initializers.addScrollListener();
Triggers.Initializers.addClosemeListener();
};
Triggers.init = function($, Foundation) {
Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["onLoad"])($(window), function() {
if ($.triggersInitialized !== true) {
Triggers.Initializers.addSimpleListeners();
Triggers.Initializers.addGlobalListeners();
$.triggersInitialized = true;
}
});
if (Foundation) {
Foundation.Triggers = Triggers; // Legacy included to be backwards compatible for now.
Foundation.IHearYou = Triggers.Initializers.addGlobalListeners;
}
};
//# sourceURL=webpack:///./js/foundation.util.triggers.js?
|
#3 JavaScript::Eval (size: 15411, repeated: 1) - SHA256: 3e59c7286d4210686b27d71b88f73817022212d414ba18b0f3197f188374a78a
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */
__webpack_require__.d(__webpack_exports__, "AccordionMenu", function() {
return AccordionMenu;
});
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! jquery */ "jquery");
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */
var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! ./foundation.util.keyboard */ "./js/foundation.util.keyboard.js");
/* harmony import */
var _foundation_util_nest__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! ./foundation.util.nest */ "./js/foundation.util.nest.js");
/* harmony import */
var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
/* harmony import */
var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( /*! ./foundation.core.plugin */ "./js/foundation.core.plugin.js");
function _typeof(obj) {
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function _typeof(obj) {
return typeof obj;
};
} else {
_typeof = function _typeof(obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
return _typeof(obj);
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a 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);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
function _possibleConstructorReturn(self, call) {
if (call && (_typeof(call) === "object" || typeof call === "function")) {
return call;
}
return _assertThisInitialized(self);
}
function _assertThisInitialized(self) {
if (self === void 0) {
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}
return self;
}
function _getPrototypeOf(o) {
_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
return o.__proto__ || Object.getPrototypeOf(o);
};
return _getPrototypeOf(o);
}
function _inherits(subClass, superClass) {
if (typeof superClass !== "function" && superClass !== null) {
throw new TypeError("Super expression must either be null or a function");
}
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
writable: true,
configurable: true
}
});
if (superClass) _setPrototypeOf(subClass, superClass);
}
function _setPrototypeOf(o, p) {
_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
o.__proto__ = p;
return o;
};
return _setPrototypeOf(o, p);
}
/**
* AccordionMenu module.
* @module foundation.accordionMenu
* @requires foundation.util.keyboard
* @requires foundation.util.nest
*/
var AccordionMenu =
/*#__PURE__*/
function(_Plugin) {
_inherits(AccordionMenu, _Plugin);
function AccordionMenu() {
_classCallCheck(this, AccordionMenu);
return _possibleConstructorReturn(this, _getPrototypeOf(AccordionMenu).apply(this, arguments));
}
_createClass(AccordionMenu, [{
key: "_setup",
/**
* Creates a new instance of an accordion menu.
* @class
* @name AccordionMenu
* @fires AccordionMenu#init
* @param {jQuery} element - jQuery object to make into an accordion menu.
* @param {Object} options - Overrides to the default plugin settings.
*/
value: function _setup(element, options) {
this.$element = element;
this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, AccordionMenu.defaults, this.$element.data(), options);
this.className = 'AccordionMenu'; // ie9 back compat
this._init();
_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].register('AccordionMenu', {
'ENTER': 'toggle',
'SPACE': 'toggle',
'ARROW_RIGHT': 'open',
'ARROW_UP': 'up',
'ARROW_DOWN': 'down',
'ARROW_LEFT': 'close',
'ESCAPE': 'closeAll'
});
}
/**
* Initializes the accordion menu by hiding all nested menus.
* @private
*/
}, {
key: "_init",
value: function _init() {
_foundation_util_nest__WEBPACK_IMPORTED_MODULE_2__["Nest"].Feather(this.$element, 'accordion');
var _this = this;
this.$element.find('[data-submenu]').not('.is-active').slideUp(0); //.find('a').css('padding-left', '1rem');
this.$element.attr({
'role': 'tree',
'aria-multiselectable': this.options.multiOpen
});
this.$menuLinks = this.$element.find('.is-accordion-submenu-parent');
this.$menuLinks.each(function() {
var linkId = this.id || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["GetYoDigits"])(6, 'acc-menu-link'),
$elem = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),
$sub = $elem.children('[data-submenu]'),
subId = $sub[0].id || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["GetYoDigits"])(6, 'acc-menu'),
isActive = $sub.hasClass('is-active');
if (_this.options.parentLink) {
var $anchor = $elem.children('a');
$anchor.clone().prependTo($sub).wrap('<li data-is-parent-link class="is-submenu-parent-item is-submenu-item is-accordion-submenu-item"></li>');
}
if (_this.options.submenuToggle) {
$elem.addClass('has-submenu-toggle');
$elem.children('a').after('<button id="' + linkId + '" class="submenu-toggle" aria-controls="' + subId + '" aria-expanded="' + isActive + '" title="' + _this.options.submenuToggleText + '"><span class="submenu-toggle-text">' + _this.options.submenuToggleText + '</span></button>');
} else {
$elem.attr({
'aria-controls': subId,
'aria-expanded': isActive,
'id': linkId
});
}
$sub.attr({
'aria-labelledby': linkId,
'aria-hidden': !isActive,
'role': 'group',
'id': subId
});
});
this.$element.find('li').attr({
'role': 'treeitem'
});
var initPanes = this.$element.find('.is-active');
if (initPanes.length) {
var _this = this;
initPanes.each(function() {
_this.down(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this));
});
}
this._events();
}
/**
* Adds event handlers for items within the menu.
* @private
*/
}, {
key: "_events",
value: function _events() {
var _this = this;
this.$element.find('li').each(function() {
var $submenu = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).children('[data-submenu]');
if ($submenu.length) {
if (_this.options.submenuToggle) {
jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).children('.submenu-toggle').off('click.zf.accordionMenu').on('click.zf.accordionMenu', function(e) {
_this.toggle($submenu);
});
} else {
jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).children('a').off('click.zf.accordionMenu').on('click.zf.accordionMenu', function(e) {
e.preventDefault();
_this.toggle($submenu);
});
}
}
}).on('keydown.zf.accordionmenu', function(e) {
var $element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),
$elements = $element.parent('ul').children('li'),
$prevElement,
$nextElement,
$target = $element.children('[data-submenu]');
$elements.each(function(i) {
if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).is($element)) {
$prevElement = $elements.eq(Math.max(0, i - 1)).find('a').first();
$nextElement = $elements.eq(Math.min(i + 1, $elements.length - 1)).find('a').first();
if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).children('[data-submenu]:visible').length) {
// has open sub menu
$nextElement = $element.find('li:first-child').find('a').first();
}
if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).is(':first-child')) {
// is first element of sub menu
$prevElement = $element.parents('li').first().find('a').first();
} else if ($prevElement.parents('li').first().children('[data-submenu]:visible').length) {
// if previous element has open sub menu
$prevElement = $prevElement.parents('li').find('li:last-child').find('a').first();
}
if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).is(':last-child')) {
// is last element of sub menu
$nextElement = $element.parents('li').first().next('li').find('a').first();
}
return;
}
});
_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].handleKey(e, 'AccordionMenu', {
open: function open() {
if ($target.is(':hidden')) {
_this.down($target);
$target.find('li').first().find('a').first().focus();
}
},
close: function close() {
if ($target.length && !$target.is(':hidden')) {
// close active sub of this item
_this.up($target);
} else if ($element.parent('[data-submenu]').length) {
// close currently open sub
_this.up($element.parent('[data-submenu]'));
$element.parents('li').first().find('a').first().focus();
}
},
up: function up() {
$prevElement.focus();
return true;
},
down: function down() {
$nextElement.focus();
return true;
},
toggle: function toggle() {
if (_this.options.submenuToggle) {
return false;
}
if ($element.children('[data-submenu]').length) {
_this.toggle($element.children('[data-submenu]'));
return true;
}
},
closeAll: function closeAll() {
_this.hideAll();
},
handled: function handled(preventDefault) {
if (preventDefault) {
e.preventDefault();
}
e.stopImmediatePropagation();
}
});
}); //.attr('tabindex', 0);
}
/**
* Closes all panes of the menu.
* @function
*/
}, {
key: "hideAll",
value: function hideAll() {
this.up(this.$element.find('[data-submenu]'));
}
/**
* Opens all panes of the menu.
* @function
*/
}, {
key: "showAll",
value: function showAll() {
this.down(this.$element.find('[data-submenu]'));
}
/**
* Toggles the open/close state of a submenu.
* @function
* @param {jQuery} $target - the submenu to toggle
*/
}, {
key: "toggle",
value: function toggle($target) {
if (!$target.is(':animated')) {
if (!$target.is(':hidden')) {
this.up($target);
} else {
this.down($target);
}
}
}
/**
* Opens the sub-menu defined by `$target`.
* @param {jQuery} $target - Sub-menu to open.
* @fires AccordionMenu#down
*/
}, {
key: "down",
value: function down($target) {
var _this2 = this;
if (!this.options.multiOpen) {
this.up(this.$element.find('.is-active').not($target.parentsUntil(this.$element).add($target)));
}
$target.addClass('is-active').attr({
'aria-hidden': false
});
if (this.options.submenuToggle) {
$target.prev('.submenu-toggle').attr({
'aria-expanded': true
});
} else {
$target.parent('.is-accordion-submenu-parent').attr({
'aria-expanded': true
});
}
$target.slideDown(this.options.slideSpeed, function() {
/**
* Fires when the menu is done opening.
* @event AccordionMenu#down
*/
_this2.$element.trigger('down.zf.accordionMenu', [$target]);
});
}
/**
* Closes the sub-menu defined by `$target`. All sub-menus inside the target will be closed as well.
* @param {jQuery} $target - Sub-menu to close.
* @fires AccordionMenu#up
*/
}, {
key: "up",
value: function up($target) {
var _this3 = this;
var $submenus = $target.find('[data-submenu]');
var $allmenus = $target.add($submenus);
$submenus.slideUp(0);
$allmenus.removeClass('is-active').attr('aria-hidden', true);
if (this.options.submenuToggle) {
$allmenus.prev('.submenu-toggle').attr('aria-expanded', false);
} else {
$allmenus.parent('.is-accordion-submenu-parent').attr('aria-expanded', false);
}
$target.slideUp(this.options.slideSpeed, function() {
/**
* Fires when the menu is done collapsing up.
* @event AccordionMenu#up
*/
_this3.$element.trigger('up.zf.accordionMenu', [$target]);
});
}
/**
* Destroys an instance of accordion menu.
* @fires AccordionMenu#destroyed
*/
}, {
key: "_destroy",
value: function _destroy() {
this.$element.find('[data-submenu]').slideDown(0).css('display', '');
this.$element.find('a').off('click.zf.accordionMenu');
this.$element.find('[data-is-parent-link]').detach();
if (this.options.submenuToggle) {
this.$element.find('.has-submenu-toggle').removeClass('has-submenu-toggle');
this.$element.find('.submenu-toggle').remove();
}
_foundation_util_nest__WEBPACK_IMPORTED_MODULE_2__["Nest"].Burn(this.$element, 'accordion');
}
}]);
return AccordionMenu;
}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_4__["Plugin"]);
AccordionMenu.defaults = {
/**
* Adds the parent link to the submenu.
* @option
* @type {boolean}
* @default false
*/
parentLink: false,
/**
* Amount of time to animate the opening of a submenu in ms.
* @option
* @type {number}
* @default 250
*/
slideSpeed: 250,
/**
* Adds a separate submenu toggle button. This allows the parent item to have a link.
* @option
* @example true
*/
submenuToggle: false,
/**
* The text used for the submenu toggle if enabled. This is used for screen readers only.
* @option
* @example true
*/
submenuToggleText: 'Toggle menu',
/**
* Allow the menu to have multiple open panes.
* @option
* @type {boolean}
* @default true
*/
multiOpen: true
};
//# sourceURL=webpack:///./js/foundation.accordionMenu.js?
|
#4 JavaScript::Eval (size: 9868, repeated: 1) - SHA256: f562602be89bfebc53ded35ecb41d7f74bd8fc13b4766e80bc838d6093831e3f
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */
__webpack_require__.d(__webpack_exports__, "Interchange", function() {
return Interchange;
});
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! jquery */ "jquery");
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */
var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! ./foundation.util.mediaQuery */ "./js/foundation.util.mediaQuery.js");
/* harmony import */
var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! ./foundation.core.plugin */ "./js/foundation.core.plugin.js");
/* harmony import */
var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
function _typeof(obj) {
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function _typeof(obj) {
return typeof obj;
};
} else {
_typeof = function _typeof(obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
return _typeof(obj);
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a 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);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
function _possibleConstructorReturn(self, call) {
if (call && (_typeof(call) === "object" || typeof call === "function")) {
return call;
}
return _assertThisInitialized(self);
}
function _assertThisInitialized(self) {
if (self === void 0) {
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}
return self;
}
function _getPrototypeOf(o) {
_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
return o.__proto__ || Object.getPrototypeOf(o);
};
return _getPrototypeOf(o);
}
function _inherits(subClass, superClass) {
if (typeof superClass !== "function" && superClass !== null) {
throw new TypeError("Super expression must either be null or a function");
}
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
writable: true,
configurable: true
}
});
if (superClass) _setPrototypeOf(subClass, superClass);
}
function _setPrototypeOf(o, p) {
_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
o.__proto__ = p;
return o;
};
return _setPrototypeOf(o, p);
}
/**
* Interchange module.
* @module foundation.interchange
* @requires foundation.util.mediaQuery
*/
var Interchange =
/*#__PURE__*/
function(_Plugin) {
_inherits(Interchange, _Plugin);
function Interchange() {
_classCallCheck(this, Interchange);
return _possibleConstructorReturn(this, _getPrototypeOf(Interchange).apply(this, arguments));
}
_createClass(Interchange, [{
key: "_setup",
/**
* Creates a new instance of Interchange.
* @class
* @name Interchange
* @fires Interchange#init
* @param {Object} element - jQuery object to add the trigger to.
* @param {Object} options - Overrides to the default plugin settings.
*/
value: function _setup(element, options) {
this.$element = element;
this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, Interchange.defaults, options);
this.rules = [];
this.currentPath = '';
this.className = 'Interchange'; // ie9 back compat
this._init();
this._events();
}
/**
* Initializes the Interchange plugin and calls functions to get interchange functioning on load.
* @function
* @private
*/
}, {
key: "_init",
value: function _init() {
_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"]._init();
var id = this.$element[0].id || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["GetYoDigits"])(6, 'interchange');
this.$element.attr({
'data-resize': id,
'id': id
});
this._addBreakpoints();
this._generateRules();
this._reflow();
}
/**
* Initializes events for Interchange.
* @function
* @private
*/
}, {
key: "_events",
value: function _events() {
var _this2 = this;
this.$element.off('resizeme.zf.trigger').on('resizeme.zf.trigger', function() {
return _this2._reflow();
});
}
/**
* Calls necessary functions to update Interchange upon DOM change
* @function
* @private
*/
}, {
key: "_reflow",
value: function _reflow() {
var match; // Iterate through each rule, but only save the last match
for (var i in this.rules) {
if (this.rules.hasOwnProperty(i)) {
var rule = this.rules[i];
if (window.matchMedia(rule.query).matches) {
match = rule;
}
}
}
if (match) {
this.replace(match.path);
}
}
/**
* Gets the Foundation breakpoints and adds them to the Interchange.SPECIAL_QUERIES object.
* @function
* @private
*/
}, {
key: "_addBreakpoints",
value: function _addBreakpoints() {
for (var i in _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"].queries) {
if (_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"].queries.hasOwnProperty(i)) {
var query = _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"].queries[i];
Interchange.SPECIAL_QUERIES[query.name] = query.value;
}
}
}
/**
* Checks the Interchange element for the provided media query + content pairings
* @function
* @private
* @param {Object} element - jQuery object that is an Interchange instance
* @returns {Array} scenarios - Array of objects that have 'mq' and 'path' keys with corresponding keys
*/
}, {
key: "_generateRules",
value: function _generateRules(element) {
var rulesList = [];
var rules;
if (this.options.rules) {
rules = this.options.rules;
} else {
rules = this.$element.data('interchange');
}
rules = typeof rules === 'string' ? rules.match(/\[.*?, .*?\]/g) : rules;
for (var i in rules) {
if (rules.hasOwnProperty(i)) {
var rule = rules[i].slice(1, -1).split(', ');
var path = rule.slice(0, -1).join('');
var query = rule[rule.length - 1];
if (Interchange.SPECIAL_QUERIES[query]) {
query = Interchange.SPECIAL_QUERIES[query];
}
rulesList.push({
path: path,
query: query
});
}
}
this.rules = rulesList;
}
/**
* Update the `src` property of an image, or change the HTML of a container, to the specified path.
* @function
* @param {String} path - Path to the image or HTML partial.
* @fires Interchange#replaced
*/
}, {
key: "replace",
value: function replace(path) {
if (this.currentPath === path) return;
var _this = this,
trigger = 'replaced.zf.interchange'; // Replacing images
if (this.$element[0].nodeName === 'IMG') {
this.$element.attr('src', path).on('load', function() {
_this.currentPath = path;
}).trigger(trigger);
} // Replacing background images
else if (path.match(/\.(gif|jpg|jpeg|png|svg|tiff)([?#].*)?/i)) {
path = path.replace(/\(/g, '%28').replace(/\)/g, '%29');
this.$element.css({
'background-image': 'url(' + path + ')'
}).trigger(trigger);
} // Replacing HTML
else {
jquery__WEBPACK_IMPORTED_MODULE_0___default.a.get(path, function(response) {
_this.$element.html(response).trigger(trigger);
jquery__WEBPACK_IMPORTED_MODULE_0___default()(response).foundation();
_this.currentPath = path;
});
}
/**
* Fires when content in an Interchange element is done being loaded.
* @event Interchange#replaced
*/
// this.$element.trigger('replaced.zf.interchange');
}
/**
* Destroys an instance of interchange.
* @function
*/
}, {
key: "_destroy",
value: function _destroy() {
this.$element.off('resizeme.zf.trigger');
}
}]);
return Interchange;
}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2__["Plugin"]);
/**
* Default settings for plugin
*/
Interchange.defaults = {
/**
* Rules to be applied to Interchange elements. Set with the `data-interchange` array notation.
* @option
* @type {?array}
* @default null
*/
rules: null
};
Interchange.SPECIAL_QUERIES = {
'landscape': 'screen and (orientation: landscape)',
'portrait': 'screen and (orientation: portrait)',
'retina': 'only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx)'
};
//# sourceURL=webpack:///./js/foundation.interchange.js?
|
#5 JavaScript::Eval (size: 204, repeated: 1) - SHA256: 4fb169642f62049410510b028741df449398b809ab5b123dbceaa12b7c8a3520
module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__;
//# sourceURL=webpack:///external_%7B%22root%22:%5B%22jQuery%22%5D,%22amd%22:%22jquery%22,%22commonjs%22:%22jquery%22,%22commonjs2%22:%22jquery%22%7D?
|
#6 JavaScript::Eval (size: 3095, repeated: 1) - SHA256: 735031528a9ee9d654fc0609f60b58e0d9adc7c236fdf742354b57b88212c3e0
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */
__webpack_require__.d(__webpack_exports__, "Plugin", function() {
return Plugin;
});
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! jquery */ "jquery");
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */
var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a 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);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
// Abstract class for providing lifecycle hooks. Expect plugins to define AT LEAST
// {function} _setup (replaces previous constructor),
// {function} _destroy (replaces previous destroy)
var Plugin =
/*#__PURE__*/
function() {
function Plugin(element, options) {
_classCallCheck(this, Plugin);
this._setup(element, options);
var pluginName = getPluginName(this);
this.uuid = Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["GetYoDigits"])(6, pluginName);
if (!this.$element.attr("data-".concat(pluginName))) {
this.$element.attr("data-".concat(pluginName), this.uuid);
}
if (!this.$element.data('zfPlugin')) {
this.$element.data('zfPlugin', this);
}
/**
* Fires when the plugin has initialized.
* @event Plugin#init
*/
this.$element.trigger("init.zf.".concat(pluginName));
}
_createClass(Plugin, [{
key: "destroy",
value: function destroy() {
this._destroy();
var pluginName = getPluginName(this);
this.$element.removeAttr("data-".concat(pluginName)).removeData('zfPlugin')
/**
* Fires when the plugin has been destroyed.
* @event Plugin#destroyed
*/
.trigger("destroyed.zf.".concat(pluginName));
for (var prop in this) {
this[prop] = null; //clean up script to prep for garbage collection.
}
}
}]);
return Plugin;
}(); // Convert PascalCase to kebab-case
// Thank you: http://stackoverflow.com/a/8955580
function hyphenate(str) {
return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
}
function getPluginName(obj) {
if (typeof obj.constructor.name !== 'undefined') {
return hyphenate(obj.constructor.name);
} else {
return hyphenate(obj.className);
}
}
//# sourceURL=webpack:///./js/foundation.core.plugin.js?
|
#7 JavaScript::Eval (size: 20184, repeated: 1) - SHA256: 8e2896e4ef8d92c5671ea2807b4ef159ab5a4922c0446e7134f192ef064fc1c0
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */
__webpack_require__.d(__webpack_exports__, "Tabs", function() {
return Tabs;
});
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! jquery */ "jquery");
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */
var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
/* harmony import */
var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! ./foundation.util.keyboard */ "./js/foundation.util.keyboard.js");
/* harmony import */
var _foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! ./foundation.util.imageLoader */ "./js/foundation.util.imageLoader.js");
/* harmony import */
var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( /*! ./foundation.core.plugin */ "./js/foundation.core.plugin.js");
function _typeof(obj) {
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function _typeof(obj) {
return typeof obj;
};
} else {
_typeof = function _typeof(obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
return _typeof(obj);
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a 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);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
function _possibleConstructorReturn(self, call) {
if (call && (_typeof(call) === "object" || typeof call === "function")) {
return call;
}
return _assertThisInitialized(self);
}
function _assertThisInitialized(self) {
if (self === void 0) {
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}
return self;
}
function _getPrototypeOf(o) {
_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
return o.__proto__ || Object.getPrototypeOf(o);
};
return _getPrototypeOf(o);
}
function _inherits(subClass, superClass) {
if (typeof superClass !== "function" && superClass !== null) {
throw new TypeError("Super expression must either be null or a function");
}
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
writable: true,
configurable: true
}
});
if (superClass) _setPrototypeOf(subClass, superClass);
}
function _setPrototypeOf(o, p) {
_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
o.__proto__ = p;
return o;
};
return _setPrototypeOf(o, p);
}
/**
* Tabs module.
* @module foundation.tabs
* @requires foundation.util.keyboard
* @requires foundation.util.imageLoader if tabs contain images
*/
var Tabs =
/*#__PURE__*/
function(_Plugin) {
_inherits(Tabs, _Plugin);
function Tabs() {
_classCallCheck(this, Tabs);
return _possibleConstructorReturn(this, _getPrototypeOf(Tabs).apply(this, arguments));
}
_createClass(Tabs, [{
key: "_setup",
/**
* Creates a new instance of tabs.
* @class
* @name Tabs
* @fires Tabs#init
* @param {jQuery} element - jQuery object to make into tabs.
* @param {Object} options - Overrides to the default plugin settings.
*/
value: function _setup(element, options) {
this.$element = element;
this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, Tabs.defaults, this.$element.data(), options);
this.className = 'Tabs'; // ie9 back compat
this._init();
_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].register('Tabs', {
'ENTER': 'open',
'SPACE': 'open',
'ARROW_RIGHT': 'next',
'ARROW_UP': 'previous',
'ARROW_DOWN': 'next',
'ARROW_LEFT': 'previous' // 'TAB': 'next',
// 'SHIFT_TAB': 'previous'
});
}
/**
* Initializes the tabs by showing and focusing (if autoFocus=true) the preset active tab.
* @private
*/
}, {
key: "_init",
value: function _init() {
var _this2 = this;
var _this = this;
this._isInitializing = true;
this.$element.attr({
'role': 'tablist'
});
this.$tabTitles = this.$element.find(".".concat(this.options.linkClass));
this.$tabContent = jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-tabs-content=\"".concat(this.$element[0].id, "\"]"));
this.$tabTitles.each(function() {
var $elem = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),
$link = $elem.find('a'),
isActive = $elem.hasClass("".concat(_this.options.linkActiveClass)),
hash = $link.attr('data-tabs-target') || $link[0].hash.slice(1),
linkId = $link[0].id ? $link[0].id : "".concat(hash, "-label"),
$tabContent = jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(hash));
$elem.attr({
'role': 'presentation'
});
$link.attr({
'role': 'tab',
'aria-controls': hash,
'aria-selected': isActive,
'id': linkId,
'tabindex': isActive ? '0' : '-1'
});
$tabContent.attr({
'role': 'tabpanel',
'aria-labelledby': linkId
}); // Save up the initial hash to return to it later when going back in history
if (isActive) {
_this._initialAnchor = "#".concat(hash);
}
if (!isActive) {
$tabContent.attr('aria-hidden', 'true');
}
if (isActive && _this.options.autoFocus) {
_this.onLoadListener = Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["onLoad"])(jquery__WEBPACK_IMPORTED_MODULE_0___default()(window), function() {
jquery__WEBPACK_IMPORTED_MODULE_0___default()('html, body').animate({
scrollTop: $elem.offset().top
}, _this.options.deepLinkSmudgeDelay, function() {
$link.focus();
});
});
}
});
if (this.options.matchHeight) {
var $images = this.$tabContent.find('img');
if ($images.length) {
Object(_foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_3__["onImagesLoaded"])($images, this._setHeight.bind(this));
} else {
this._setHeight();
}
} // Current context-bound function to open tabs on page load or history hashchange
this._checkDeepLink = function() {
var anchor = window.location.hash;
if (!anchor.length) {
// If we are still initializing and there is no anchor, then there is nothing to do
if (_this2._isInitializing) return; // Otherwise, move to the initial anchor
if (_this2._initialAnchor) anchor = _this2._initialAnchor;
}
var $anchor = anchor && jquery__WEBPACK_IMPORTED_MODULE_0___default()(anchor);
var $link = anchor && _this2.$element.find('[href$="' + anchor + '"]'); // Whether the anchor element that has been found is part of this element
var isOwnAnchor = !!($anchor.length && $link.length); // If there is an anchor for the hash, select it
if ($anchor && $anchor.length && $link && $link.length) {
_this2.selectTab($anchor, true);
} // Otherwise, collapse everything
else {
_this2._collapse();
}
if (isOwnAnchor) {
// Roll up a little to show the titles
if (_this2.options.deepLinkSmudge) {
var offset = _this2.$element.offset();
jquery__WEBPACK_IMPORTED_MODULE_0___default()('html, body').animate({
scrollTop: offset.top
}, _this2.options.deepLinkSmudgeDelay);
}
/**
* Fires when the plugin has deeplinked at pageload
* @event Tabs#deeplink
*/
_this2.$element.trigger('deeplink.zf.tabs', [$link, $anchor]);
}
}; //use browser to open a tab, if it exists in this tabset
if (this.options.deepLink) {
this._checkDeepLink();
}
this._events();
this._isInitializing = false;
}
/**
* Adds event handlers for items within the tabs.
* @private
*/
}, {
key: "_events",
value: function _events() {
this._addKeyHandler();
this._addClickHandler();
this._setHeightMqHandler = null;
if (this.options.matchHeight) {
this._setHeightMqHandler = this._setHeight.bind(this);
jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('changed.zf.mediaquery', this._setHeightMqHandler);
}
if (this.options.deepLink) {
jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('hashchange', this._checkDeepLink);
}
}
/**
* Adds click handlers for items within the tabs.
* @private
*/
}, {
key: "_addClickHandler",
value: function _addClickHandler() {
var _this = this;
this.$element.off('click.zf.tabs').on('click.zf.tabs', ".".concat(this.options.linkClass), function(e) {
e.preventDefault();
e.stopPropagation();
_this._handleTabChange(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this));
});
}
/**
* Adds keyboard event handlers for items within the tabs.
* @private
*/
}, {
key: "_addKeyHandler",
value: function _addKeyHandler() {
var _this = this;
this.$tabTitles.off('keydown.zf.tabs').on('keydown.zf.tabs', function(e) {
if (e.which === 9) return;
var $element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),
$elements = $element.parent('ul').children('li'),
$prevElement,
$nextElement;
$elements.each(function(i) {
if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).is($element)) {
if (_this.options.wrapOnKeys) {
$prevElement = i === 0 ? $elements.last() : $elements.eq(i - 1);
$nextElement = i === $elements.length - 1 ? $elements.first() : $elements.eq(i + 1);
} else {
$prevElement = $elements.eq(Math.max(0, i - 1));
$nextElement = $elements.eq(Math.min(i + 1, $elements.length - 1));
}
return;
}
}); // handle keyboard event with keyboard util
_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].handleKey(e, 'Tabs', {
open: function open() {
$element.find('[role="tab"]').focus();
_this._handleTabChange($element);
},
previous: function previous() {
$prevElement.find('[role="tab"]').focus();
_this._handleTabChange($prevElement);
},
next: function next() {
$nextElement.find('[role="tab"]').focus();
_this._handleTabChange($nextElement);
},
handled: function handled() {
e.stopPropagation();
e.preventDefault();
}
});
});
}
/**
* Opens the tab `$targetContent` defined by `$target`. Collapses active tab.
* @param {jQuery} $target - Tab to open.
* @param {boolean} historyHandled - browser has already handled a history update
* @fires Tabs#change
* @function
*/
}, {
key: "_handleTabChange",
value: function _handleTabChange($target, historyHandled) {
// With `activeCollapse`, if the target is the active Tab, collapse it.
if ($target.hasClass("".concat(this.options.linkActiveClass))) {
if (this.options.activeCollapse) {
this._collapse();
}
return;
}
var $oldTab = this.$element.find(".".concat(this.options.linkClass, ".").concat(this.options.linkActiveClass)),
$tabLink = $target.find('[role="tab"]'),
target = $tabLink.attr('data-tabs-target'),
anchor = target && target.length ? "#".concat(target) : $tabLink[0].hash,
$targetContent = this.$tabContent.find(anchor); //close old tab
this._collapseTab($oldTab); //open new tab
this._openTab($target); //either replace or update browser history
if (this.options.deepLink && !historyHandled) {
if (this.options.updateHistory) {
history.pushState({}, '', anchor);
} else {
history.replaceState({}, '', anchor);
}
}
/**
* Fires when the plugin has successfully changed tabs.
* @event Tabs#change
*/
this.$element.trigger('change.zf.tabs', [$target, $targetContent]); //fire to children a mutation event
$targetContent.find("[data-mutate]").trigger("mutateme.zf.trigger");
}
/**
* Opens the tab `$targetContent` defined by `$target`.
* @param {jQuery} $target - Tab to open.
* @function
*/
}, {
key: "_openTab",
value: function _openTab($target) {
var $tabLink = $target.find('[role="tab"]'),
hash = $tabLink.attr('data-tabs-target') || $tabLink[0].hash.slice(1),
$targetContent = this.$tabContent.find("#".concat(hash));
$target.addClass("".concat(this.options.linkActiveClass));
$tabLink.attr({
'aria-selected': 'true',
'tabindex': '0'
});
$targetContent.addClass("".concat(this.options.panelActiveClass)).removeAttr('aria-hidden');
}
/**
* Collapses `$targetContent` defined by `$target`.
* @param {jQuery} $target - Tab to collapse.
* @function
*/
}, {
key: "_collapseTab",
value: function _collapseTab($target) {
var $target_anchor = $target.removeClass("".concat(this.options.linkActiveClass)).find('[role="tab"]').attr({
'aria-selected': 'false',
'tabindex': -1
});
jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat($target_anchor.attr('aria-controls'))).removeClass("".concat(this.options.panelActiveClass)).attr({
'aria-hidden': 'true'
});
}
/**
* Collapses the active Tab.
* @fires Tabs#collapse
* @function
*/
}, {
key: "_collapse",
value: function _collapse() {
var $activeTab = this.$element.find(".".concat(this.options.linkClass, ".").concat(this.options.linkActiveClass));
if ($activeTab.length) {
this._collapseTab($activeTab);
/**
* Fires when the plugin has successfully collapsed tabs.
* @event Tabs#collapse
*/
this.$element.trigger('collapse.zf.tabs', [$activeTab]);
}
}
/**
* Public method for selecting a content pane to display.
* @param {jQuery | String} elem - jQuery object or string of the id of the pane to display.
* @param {boolean} historyHandled - browser has already handled a history update
* @function
*/
}, {
key: "selectTab",
value: function selectTab(elem, historyHandled) {
var idStr;
if (_typeof(elem) === 'object') {
idStr = elem[0].id;
} else {
idStr = elem;
}
if (idStr.indexOf('#') < 0) {
idStr = "#".concat(idStr);
}
var $target = this.$tabTitles.has("[href$=\"".concat(idStr, "\"]"));
this._handleTabChange($target, historyHandled);
}
}, {
key: "_setHeight",
/**
* Sets the height of each panel to the height of the tallest panel.
* If enabled in options, gets called on media query change.
* If loading content via external source, can be called directly or with _reflow.
* If enabled with `data-match-height="true"`, tabs sets to equal height
* @function
* @private
*/
value: function _setHeight() {
var max = 0,
_this = this; // Lock down the `this` value for the root tabs object
this.$tabContent.find(".".concat(this.options.panelClass)).css('height', '').each(function() {
var panel = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),
isActive = panel.hasClass("".concat(_this.options.panelActiveClass)); // get the options from the parent instead of trying to get them from the child
if (!isActive) {
panel.css({
'visibility': 'hidden',
'display': 'block'
});
}
var temp = this.getBoundingClientRect().height;
if (!isActive) {
panel.css({
'visibility': '',
'display': ''
});
}
max = temp > max ? temp : max;
}).css('height', "".concat(max, "px"));
}
/**
* Destroys an instance of tabs.
* @fires Tabs#destroyed
*/
}, {
key: "_destroy",
value: function _destroy() {
this.$element.find(".".concat(this.options.linkClass)).off('.zf.tabs').hide().end().find(".".concat(this.options.panelClass)).hide();
if (this.options.matchHeight) {
if (this._setHeightMqHandler != null) {
jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off('changed.zf.mediaquery', this._setHeightMqHandler);
}
}
if (this.options.deepLink) {
jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off('hashchange', this._checkDeepLink);
}
if (this.onLoadListener) {
jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(this.onLoadListener);
}
}
}]);
return Tabs;
}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_4__["Plugin"]);
Tabs.defaults = {
/**
* Link the location hash to the active pane.
* Set the location hash when the active pane changes, and open the corresponding pane when the location changes.
* @option
* @type {boolean}
* @default false
*/
deepLink: false,
/**
* If `deepLink` is enabled, adjust the deep link scroll to make sure the top of the tab panel is visible
* @option
* @type {boolean}
* @default false
*/
deepLinkSmudge: false,
/**
* If `deepLinkSmudge` is enabled, animation time (ms) for the deep link adjustment
* @option
* @type {number}
* @default 300
*/
deepLinkSmudgeDelay: 300,
/**
* If `deepLink` is enabled, update the browser history with the open tab
* @option
* @type {boolean}
* @default false
*/
updateHistory: false,
/**
* Allows the window to scroll to content of active pane on load.
* Not recommended if more than one tab panel per page.
* @option
* @type {boolean}
* @default false
*/
autoFocus: false,
/**
* Allows keyboard input to 'wrap' around the tab links.
* @option
* @type {boolean}
* @default true
*/
wrapOnKeys: true,
/**
* Allows the tab content panes to match heights if set to true.
* @option
* @type {boolean}
* @default false
*/
matchHeight: false,
/**
* Allows active tabs to collapse when clicked.
* @option
* @type {boolean}
* @default false
*/
activeCollapse: false,
/**
* Class applied to `li`'s in tab link list.
* @option
* @type {string}
* @default 'tabs-title'
*/
linkClass: 'tabs-title',
/**
* Class applied to the active `li` in tab link list.
* @option
* @type {string}
* @default 'is-active'
*/
linkActiveClass: 'is-active',
/**
* Class applied to the content containers.
* @option
* @type {string}
* @default 'tabs-panel'
*/
panelClass: 'tabs-panel',
/**
* Class applied to the active content container.
* @option
* @type {string}
* @default 'is-active'
*/
panelActiveClass: 'is-active'
};
//# sourceURL=webpack:///./js/foundation.tabs.js?
|
#8 JavaScript::Eval (size: 1741, repeated: 1) - SHA256: 827b8360b303f9d3bd617476555b3ee52def5d8884288e7dfd86cc992c0bf979
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */
__webpack_require__.d(__webpack_exports__, "onImagesLoaded", function() {
return onImagesLoaded;
});
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! jquery */ "jquery");
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
/**
* Runs a callback function when images are fully loaded.
* @param {Object} images - Image(s) to check if loaded.
* @param {Func} callback - Function to execute when image is fully loaded.
*/
function onImagesLoaded(images, callback) {
var self = this,
unloaded = images.length;
if (unloaded === 0) {
callback();
}
images.each(function() {
// Check if image is loaded
if (this.complete && typeof this.naturalWidth !== 'undefined') {
singleImageLoaded();
} else {
// If the above check failed, simulate loading on detached element.
var image = new Image(); // Still count image as loaded if it finalizes with an error.
var events = "load.zf.images error.zf.images";
jquery__WEBPACK_IMPORTED_MODULE_0___default()(image).one(events, function me(event) {
// Unbind the event listeners. We're using 'one' but only one of the two events will have fired.
jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).off(events, me);
singleImageLoaded();
});
image.src = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).attr('src');
}
});
function singleImageLoaded() {
unloaded--;
if (unloaded === 0) {
callback();
}
}
}
//# sourceURL=webpack:///./js/foundation.util.imageLoader.js?
|
#9 JavaScript::Eval (size: 1743, repeated: 1) - SHA256: 75a2f90ab0923c992a8184ccbdc4edd1952bc1dbb5941d4736314ce01c2d9a65
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */
__webpack_require__.d(__webpack_exports__, "Timer", function() {
return Timer;
});
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! jquery */ "jquery");
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
function Timer(elem, options, cb) {
var _this = this,
duration = options.duration,
//options is an object for easily adding features later.
nameSpace = Object.keys(elem.data())[0] || 'timer',
remain = -1,
start,
timer;
this.isPaused = false;
this.restart = function() {
remain = -1;
clearTimeout(timer);
this.start();
};
this.start = function() {
this.isPaused = false; // if(!elem.data('paused')){ return false; }//maybe implement this sanity check if used for other things.
clearTimeout(timer);
remain = remain <= 0 ? duration : remain;
elem.data('paused', false);
start = Date.now();
timer = setTimeout(function() {
if (options.infinite) {
_this.restart(); //rerun the timer.
}
if (cb && typeof cb === 'function') {
cb();
}
}, remain);
elem.trigger("timerstart.zf.".concat(nameSpace));
};
this.pause = function() {
this.isPaused = true; //if(elem.data('paused')){ return false; }//maybe implement this sanity check if used for other things.
clearTimeout(timer);
elem.data('paused', true);
var end = Date.now();
remain = remain - (end - start);
elem.trigger("timerpaused.zf.".concat(nameSpace));
};
}
//# sourceURL=webpack:///./js/foundation.util.timer.js?
|
#10 JavaScript::Eval (size: 28648, repeated: 1) - SHA256: bcf75ffaa313fc54c26fdb479ded1cd45385cced0afdaf39020d38370d5b2674
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */
__webpack_require__.d(__webpack_exports__, "Abide", function() {
return Abide;
});
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! jquery */ "jquery");
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */
var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! ./foundation.core.plugin */ "./js/foundation.core.plugin.js");
/* harmony import */
var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
function _typeof(obj) {
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function _typeof(obj) {
return typeof obj;
};
} else {
_typeof = function _typeof(obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
return _typeof(obj);
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a 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);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
function _possibleConstructorReturn(self, call) {
if (call && (_typeof(call) === "object" || typeof call === "function")) {
return call;
}
return _assertThisInitialized(self);
}
function _assertThisInitialized(self) {
if (self === void 0) {
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}
return self;
}
function _getPrototypeOf(o) {
_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
return o.__proto__ || Object.getPrototypeOf(o);
};
return _getPrototypeOf(o);
}
function _inherits(subClass, superClass) {
if (typeof superClass !== "function" && superClass !== null) {
throw new TypeError("Super expression must either be null or a function");
}
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
writable: true,
configurable: true
}
});
if (superClass) _setPrototypeOf(subClass, superClass);
}
function _setPrototypeOf(o, p) {
_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
o.__proto__ = p;
return o;
};
return _setPrototypeOf(o, p);
}
/**
* Abide module.
* @module foundation.abide
*/
var Abide =
/*#__PURE__*/
function(_Plugin) {
_inherits(Abide, _Plugin);
function Abide() {
_classCallCheck(this, Abide);
return _possibleConstructorReturn(this, _getPrototypeOf(Abide).apply(this, arguments));
}
_createClass(Abide, [{
key: "_setup",
/**
* Creates a new instance of Abide.
* @class
* @name Abide
* @fires Abide#init
* @param {Object} element - jQuery object to add the trigger to.
* @param {Object} options - Overrides to the default plugin settings.
*/
value: function _setup(element) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
this.$element = element;
this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend(true, {}, Abide.defaults, this.$element.data(), options);
this.className = 'Abide'; // ie9 back compat
this._init();
}
/**
* Initializes the Abide plugin and calls functions to get Abide functioning on load.
* @private
*/
}, {
key: "_init",
value: function _init() {
var _this2 = this;
this.$inputs = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.merge( // Consider as input to validate:
this.$element.find('input').not('[type=submit]'), // * all input fields expect submit
this.$element.find('textarea, select') // * all textareas and select fields
);
var $globalErrors = this.$element.find('[data-abide-error]'); // Add a11y attributes to all fields
if (this.options.a11yAttributes) {
this.$inputs.each(function(i, input) {
return _this2.addA11yAttributes(jquery__WEBPACK_IMPORTED_MODULE_0___default()(input));
});
$globalErrors.each(function(i, error) {
return _this2.addGlobalErrorA11yAttributes(jquery__WEBPACK_IMPORTED_MODULE_0___default()(error));
});
}
this._events();
}
/**
* Initializes events for Abide.
* @private
*/
}, {
key: "_events",
value: function _events() {
var _this3 = this;
this.$element.off('.abide').on('reset.zf.abide', function() {
_this3.resetForm();
}).on('submit.zf.abide', function() {
return _this3.validateForm();
});
if (this.options.validateOn === 'fieldChange') {
this.$inputs.off('change.zf.abide').on('change.zf.abide', function(e) {
_this3.validateInput(jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.target));
});
}
if (this.options.liveValidate) {
this.$inputs.off('input.zf.abide').on('input.zf.abide', function(e) {
_this3.validateInput(jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.target));
});
}
if (this.options.validateOnBlur) {
this.$inputs.off('blur.zf.abide').on('blur.zf.abide', function(e) {
_this3.validateInput(jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.target));
});
}
}
/**
* Calls necessary functions to update Abide upon DOM change
* @private
*/
}, {
key: "_reflow",
value: function _reflow() {
this._init();
}
/**
* Checks whether or not a form element has the required attribute and if it's checked or not
* @param {Object} element - jQuery object to check for required attribute
* @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty
*/
}, {
key: "requiredCheck",
value: function requiredCheck($el) {
if (!$el.attr('required')) return true;
var isGood = true;
switch ($el[0].type) {
case 'checkbox':
isGood = $el[0].checked;
break;
case 'select':
case 'select-one':
case 'select-multiple':
var opt = $el.find('option:selected');
if (!opt.length || !opt.val()) isGood = false;
break;
default:
if (!$el.val() || !$el.val().length) isGood = false;
}
return isGood;
}
/**
* Get:
* - Based on $el, the first element(s) corresponding to `formErrorSelector` in this order:
* 1. The element's direct sibling('s).
* 2. The element's parent's children.
* - Element(s) with the attribute `[data-form-error-for]` set with the element's id.
*
* This allows for multiple form errors per input, though if none are found, no form errors will be shown.
*
* @param {Object} $el - jQuery object to use as reference to find the form error selector.
* @returns {Object} jQuery object with the selector.
*/
}, {
key: "findFormError",
value: function findFormError($el) {
var id = $el[0].id;
var $error = $el.siblings(this.options.formErrorSelector);
if (!$error.length) {
$error = $el.parent().find(this.options.formErrorSelector);
}
if (id) {
$error = $error.add(this.$element.find("[data-form-error-for=\"".concat(id, "\"]")));
}
return $error;
}
/**
* Get the first element in this order:
* 2. The <label> with the attribute `[for="someInputId"]`
* 3. The `.closest()` <label>
*
* @param {Object} $el - jQuery object to check for required attribute
* @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty
*/
}, {
key: "findLabel",
value: function findLabel($el) {
var id = $el[0].id;
var $label = this.$element.find("label[for=\"".concat(id, "\"]"));
if (!$label.length) {
return $el.closest('label');
}
return $label;
}
/**
* Get the set of labels associated with a set of radio els in this order
* 2. The <label> with the attribute `[for="someInputId"]`
* 3. The `.closest()` <label>
*
* @param {Object} $el - jQuery object to check for required attribute
* @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty
*/
}, {
key: "findRadioLabels",
value: function findRadioLabels($els) {
var _this4 = this;
var labels = $els.map(function(i, el) {
var id = el.id;
var $label = _this4.$element.find("label[for=\"".concat(id, "\"]"));
if (!$label.length) {
$label = jquery__WEBPACK_IMPORTED_MODULE_0___default()(el).closest('label');
}
return $label[0];
});
return jquery__WEBPACK_IMPORTED_MODULE_0___default()(labels);
}
/**
* Adds the CSS error class as specified by the Abide settings to the label, input, and the form
* @param {Object} $el - jQuery object to add the class to
*/
}, {
key: "addErrorClasses",
value: function addErrorClasses($el) {
var $label = this.findLabel($el);
var $formError = this.findFormError($el);
if ($label.length) {
$label.addClass(this.options.labelErrorClass);
}
if ($formError.length) {
$formError.addClass(this.options.formErrorClass);
}
$el.addClass(this.options.inputErrorClass).attr({
'data-invalid': '',
'aria-invalid': true
});
}
/**
* Adds [for] and [role=alert] attributes to all form error targetting $el,
* and [aria-describedby] attribute to $el toward the first form error.
* @param {Object} $el - jQuery object
*/
}, {
key: "addA11yAttributes",
value: function addA11yAttributes($el) {
var $errors = this.findFormError($el);
var $labels = $errors.filter('label');
var $error = $errors.first();
if (!$errors.length) return; // Set [aria-describedby] on the input toward the first form error if it is not set
if (typeof $el.attr('aria-describedby') === 'undefined') {
// Get the first error ID or create one
var errorId = $error.attr('id');
if (typeof errorId === 'undefined') {
errorId = Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["GetYoDigits"])(6, 'abide-error');
$error.attr('id', errorId);
}
;
$el.attr('aria-describedby', errorId);
}
if ($labels.filter('[for]').length < $labels.length) {
// Get the input ID or create one
var elemId = $el.attr('id');
if (typeof elemId === 'undefined') {
elemId = Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["GetYoDigits"])(6, 'abide-input');
$el.attr('id', elemId);
}
; // For each label targeting $el, set [for] if it is not set.
$labels.each(function(i, label) {
var $label = jquery__WEBPACK_IMPORTED_MODULE_0___default()(label);
if (typeof $label.attr('for') === 'undefined') $label.attr('for', elemId);
});
} // For each error targeting $el, set [role=alert] if it is not set.
$errors.each(function(i, label) {
var $label = jquery__WEBPACK_IMPORTED_MODULE_0___default()(label);
if (typeof $label.attr('role') === 'undefined') $label.attr('role', 'alert');
}).end();
}
/**
* Adds [aria-live] attribute to the given global form error $el.
* @param {Object} $el - jQuery object to add the attribute to
*/
}, {
key: "addGlobalErrorA11yAttributes",
value: function addGlobalErrorA11yAttributes($el) {
if (typeof $el.attr('aria-live') === 'undefined') $el.attr('aria-live', this.options.a11yErrorLevel);
}
/**
* Remove CSS error classes etc from an entire radio button group
* @param {String} groupName - A string that specifies the name of a radio button group
*
*/
}, {
key: "removeRadioErrorClasses",
value: function removeRadioErrorClasses(groupName) {
var $els = this.$element.find(":radio[name=\"".concat(groupName, "\"]"));
var $labels = this.findRadioLabels($els);
var $formErrors = this.findFormError($els);
if ($labels.length) {
$labels.removeClass(this.options.labelErrorClass);
}
if ($formErrors.length) {
$formErrors.removeClass(this.options.formErrorClass);
}
$els.removeClass(this.options.inputErrorClass).attr({
'data-invalid': null,
'aria-invalid': null
});
}
/**
* Removes CSS error class as specified by the Abide settings from the label, input, and the form
* @param {Object} $el - jQuery object to remove the class from
*/
}, {
key: "removeErrorClasses",
value: function removeErrorClasses($el) {
// radios need to clear all of the els
if ($el[0].type == 'radio') {
return this.removeRadioErrorClasses($el.attr('name'));
}
var $label = this.findLabel($el);
var $formError = this.findFormError($el);
if ($label.length) {
$label.removeClass(this.options.labelErrorClass);
}
if ($formError.length) {
$formError.removeClass(this.options.formErrorClass);
}
$el.removeClass(this.options.inputErrorClass).attr({
'data-invalid': null,
'aria-invalid': null
});
}
/**
* Goes through a form to find inputs and proceeds to validate them in ways specific to their type.
* Ignores inputs with data-abide-ignore, type="hidden" or disabled attributes set
* @fires Abide#invalid
* @fires Abide#valid
* @param {Object} element - jQuery object to validate, should be an HTML input
* @returns {Boolean} goodToGo - If the input is valid or not.
*/
}, {
key: "validateInput",
value: function validateInput($el) {
var clearRequire = this.requiredCheck($el),
validated = false,
customValidator = true,
validator = $el.attr('data-validator'),
equalTo = true; // don't validate ignored inputs or hidden inputs or disabled inputs
if ($el.is('[data-abide-ignore]') || $el.is('[type="hidden"]') || $el.is('[disabled]')) {
return true;
}
switch ($el[0].type) {
case 'radio':
validated = this.validateRadio($el.attr('name'));
break;
case 'checkbox':
validated = clearRequire;
break;
case 'select':
case 'select-one':
case 'select-multiple':
validated = clearRequire;
break;
default:
validated = this.validateText($el);
}
if (validator) {
customValidator = this.matchValidation($el, validator, $el.attr('required'));
}
if ($el.attr('data-equalto')) {
equalTo = this.options.validators.equalTo($el);
}
var goodToGo = [clearRequire, validated, customValidator, equalTo].indexOf(false) === -1;
var message = (goodToGo ? 'valid' : 'invalid') + '.zf.abide';
if (goodToGo) {
// Re-validate inputs that depend on this one with equalto
var dependentElements = this.$element.find("[data-equalto=\"".concat($el.attr('id'), "\"]"));
if (dependentElements.length) {
var _this = this;
dependentElements.each(function() {
if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).val()) {
_this.validateInput(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this));
}
});
}
}
this[goodToGo ? 'removeErrorClasses' : 'addErrorClasses']($el);
/**
* Fires when the input is done checking for validation. Event trigger is either `valid.zf.abide` or `invalid.zf.abide`
* Trigger includes the DOM element of the input.
* @event Abide#valid
* @event Abide#invalid
*/
$el.trigger(message, [$el]);
return goodToGo;
}
/**
* Goes through a form and if there are any invalid inputs, it will display the form error element
* @returns {Boolean} noError - true if no errors were detected...
* @fires Abide#formvalid
* @fires Abide#forminvalid
*/
}, {
key: "validateForm",
value: function validateForm() {
var _this5 = this;
var acc = [];
var _this = this;
this.$inputs.each(function() {
acc.push(_this.validateInput(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this)));
});
var noError = acc.indexOf(false) === -1;
this.$element.find('[data-abide-error]').each(function(i, elem) {
var $elem = jquery__WEBPACK_IMPORTED_MODULE_0___default()(elem); // Ensure a11y attributes are set
if (_this5.options.a11yAttributes) _this5.addGlobalErrorA11yAttributes($elem); // Show or hide the error
$elem.css('display', noError ? 'none' : 'block');
});
/**
* Fires when the form is finished validating. Event trigger is either `formvalid.zf.abide` or `forminvalid.zf.abide`.
* Trigger includes the element of the form.
* @event Abide#formvalid
* @event Abide#forminvalid
*/
this.$element.trigger((noError ? 'formvalid' : 'forminvalid') + '.zf.abide', [this.$element]);
return noError;
}
/**
* Determines whether or a not a text input is valid based on the pattern specified in the attribute. If no matching pattern is found, returns true.
* @param {Object} $el - jQuery object to validate, should be a text input HTML element
* @param {String} pattern - string value of one of the RegEx patterns in Abide.options.patterns
* @returns {Boolean} Boolean value depends on whether or not the input value matches the pattern specified
*/
}, {
key: "validateText",
value: function validateText($el, pattern) {
// A pattern can be passed to this function, or it will be infered from the input's "pattern" attribute, or it's "type" attribute
pattern = pattern || $el.attr('pattern') || $el.attr('type');
var inputText = $el.val();
var valid = false;
if (inputText.length) {
// If the pattern attribute on the element is in Abide's list of patterns, then test that regexp
if (this.options.patterns.hasOwnProperty(pattern)) {
valid = this.options.patterns[pattern].test(inputText);
} // If the pattern name isn't also the type attribute of the field, then test it as a regexp
else if (pattern !== $el.attr('type')) {
valid = new RegExp(pattern).test(inputText);
} else {
valid = true;
}
} // An empty field is valid if it's not required
else if (!$el.prop('required')) {
valid = true;
}
return valid;
}
/**
* Determines whether or a not a radio input is valid based on whether or not it is required and selected. Although the function targets a single `<input>`, it validates by checking the `required` and `checked` properties of all radio buttons in its group.
* @param {String} groupName - A string that specifies the name of a radio button group
* @returns {Boolean} Boolean value depends on whether or not at least one radio input has been selected (if it's required)
*/
}, {
key: "validateRadio",
value: function validateRadio(groupName) {
// If at least one radio in the group has the `required` attribute, the group is considered required
// Per W3C spec, all radio buttons in a group should have `required`, but we're being nice
var $group = this.$element.find(":radio[name=\"".concat(groupName, "\"]"));
var valid = false,
required = false; // For the group to be required, at least one radio needs to be required
$group.each(function(i, e) {
if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(e).attr('required')) {
required = true;
}
});
if (!required) valid = true;
if (!valid) {
// For the group to be valid, at least one radio needs to be checked
$group.each(function(i, e) {
if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(e).prop('checked')) {
valid = true;
}
});
}
;
return valid;
}
/**
* Determines if a selected input passes a custom validation function. Multiple validations can be used, if passed to the element with `data-validator="foo bar baz"` in a space separated listed.
* @param {Object} $el - jQuery input element.
* @param {String} validators - a string of function names matching functions in the Abide.options.validators object.
* @param {Boolean} required - self explanatory?
* @returns {Boolean} - true if validations passed.
*/
}, {
key: "matchValidation",
value: function matchValidation($el, validators, required) {
var _this6 = this;
required = required ? true : false;
var clear = validators.split(' ').map(function(v) {
return _this6.options.validators[v]($el, required, $el.parent());
});
return clear.indexOf(false) === -1;
}
/**
* Resets form inputs and styles
* @fires Abide#formreset
*/
}, {
key: "resetForm",
value: function resetForm() {
var $form = this.$element,
opts = this.options;
jquery__WEBPACK_IMPORTED_MODULE_0___default()(".".concat(opts.labelErrorClass), $form).not('small').removeClass(opts.labelErrorClass);
jquery__WEBPACK_IMPORTED_MODULE_0___default()(".".concat(opts.inputErrorClass), $form).not('small').removeClass(opts.inputErrorClass);
jquery__WEBPACK_IMPORTED_MODULE_0___default()("".concat(opts.formErrorSelector, ".").concat(opts.formErrorClass)).removeClass(opts.formErrorClass);
$form.find('[data-abide-error]').css('display', 'none');
jquery__WEBPACK_IMPORTED_MODULE_0___default()(':input', $form).not(':button, :submit, :reset, :hidden, :radio, :checkbox, [data-abide-ignore]').val('').attr({
'data-invalid': null,
'aria-invalid': null
});
jquery__WEBPACK_IMPORTED_MODULE_0___default()(':input:radio', $form).not('[data-abide-ignore]').prop('checked', false).attr({
'data-invalid': null,
'aria-invalid': null
});
jquery__WEBPACK_IMPORTED_MODULE_0___default()(':input:checkbox', $form).not('[data-abide-ignore]').prop('checked', false).attr({
'data-invalid': null,
'aria-invalid': null
});
/**
* Fires when the form has been reset.
* @event Abide#formreset
*/
$form.trigger('formreset.zf.abide', [$form]);
}
/**
* Destroys an instance of Abide.
* Removes error styles and classes from elements, without resetting their values.
*/
}, {
key: "_destroy",
value: function _destroy() {
var _this = this;
this.$element.off('.abide').find('[data-abide-error]').css('display', 'none');
this.$inputs.off('.abide').each(function() {
_this.removeErrorClasses(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this));
});
}
}]);
return Abide;
}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["Plugin"]);
/**
* Default settings for plugin
*/
Abide.defaults = {
/**
* The default event to validate inputs. Checkboxes and radios validate immediately.
* Remove or change this value for manual validation.
* @option
* @type {?string}
* @default 'fieldChange'
*/
validateOn: 'fieldChange',
/**
* Class to be applied to input labels on failed validation.
* @option
* @type {string}
* @default 'is-invalid-label'
*/
labelErrorClass: 'is-invalid-label',
/**
* Class to be applied to inputs on failed validation.
* @option
* @type {string}
* @default 'is-invalid-input'
*/
inputErrorClass: 'is-invalid-input',
/**
* Class selector to use to target Form Errors for show/hide.
* @option
* @type {string}
* @default '.form-error'
*/
formErrorSelector: '.form-error',
/**
* Class added to Form Errors on failed validation.
* @option
* @type {string}
* @default 'is-visible'
*/
formErrorClass: 'is-visible',
/**
* If true, automatically insert when possible:
* - `[aria-describedby]` on fields
* - `[role=alert]` on form errors and `[for]` on form error labels
* - `[aria-live]` on global errors `[data-abide-error]` (see option `a11yErrorLevel`).
* @option
* @type {boolean}
* @default true
*/
a11yAttributes: true,
/**
* [aria-live] attribute value to be applied on global errors `[data-abide-error]`.
* Options are: 'assertive', 'polite' and 'off'/null
* @option
* @see https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Live_Regions
* @type {string}
* @default 'assertive'
*/
a11yErrorLevel: 'assertive',
/**
* Set to true to validate text inputs on any value change.
* @option
* @type {boolean}
* @default false
*/
liveValidate: false,
/**
* Set to true to validate inputs on blur.
* @option
* @type {boolean}
* @default false
*/
validateOnBlur: false,
patterns: {
alpha: /^[a-zA-Z]+$/,
alpha_numeric: /^[a-zA-Z0-9]+$/,
integer: /^[-+]?\d+$/,
number: /^[-+]?\d*(?:[\.\,]\d+)?$/,
// amex, visa, diners
card: /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|(?:222[1-9]|2[3-6][0-9]{2}|27[0-1][0-9]|2720)[0-9]{12}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/,
cvv: /^([0-9]){3,4}$/,
// http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#valid-e-mail-address
email: /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/,
// From CommonRegexJS (@talyssonoc)
// https://github.com/talyssonoc/CommonRegexJS/blob/e2901b9f57222bc14069dc8f0598d5f412555411/lib/commonregex.js#L76
// For more restrictive URL Regexs, see https://mathiasbynens.be/demo/url-regex.
url: /^((?:(https?|ftps?|file|ssh|sftp):\/\/|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\((?:[^\s()<>]+|(?:\([^\s()<>]+\)))*\))+(?:\((?:[^\s()<>]+|(?:\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'".,<>?\xab\xbb\u201c\u201d\u2018\u2019]))$/,
// abc.de
domain: /^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,8}$/,
datetime: /^([0-2][0-9]{3})\-([0-1][0-9])\-([0-3][0-9])T([0-5][0-9])\:([0-5][0-9])\:([0-5][0-9])(Z|([\-\+]([0-1][0-9])\:00))$/,
// YYYY-MM-DD
date: /(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))$/,
// HH:MM:SS
time: /^(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}$/,
dateISO: /^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/,
// MM/DD/YYYY
month_day_year: /^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.]\d{4}$/,
// DD/MM/YYYY
day_month_year: /^(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.]\d{4}$/,
// #FFF or #FFFFFF
color: /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/,
// Domain || URL
website: {
test: function test(text) {
return Abide.defaults.patterns['domain'].test(text) || Abide.defaults.patterns['url'].test(text);
}
}
},
/**
* Optional validation functions to be used. `equalTo` being the only default included function.
* Functions should return only a boolean if the input is valid or not. Functions are given the following arguments:
* el : The jQuery element to validate.
* required : Boolean value of the required attribute be present or not.
* parent : The direct parent of the input.
* @option
*/
validators: {
equalTo: function equalTo(el, required, parent) {
return jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(el.attr('data-equalto'))).val() === el.val();
}
}
};
//# sourceURL=webpack:///./js/foundation.abide.js?
|
#11 JavaScript::Eval (size: 2700, repeated: 1) - SHA256: f2478bd4f954b2ec05797b8aafc4e212b11a08264c191a163b6f75895197ea3e
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */
__webpack_require__.d(__webpack_exports__, "Nest", function() {
return Nest;
});
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! jquery */ "jquery");
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
var Nest = {
Feather: function Feather(menu) {
var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'zf';
menu.attr('role', 'menubar');
var items = menu.find('li').attr({
'role': 'menuitem'
}),
subMenuClass = "is-".concat(type, "-submenu"),
subItemClass = "".concat(subMenuClass, "-item"),
hasSubClass = "is-".concat(type, "-submenu-parent"),
applyAria = type !== 'accordion'; // Accordions handle their own ARIA attriutes.
items.each(function() {
var $item = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),
$sub = $item.children('ul');
if ($sub.length) {
$item.addClass(hasSubClass);
$sub.addClass("submenu ".concat(subMenuClass)).attr({
'data-submenu': ''
});
if (applyAria) {
$item.attr({
'aria-haspopup': true,
'aria-label': $item.children('a:first').text()
}); // Note: Drilldowns behave differently in how they hide, and so need
// additional attributes. We should look if this possibly over-generalized
// utility (Nest) is appropriate when we rework menus in 6.4
if (type === 'drilldown') {
$item.attr({
'aria-expanded': false
});
}
}
$sub.addClass("submenu ".concat(subMenuClass)).attr({
'data-submenu': '',
'role': 'menubar'
});
if (type === 'drilldown') {
$sub.attr({
'aria-hidden': true
});
}
}
if ($item.parent('[data-submenu]').length) {
$item.addClass("is-submenu-item ".concat(subItemClass));
}
});
return;
},
Burn: function Burn(menu, type) {
var //items = menu.find('li'),
subMenuClass = "is-".concat(type, "-submenu"),
subItemClass = "".concat(subMenuClass, "-item"),
hasSubClass = "is-".concat(type, "-submenu-parent");
menu.find('>li, > li > ul, .menu, .menu > li, [data-submenu] > li').removeClass("".concat(subMenuClass, " ").concat(subItemClass, " ").concat(hasSubClass, " is-submenu-item submenu is-active")).removeAttr('data-submenu').css('display', '');
}
};
//# sourceURL=webpack:///./js/foundation.util.nest.js?
|
#12 JavaScript::Eval (size: 20044, repeated: 1) - SHA256: 2aded9322b633894fa7f8fa3770b5f2ba27188f7b76ae956dd642d88673fe318
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */
__webpack_require__.d(__webpack_exports__, "DropdownMenu", function() {
return DropdownMenu;
});
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! jquery */ "jquery");
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */
var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! ./foundation.core.plugin */ "./js/foundation.core.plugin.js");
/* harmony import */
var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
/* harmony import */
var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! ./foundation.util.keyboard */ "./js/foundation.util.keyboard.js");
/* harmony import */
var _foundation_util_nest__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( /*! ./foundation.util.nest */ "./js/foundation.util.nest.js");
/* harmony import */
var _foundation_util_box__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__( /*! ./foundation.util.box */ "./js/foundation.util.box.js");
function _typeof(obj) {
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function _typeof(obj) {
return typeof obj;
};
} else {
_typeof = function _typeof(obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
return _typeof(obj);
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a 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);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
function _possibleConstructorReturn(self, call) {
if (call && (_typeof(call) === "object" || typeof call === "function")) {
return call;
}
return _assertThisInitialized(self);
}
function _assertThisInitialized(self) {
if (self === void 0) {
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}
return self;
}
function _getPrototypeOf(o) {
_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
return o.__proto__ || Object.getPrototypeOf(o);
};
return _getPrototypeOf(o);
}
function _inherits(subClass, superClass) {
if (typeof superClass !== "function" && superClass !== null) {
throw new TypeError("Super expression must either be null or a function");
}
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
writable: true,
configurable: true
}
});
if (superClass) _setPrototypeOf(subClass, superClass);
}
function _setPrototypeOf(o, p) {
_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
o.__proto__ = p;
return o;
};
return _setPrototypeOf(o, p);
}
/**
* DropdownMenu module.
* @module foundation.dropdown-menu
* @requires foundation.util.keyboard
* @requires foundation.util.box
* @requires foundation.util.nest
*/
var DropdownMenu =
/*#__PURE__*/
function(_Plugin) {
_inherits(DropdownMenu, _Plugin);
function DropdownMenu() {
_classCallCheck(this, DropdownMenu);
return _possibleConstructorReturn(this, _getPrototypeOf(DropdownMenu).apply(this, arguments));
}
_createClass(DropdownMenu, [{
key: "_setup",
/**
* Creates a new instance of DropdownMenu.
* @class
* @name DropdownMenu
* @fires DropdownMenu#init
* @param {jQuery} element - jQuery object to make into a dropdown menu.
* @param {Object} options - Overrides to the default plugin settings.
*/
value: function _setup(element, options) {
this.$element = element;
this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, DropdownMenu.defaults, this.$element.data(), options);
this.className = 'DropdownMenu'; // ie9 back compat
this._init();
_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_3__["Keyboard"].register('DropdownMenu', {
'ENTER': 'open',
'SPACE': 'open',
'ARROW_RIGHT': 'next',
'ARROW_UP': 'up',
'ARROW_DOWN': 'down',
'ARROW_LEFT': 'previous',
'ESCAPE': 'close'
});
}
/**
* Initializes the plugin, and calls _prepareMenu
* @private
* @function
*/
}, {
key: "_init",
value: function _init() {
_foundation_util_nest__WEBPACK_IMPORTED_MODULE_4__["Nest"].Feather(this.$element, 'dropdown');
var subs = this.$element.find('li.is-dropdown-submenu-parent');
this.$element.children('.is-dropdown-submenu-parent').children('.is-dropdown-submenu').addClass('first-sub');
this.$menuItems = this.$element.find('[role="menuitem"]');
this.$tabs = this.$element.children('[role="menuitem"]');
this.$tabs.find('ul.is-dropdown-submenu').addClass(this.options.verticalClass);
if (this.options.alignment === 'auto') {
if (this.$element.hasClass(this.options.rightClass) || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["rtl"])() || this.$element.parents('.top-bar-right').is('*')) {
this.options.alignment = 'right';
subs.addClass('opens-left');
} else {
this.options.alignment = 'left';
subs.addClass('opens-right');
}
} else {
if (this.options.alignment === 'right') {
subs.addClass('opens-left');
} else {
subs.addClass('opens-right');
}
}
this.changed = false;
this._events();
}
}, {
key: "_isVertical",
value: function _isVertical() {
return this.$tabs.css('display') === 'block' || this.$element.css('flex-direction') === 'column';
}
}, {
key: "_isRtl",
value: function _isRtl() {
return this.$element.hasClass('align-right') || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["rtl"])() && !this.$element.hasClass('align-left');
}
/**
* Adds event listeners to elements within the menu
* @private
* @function
*/
}, {
key: "_events",
value: function _events() {
var _this = this,
hasTouch = 'ontouchstart' in window || typeof window.ontouchstart !== 'undefined',
parClass = 'is-dropdown-submenu-parent'; // used for onClick and in the keyboard handlers
var handleClickFn = function handleClickFn(e) {
var $elem = jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.target).parentsUntil('ul', ".".concat(parClass)),
hasSub = $elem.hasClass(parClass),
hasClicked = $elem.attr('data-is-click') === 'true',
$sub = $elem.children('.is-dropdown-submenu');
if (hasSub) {
if (hasClicked) {
if (!_this.options.closeOnClick || !_this.options.clickOpen && !hasTouch || _this.options.forceFollow && hasTouch) {
return;
} else {
e.stopImmediatePropagation();
e.preventDefault();
_this._hide($elem);
}
} else {
e.preventDefault();
e.stopImmediatePropagation();
_this._show($sub);
$elem.add($elem.parentsUntil(_this.$element, ".".concat(parClass))).attr('data-is-click', true);
}
}
};
if (this.options.clickOpen || hasTouch) {
this.$menuItems.on('click.zf.dropdownmenu touchstart.zf.dropdownmenu', handleClickFn);
} // Handle Leaf element Clicks
if (_this.options.closeOnClickInside) {
this.$menuItems.on('click.zf.dropdownmenu', function(e) {
var $elem = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),
hasSub = $elem.hasClass(parClass);
if (!hasSub) {
_this._hide();
}
});
}
if (!this.options.disableHover) {
this.$menuItems.on('mouseenter.zf.dropdownmenu', function(e) {
var $elem = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),
hasSub = $elem.hasClass(parClass);
if (hasSub) {
clearTimeout($elem.data('_delay'));
$elem.data('_delay', setTimeout(function() {
_this._show($elem.children('.is-dropdown-submenu'));
}, _this.options.hoverDelay));
}
}).on('mouseleave.zf.dropdownMenu', Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["ignoreMousedisappear"])(function(e) {
var $elem = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),
hasSub = $elem.hasClass(parClass);
if (hasSub && _this.options.autoclose) {
if ($elem.attr('data-is-click') === 'true' && _this.options.clickOpen) {
return false;
}
clearTimeout($elem.data('_delay'));
$elem.data('_delay', setTimeout(function() {
_this._hide($elem);
}, _this.options.closingTime));
}
}));
}
this.$menuItems.on('keydown.zf.dropdownmenu', function(e) {
var $element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.target).parentsUntil('ul', '[role="menuitem"]'),
isTab = _this.$tabs.index($element) > -1,
$elements = isTab ? _this.$tabs : $element.siblings('li').add($element),
$prevElement,
$nextElement;
$elements.each(function(i) {
if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).is($element)) {
$prevElement = $elements.eq(i - 1);
$nextElement = $elements.eq(i + 1);
return;
}
});
var nextSibling = function nextSibling() {
$nextElement.children('a:first').focus();
e.preventDefault();
},
prevSibling = function prevSibling() {
$prevElement.children('a:first').focus();
e.preventDefault();
},
openSub = function openSub() {
var $sub = $element.children('ul.is-dropdown-submenu');
if ($sub.length) {
_this._show($sub);
$element.find('li > a:first').focus();
e.preventDefault();
} else {
return;
}
},
closeSub = function closeSub() {
//if ($element.is(':first-child')) {
var close = $element.parent('ul').parent('li');
close.children('a:first').focus();
_this._hide(close);
e.preventDefault(); //}
};
var functions = {
open: openSub,
close: function close() {
_this._hide(_this.$element);
_this.$menuItems.eq(0).children('a').focus(); // focus to first element
e.preventDefault();
},
handled: function handled() {
e.stopImmediatePropagation();
}
};
if (isTab) {
if (_this._isVertical()) {
// vertical menu
if (_this._isRtl()) {
// right aligned
jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend(functions, {
down: nextSibling,
up: prevSibling,
next: closeSub,
previous: openSub
});
} else {
// left aligned
jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend(functions, {
down: nextSibling,
up: prevSibling,
next: openSub,
previous: closeSub
});
}
} else {
// horizontal menu
if (_this._isRtl()) {
// right aligned
jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend(functions, {
next: prevSibling,
previous: nextSibling,
down: openSub,
up: closeSub
});
} else {
// left aligned
jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend(functions, {
next: nextSibling,
previous: prevSibling,
down: openSub,
up: closeSub
});
}
}
} else {
// not tabs -> one sub
if (_this._isRtl()) {
// right aligned
jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend(functions, {
next: closeSub,
previous: openSub,
down: nextSibling,
up: prevSibling
});
} else {
// left aligned
jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend(functions, {
next: openSub,
previous: closeSub,
down: nextSibling,
up: prevSibling
});
}
}
_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_3__["Keyboard"].handleKey(e, 'DropdownMenu', functions);
});
}
/**
* Adds an event handler to the body to close any dropdowns on a click.
* @function
* @private
*/
}, {
key: "_addBodyHandler",
value: function _addBodyHandler() {
var $body = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.body),
_this = this;
$body.off('mouseup.zf.dropdownmenu touchend.zf.dropdownmenu').on('mouseup.zf.dropdownmenu touchend.zf.dropdownmenu', function(e) {
var $link = _this.$element.find(e.target);
if ($link.length) {
return;
}
_this._hide();
$body.off('mouseup.zf.dropdownmenu touchend.zf.dropdownmenu');
});
}
/**
* Opens a dropdown pane, and checks for collisions first.
* @param {jQuery} $sub - ul element that is a submenu to show
* @function
* @private
* @fires Dropdownmenu#show
*/
}, {
key: "_show",
value: function _show($sub) {
var idx = this.$tabs.index(this.$tabs.filter(function(i, el) {
return jquery__WEBPACK_IMPORTED_MODULE_0___default()(el).find($sub).length > 0;
}));
var $sibs = $sub.parent('li.is-dropdown-submenu-parent').siblings('li.is-dropdown-submenu-parent');
this._hide($sibs, idx);
$sub.css('visibility', 'hidden').addClass('js-dropdown-active').parent('li.is-dropdown-submenu-parent').addClass('is-active');
var clear = _foundation_util_box__WEBPACK_IMPORTED_MODULE_5__["Box"].ImNotTouchingYou($sub, null, true);
if (!clear) {
var oldClass = this.options.alignment === 'left' ? '-right' : '-left',
$parentLi = $sub.parent('.is-dropdown-submenu-parent');
$parentLi.removeClass("opens".concat(oldClass)).addClass("opens-".concat(this.options.alignment));
clear = _foundation_util_box__WEBPACK_IMPORTED_MODULE_5__["Box"].ImNotTouchingYou($sub, null, true);
if (!clear) {
$parentLi.removeClass("opens-".concat(this.options.alignment)).addClass('opens-inner');
}
this.changed = true;
}
$sub.css('visibility', '');
if (this.options.closeOnClick) {
this._addBodyHandler();
}
/**
* Fires when the new dropdown pane is visible.
* @event Dropdownmenu#show
*/
this.$element.trigger('show.zf.dropdownmenu', [$sub]);
}
/**
* Hides a single, currently open dropdown pane, if passed a parameter, otherwise, hides everything.
* @function
* @param {jQuery} $elem - element with a submenu to hide
* @param {Number} idx - index of the $tabs collection to hide
* @private
*/
}, {
key: "_hide",
value: function _hide($elem, idx) {
var $toClose;
if ($elem && $elem.length) {
$toClose = $elem;
} else if (typeof idx !== 'undefined') {
$toClose = this.$tabs.not(function(i, el) {
return i === idx;
});
} else {
$toClose = this.$element;
}
var somethingToClose = $toClose.hasClass('is-active') || $toClose.find('.is-active').length > 0;
if (somethingToClose) {
$toClose.find('li.is-active').add($toClose).attr({
'data-is-click': false
}).removeClass('is-active');
$toClose.find('ul.js-dropdown-active').removeClass('js-dropdown-active');
if (this.changed || $toClose.find('opens-inner').length) {
var oldClass = this.options.alignment === 'left' ? 'right' : 'left';
$toClose.find('li.is-dropdown-submenu-parent').add($toClose).removeClass("opens-inner opens-".concat(this.options.alignment)).addClass("opens-".concat(oldClass));
this.changed = false;
}
/**
* Fires when the open menus are closed.
* @event Dropdownmenu#hide
*/
this.$element.trigger('hide.zf.dropdownmenu', [$toClose]);
}
}
/**
* Destroys the plugin.
* @function
*/
}, {
key: "_destroy",
value: function _destroy() {
this.$menuItems.off('.zf.dropdownmenu').removeAttr('data-is-click').removeClass('is-right-arrow is-left-arrow is-down-arrow opens-right opens-left opens-inner');
jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.body).off('.zf.dropdownmenu');
_foundation_util_nest__WEBPACK_IMPORTED_MODULE_4__["Nest"].Burn(this.$element, 'dropdown');
}
}]);
return DropdownMenu;
}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["Plugin"]);
/**
* Default settings for plugin
*/
DropdownMenu.defaults = {
/**
* Disallows hover events from opening submenus
* @option
* @type {boolean}
* @default false
*/
disableHover: false,
/**
* Allow a submenu to automatically close on a mouseleave event, if not clicked open.
* @option
* @type {boolean}
* @default true
*/
autoclose: true,
/**
* Amount of time to delay opening a submenu on hover event.
* @option
* @type {number}
* @default 50
*/
hoverDelay: 50,
/**
* Allow a submenu to open/remain open on parent click event. Allows cursor to move away from menu.
* @option
* @type {boolean}
* @default false
*/
clickOpen: false,
/**
* Amount of time to delay closing a submenu on a mouseleave event.
* @option
* @type {number}
* @default 500
*/
closingTime: 500,
/**
* Position of the menu relative to what direction the submenus should open. Handled by JS. Can be `'auto'`, `'left'` or `'right'`.
* @option
* @type {string}
* @default 'auto'
*/
alignment: 'auto',
/**
* Allow clicks on the body to close any open submenus.
* @option
* @type {boolean}
* @default true
*/
closeOnClick: true,
/**
* Allow clicks on leaf anchor links to close any open submenus.
* @option
* @type {boolean}
* @default true
*/
closeOnClickInside: true,
/**
* Class applied to vertical oriented menus, Foundation default is `vertical`. Update this if using your own class.
* @option
* @type {string}
* @default 'vertical'
*/
verticalClass: 'vertical',
/**
* Class applied to right-side oriented menus, Foundation default is `align-right`. Update this if using your own class.
* @option
* @type {string}
* @default 'align-right'
*/
rightClass: 'align-right',
/**
* Boolean to force overide the clicking of links to perform default action, on second touch event for mobile.
* @option
* @type {boolean}
* @default true
*/
forceFollow: true
};
//# sourceURL=webpack:///./js/foundation.dropdownMenu.js?
|
#13 JavaScript::Eval (size: 21342, repeated: 1) - SHA256: 032fc03eb66b2a8c9fd3b54d826a35cccecfb1e61ff37d68d5fb6815fec86ee7
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */
__webpack_require__.d(__webpack_exports__, "Orbit", function() {
return Orbit;
});
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! jquery */ "jquery");
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */
var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! ./foundation.util.keyboard */ "./js/foundation.util.keyboard.js");
/* harmony import */
var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! ./foundation.util.motion */ "./js/foundation.util.motion.js");
/* harmony import */
var _foundation_util_timer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! ./foundation.util.timer */ "./js/foundation.util.timer.js");
/* harmony import */
var _foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( /*! ./foundation.util.imageLoader */ "./js/foundation.util.imageLoader.js");
/* harmony import */
var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__( /*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
/* harmony import */
var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__( /*! ./foundation.core.plugin */ "./js/foundation.core.plugin.js");
/* harmony import */
var _foundation_util_touch__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__( /*! ./foundation.util.touch */ "./js/foundation.util.touch.js");
function _typeof(obj) {
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function _typeof(obj) {
return typeof obj;
};
} else {
_typeof = function _typeof(obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
return _typeof(obj);
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a 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);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
function _possibleConstructorReturn(self, call) {
if (call && (_typeof(call) === "object" || typeof call === "function")) {
return call;
}
return _assertThisInitialized(self);
}
function _assertThisInitialized(self) {
if (self === void 0) {
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}
return self;
}
function _getPrototypeOf(o) {
_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
return o.__proto__ || Object.getPrototypeOf(o);
};
return _getPrototypeOf(o);
}
function _inherits(subClass, superClass) {
if (typeof superClass !== "function" && superClass !== null) {
throw new TypeError("Super expression must either be null or a function");
}
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
writable: true,
configurable: true
}
});
if (superClass) _setPrototypeOf(subClass, superClass);
}
function _setPrototypeOf(o, p) {
_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
o.__proto__ = p;
return o;
};
return _setPrototypeOf(o, p);
}
/**
* Orbit module.
* @module foundation.orbit
* @requires foundation.util.keyboard
* @requires foundation.util.motion
* @requires foundation.util.timer
* @requires foundation.util.imageLoader
* @requires foundation.util.touch
*/
var Orbit =
/*#__PURE__*/
function(_Plugin) {
_inherits(Orbit, _Plugin);
function Orbit() {
_classCallCheck(this, Orbit);
return _possibleConstructorReturn(this, _getPrototypeOf(Orbit).apply(this, arguments));
}
_createClass(Orbit, [{
key: "_setup",
/**
* Creates a new instance of an orbit carousel.
* @class
* @name Orbit
* @param {jQuery} element - jQuery object to make into an Orbit Carousel.
* @param {Object} options - Overrides to the default plugin settings.
*/
value: function _setup(element, options) {
this.$element = element;
this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, Orbit.defaults, this.$element.data(), options);
this.className = 'Orbit'; // ie9 back compat
_foundation_util_touch__WEBPACK_IMPORTED_MODULE_7__["Touch"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a); // Touch init is idempotent, we just need to make sure it's initialied.
this._init();
_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].register('Orbit', {
'ltr': {
'ARROW_RIGHT': 'next',
'ARROW_LEFT': 'previous'
},
'rtl': {
'ARROW_LEFT': 'next',
'ARROW_RIGHT': 'previous'
}
});
}
/**
* Initializes the plugin by creating jQuery collections, setting attributes, and starting the animation.
* @function
* @private
*/
}, {
key: "_init",
value: function _init() {
// @TODO: consider discussion on PR #9278 about DOM pollution by changeSlide
this._reset();
this.$wrapper = this.$element.find(".".concat(this.options.containerClass));
this.$slides = this.$element.find(".".concat(this.options.slideClass));
var $images = this.$element.find('img'),
initActive = this.$slides.filter('.is-active'),
id = this.$element[0].id || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_5__["GetYoDigits"])(6, 'orbit');
this.$element.attr({
'data-resize': id,
'id': id
});
if (!initActive.length) {
this.$slides.eq(0).addClass('is-active');
}
if (!this.options.useMUI) {
this.$slides.addClass('no-motionui');
}
if ($images.length) {
Object(_foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_4__["onImagesLoaded"])($images, this._prepareForOrbit.bind(this));
} else {
this._prepareForOrbit(); //hehe
}
if (this.options.bullets) {
this._loadBullets();
}
this._events();
if (this.options.autoPlay && this.$slides.length > 1) {
this.geoSync();
}
if (this.options.accessible) {
// allow wrapper to be focusable to enable arrow navigation
this.$wrapper.attr('tabindex', 0);
}
}
/**
* Creates a jQuery collection of bullets, if they are being used.
* @function
* @private
*/
}, {
key: "_loadBullets",
value: function _loadBullets() {
this.$bullets = this.$element.find(".".concat(this.options.boxOfBullets)).find('button');
}
/**
* Sets a `timer` object on the orbit, and starts the counter for the next slide.
* @function
*/
}, {
key: "geoSync",
value: function geoSync() {
var _this = this;
this.timer = new _foundation_util_timer__WEBPACK_IMPORTED_MODULE_3__["Timer"](this.$element, {
duration: this.options.timerDelay,
infinite: false
}, function() {
_this.changeSlide(true);
});
this.timer.start();
}
/**
* Sets wrapper and slide heights for the orbit.
* @function
* @private
*/
}, {
key: "_prepareForOrbit",
value: function _prepareForOrbit() {
var _this = this;
this._setWrapperHeight();
}
/**
* Calulates the height of each slide in the collection, and uses the tallest one for the wrapper height.
* @function
* @private
* @param {Function} cb - a callback function to fire when complete.
*/
}, {
key: "_setWrapperHeight",
value: function _setWrapperHeight(cb) {
//rewrite this to `for` loop
var max = 0,
temp,
counter = 0,
_this = this;
this.$slides.each(function() {
temp = this.getBoundingClientRect().height;
jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).attr('data-slide', counter); // hide all slides but the active one
if (!/mui/g.test(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this)[0].className) && _this.$slides.filter('.is-active')[0] !== _this.$slides.eq(counter)[0]) {
jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).css({
'display': 'none'
});
}
max = temp > max ? temp : max;
counter++;
});
if (counter === this.$slides.length) {
this.$wrapper.css({
'height': max
}); //only change the wrapper height property once.
if (cb) {
cb(max);
} //fire callback with max height dimension.
}
}
/**
* Sets the max-height of each slide.
* @function
* @private
*/
}, {
key: "_setSlideHeight",
value: function _setSlideHeight(height) {
this.$slides.each(function() {
jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).css('max-height', height);
});
}
/**
* Adds event listeners to basically everything within the element.
* @function
* @private
*/
}, {
key: "_events",
value: function _events() {
var _this = this; //***************************************
//**Now using custom event - thanks to:**
//** Yohai Ararat of Toronto **
//***************************************
//
this.$element.off('.resizeme.zf.trigger').on({
'resizeme.zf.trigger': this._prepareForOrbit.bind(this)
});
if (this.$slides.length > 1) {
if (this.options.swipe) {
this.$slides.off('swipeleft.zf.orbit swiperight.zf.orbit').on('swipeleft.zf.orbit', function(e) {
e.preventDefault();
_this.changeSlide(true);
}).on('swiperight.zf.orbit', function(e) {
e.preventDefault();
_this.changeSlide(false);
});
} //***************************************
if (this.options.autoPlay) {
this.$slides.on('click.zf.orbit', function() {
_this.$element.data('clickedOn', _this.$element.data('clickedOn') ? false : true);
_this.timer[_this.$element.data('clickedOn') ? 'pause' : 'start']();
});
if (this.options.pauseOnHover) {
this.$element.on('mouseenter.zf.orbit', function() {
_this.timer.pause();
}).on('mouseleave.zf.orbit', function() {
if (!_this.$element.data('clickedOn')) {
_this.timer.start();
}
});
}
}
if (this.options.navButtons) {
var $controls = this.$element.find(".".concat(this.options.nextClass, ", .").concat(this.options.prevClass));
$controls.attr('tabindex', 0) //also need to handle enter/return and spacebar key presses
.on('click.zf.orbit touchend.zf.orbit', function(e) {
e.preventDefault();
_this.changeSlide(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).hasClass(_this.options.nextClass));
});
}
if (this.options.bullets) {
this.$bullets.on('click.zf.orbit touchend.zf.orbit', function() {
if (/is-active/g.test(this.className)) {
return false;
} //if this is active, kick out of function.
var idx = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('slide'),
ltr = idx > _this.$slides.filter('.is-active').data('slide'),
$slide = _this.$slides.eq(idx);
_this.changeSlide(ltr, $slide, idx);
});
}
if (this.options.accessible) {
this.$wrapper.add(this.$bullets).on('keydown.zf.orbit', function(e) {
// handle keyboard event with keyboard util
_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].handleKey(e, 'Orbit', {
next: function next() {
_this.changeSlide(true);
},
previous: function previous() {
_this.changeSlide(false);
},
handled: function handled() {
// if bullet is focused, make sure focus moves
if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.target).is(_this.$bullets)) {
_this.$bullets.filter('.is-active').focus();
}
}
});
});
}
}
}
/**
* Resets Orbit so it can be reinitialized
*/
}, {
key: "_reset",
value: function _reset() {
// Don't do anything if there are no slides (first run)
if (typeof this.$slides == 'undefined') {
return;
}
if (this.$slides.length > 1) {
// Remove old events
this.$element.off('.zf.orbit').find('*').off('.zf.orbit'); // Restart timer if autoPlay is enabled
if (this.options.autoPlay) {
this.timer.restart();
} // Reset all sliddes
this.$slides.each(function(el) {
jquery__WEBPACK_IMPORTED_MODULE_0___default()(el).removeClass('is-active is-active is-in').removeAttr('aria-live').hide();
}); // Show the first slide
this.$slides.first().addClass('is-active').show(); // Triggers when the slide has finished animating
this.$element.trigger('slidechange.zf.orbit', [this.$slides.first()]); // Select first bullet if bullets are present
if (this.options.bullets) {
this._updateBullets(0);
}
}
}
/**
* Changes the current slide to a new one.
* @function
* @param {Boolean} isLTR - if true the slide moves from right to left, if false the slide moves from left to right.
* @param {jQuery} chosenSlide - the jQuery element of the slide to show next, if one is selected.
* @param {Number} idx - the index of the new slide in its collection, if one chosen.
* @fires Orbit#slidechange
*/
}, {
key: "changeSlide",
value: function changeSlide(isLTR, chosenSlide, idx) {
if (!this.$slides) {
return;
} // Don't freak out if we're in the middle of cleanup
var $curSlide = this.$slides.filter('.is-active').eq(0);
if (/mui/g.test($curSlide[0].className)) {
return false;
} //if the slide is currently animating, kick out of the function
var $firstSlide = this.$slides.first(),
$lastSlide = this.$slides.last(),
dirIn = isLTR ? 'Right' : 'Left',
dirOut = isLTR ? 'Left' : 'Right',
_this = this,
$newSlide;
if (!chosenSlide) {
//most of the time, this will be auto played or clicked from the navButtons.
$newSlide = isLTR ? //if wrapping enabled, check to see if there is a `next` or `prev` sibling, if not, select the first or last slide to fill in. if wrapping not enabled, attempt to select `next` or `prev`, if there's nothing there, the function will kick out on next step. CRAZY NESTED TERNARIES!!!!!
this.options.infiniteWrap ? $curSlide.next(".".concat(this.options.slideClass)).length ? $curSlide.next(".".concat(this.options.slideClass)) : $firstSlide : $curSlide.next(".".concat(this.options.slideClass)) : //pick next slide if moving left to right
this.options.infiniteWrap ? $curSlide.prev(".".concat(this.options.slideClass)).length ? $curSlide.prev(".".concat(this.options.slideClass)) : $lastSlide : $curSlide.prev(".".concat(this.options.slideClass)); //pick prev slide if moving right to left
} else {
$newSlide = chosenSlide;
}
if ($newSlide.length) {
/**
* Triggers before the next slide starts animating in and only if a next slide has been found.
* @event Orbit#beforeslidechange
*/
this.$element.trigger('beforeslidechange.zf.orbit', [$curSlide, $newSlide]);
if (this.options.bullets) {
idx = idx || this.$slides.index($newSlide); //grab index to update bullets
this._updateBullets(idx);
}
if (this.options.useMUI && !this.$element.is(':hidden')) {
_foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__["Motion"].animateIn($newSlide.addClass('is-active'), this.options["animInFrom".concat(dirIn)], function() {
$newSlide.css({
'display': 'block'
}).attr('aria-live', 'polite');
});
_foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__["Motion"].animateOut($curSlide.removeClass('is-active'), this.options["animOutTo".concat(dirOut)], function() {
$curSlide.removeAttr('aria-live');
if (_this.options.autoPlay && !_this.timer.isPaused) {
_this.timer.restart();
} //do stuff?
});
} else {
$curSlide.removeClass('is-active is-in').removeAttr('aria-live').hide();
$newSlide.addClass('is-active is-in').attr('aria-live', 'polite').show();
if (this.options.autoPlay && !this.timer.isPaused) {
this.timer.restart();
}
}
/**
* Triggers when the slide has finished animating in.
* @event Orbit#slidechange
*/
this.$element.trigger('slidechange.zf.orbit', [$newSlide]);
}
}
/**
* Updates the active state of the bullets, if displayed.
* @function
* @private
* @param {Number} idx - the index of the current slide.
*/
}, {
key: "_updateBullets",
value: function _updateBullets(idx) {
var $oldBullet = this.$element.find(".".concat(this.options.boxOfBullets)).find('.is-active').removeClass('is-active').blur(),
span = $oldBullet.find('span:last').detach(),
$newBullet = this.$bullets.eq(idx).addClass('is-active').append(span);
}
/**
* Destroys the carousel and hides the element.
* @function
*/
}, {
key: "_destroy",
value: function _destroy() {
this.$element.off('.zf.orbit').find('*').off('.zf.orbit').end().hide();
}
}]);
return Orbit;
}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_6__["Plugin"]);
Orbit.defaults = {
/**
* Tells the JS to look for and loadBullets.
* @option
* @type {boolean}
* @default true
*/
bullets: true,
/**
* Tells the JS to apply event listeners to nav buttons
* @option
* @type {boolean}
* @default true
*/
navButtons: true,
/**
* motion-ui animation class to apply
* @option
* @type {string}
* @default 'slide-in-right'
*/
animInFromRight: 'slide-in-right',
/**
* motion-ui animation class to apply
* @option
* @type {string}
* @default 'slide-out-right'
*/
animOutToRight: 'slide-out-right',
/**
* motion-ui animation class to apply
* @option
* @type {string}
* @default 'slide-in-left'
*
*/
animInFromLeft: 'slide-in-left',
/**
* motion-ui animation class to apply
* @option
* @type {string}
* @default 'slide-out-left'
*/
animOutToLeft: 'slide-out-left',
/**
* Allows Orbit to automatically animate on page load.
* @option
* @type {boolean}
* @default true
*/
autoPlay: true,
/**
* Amount of time, in ms, between slide transitions
* @option
* @type {number}
* @default 5000
*/
timerDelay: 5000,
/**
* Allows Orbit to infinitely loop through the slides
* @option
* @type {boolean}
* @default true
*/
infiniteWrap: true,
/**
* Allows the Orbit slides to bind to swipe events for mobile, requires an additional util library
* @option
* @type {boolean}
* @default true
*/
swipe: true,
/**
* Allows the timing function to pause animation on hover.
* @option
* @type {boolean}
* @default true
*/
pauseOnHover: true,
/**
* Allows Orbit to bind keyboard events to the slider, to animate frames with arrow keys
* @option
* @type {boolean}
* @default true
*/
accessible: true,
/**
* Class applied to the container of Orbit
* @option
* @type {string}
* @default 'orbit-container'
*/
containerClass: 'orbit-container',
/**
* Class applied to individual slides.
* @option
* @type {string}
* @default 'orbit-slide'
*/
slideClass: 'orbit-slide',
/**
* Class applied to the bullet container. You're welcome.
* @option
* @type {string}
* @default 'orbit-bullets'
*/
boxOfBullets: 'orbit-bullets',
/**
* Class applied to the `next` navigation button.
* @option
* @type {string}
* @default 'orbit-next'
*/
nextClass: 'orbit-next',
/**
* Class applied to the `previous` navigation button.
* @option
* @type {string}
* @default 'orbit-previous'
*/
prevClass: 'orbit-previous',
/**
* Boolean to flag the js to use motion ui classes or not. Default to true for backwards compatibility.
* @option
* @type {boolean}
* @default true
*/
useMUI: true
};
//# sourceURL=webpack:///./js/foundation.orbit.js?
|
#14 JavaScript::Eval (size: 116646, repeated: 1) - SHA256: 6cbce77308f4bbdc15e9c8f12c865b79a18e1048a76424e9cb4cc86810b713ee
(function() {
if (window.magicJS) {
return
}
var b = {
version: "v2.7.4",
UUID: 0,
storage: {},
$uuid: function(d) {
return (d.$J_UUID || (d.$J_UUID = ++a.UUID))
},
getStorage: function(d) {
return (a.storage[d] || (a.storage[d] = {}))
},
$F: function() {},
$false: function() {
return false
},
defined: function(d) {
return (undefined != d)
},
exists: function(d) {
return !!(d)
},
j1: function(d) {
if (!a.defined(d)) {
return false
}
if (d.$J_TYPE) {
return d.$J_TYPE
}
if (!!d.nodeType) {
if (1 == d.nodeType) {
return "element"
}
if (3 == d.nodeType) {
return "textnode"
}
}
if (d.length && d.item) {
return "collection"
}
if (d.length && d.callee) {
return "arguments"
}
if ((d instanceof window.Object || d instanceof window.Function) && d.constructor === a.Class) {
return "class"
}
if (d instanceof window.Array) {
return "array"
}
if (d instanceof window.Function) {
return "function"
}
if (d instanceof window.String) {
return "string"
}
if (a.j21.trident) {
if (a.defined(d.cancelBubble)) {
return "event"
}
} else {
if (d === window.event || d.constructor == window.Event || d.constructor == window.MouseEvent || d.constructor == window.UIEvent || d.constructor == window.KeyboardEvent || d.constructor == window.KeyEvent) {
return "event"
}
}
if (d instanceof window.Date) {
return "date"
}
if (d instanceof window.RegExp) {
return "regexp"
}
if (d === window) {
return "window"
}
if (d === document) {
return "document"
}
return typeof(d)
},
extend: function(j, h) {
if (!(j instanceof window.Array)) {
j = [j]
}
for (var g = 0, e = j.length; g < e; g++) {
if (!a.defined(j)) {
continue
}
for (var f in (h || {})) {
try {
j[g][f] = h[f]
} catch (d) {}
}
}
return j[0]
},
implement: function(h, g) {
if (!(h instanceof window.Array)) {
h = [h]
}
for (var f = 0, d = h.length; f < d; f++) {
if (!a.defined(h[f])) {
continue
}
if (!h[f].prototype) {
continue
}
for (var e in (g || {})) {
if (!h[f].prototype[e]) {
h[f].prototype[e] = g[e]
}
}
}
return h[0]
},
nativize: function(f, e) {
if (!a.defined(f)) {
return f
}
for (var d in (e || {})) {
if (!f[d]) {
f[d] = e[d]
}
}
return f
},
$try: function() {
for (var f = 0, d = arguments.length; f < d; f++) {
try {
return arguments[f]()
} catch (g) {}
}
return null
},
$A: function(f) {
if (!a.defined(f)) {
return $mjs([])
}
if (f.toArray) {
return $mjs(f.toArray())
}
if (f.item) {
var e = f.length || 0,
d = new Array(e);
while (e--) {
d[e] = f[e]
}
return $mjs(d)
}
return $mjs(Array.prototype.slice.call(f))
},
now: function() {
return new Date().getTime()
},
detach: function(h) {
var f;
switch (a.j1(h)) {
case "object":
f = {};
for (var g in h) {
f[g] = a.detach(h[g])
}
break;
case "array":
f = [];
for (var e = 0, d = h.length; e < d; e++) {
f[e] = a.detach(h[e])
}
break;
default:
return h
}
return a.$(f)
},
$: function(e) {
if (!a.defined(e)) {
return null
}
if (e.$J_EXTENDED) {
return e
}
switch (a.j1(e)) {
case "array":
e = a.nativize(e, a.extend(a.Array, {
$J_EXTENDED: a.$F
}));
e.j14 = e.forEach;
e.contains = a.Array.contains;
return e;
break;
case "string":
var d = document.getElementById(e);
if (a.defined(d)) {
return a.$(d)
}
return null;
break;
case "window":
case "document":
a.$uuid(e);
e = a.extend(e, a.Doc);
break;
case "element":
a.$uuid(e);
e = a.extend(e, a.Element);
break;
case "event":
e = a.extend(e, a.Event);
break;
case "textnode":
return e;
break;
case "function":
case "array":
case "date":
default:
break
}
return a.extend(e, {
$J_EXTENDED: a.$F
})
},
$new: function(d, f, e) {
return $mjs(a.doc.createElement(d)).setProps(f || {}).j6(e || {})
},
addCSS: function(e) {
if (document.styleSheets && document.styleSheets.length) {
document.styleSheets[0].insertRule(e, 0)
} else {
var d = $mjs(document.createElement("style"));
d.update(e);
document.getElementsByTagName("head")[0].appendChild(d)
}
}
};
var a = b;
window.magicJS = b;
window.$mjs = b.$;
a.Array = {
$J_TYPE: "array",
indexOf: function(g, h) {
var d = this.length;
for (var e = this.length, f = (h < 0) ? Math.max(0, e + h) : h || 0; f < e; f++) {
if (this[f] === g) {
return f
}
}
return -1
},
contains: function(d, e) {
return this.indexOf(d, e) != -1
},
forEach: function(d, g) {
for (var f = 0, e = this.length; f < e; f++) {
if (f in this) {
d.call(g, this[f], f, this)
}
}
},
filter: function(d, j) {
var h = [];
for (var g = 0, e = this.length; g < e; g++) {
if (g in this) {
var f = this[g];
if (d.call(j, this[g], g, this)) {
h.push(f)
}
}
}
return h
},
map: function(d, h) {
var g = [];
for (var f = 0, e = this.length; f < e; f++) {
if (f in this) {
g[f] = d.call(h, this[f], f, this)
}
}
return g
}
};
a.implement(String, {
$J_TYPE: "string",
j26: function() {
return this.replace(/^\s+|\s+$/g, "")
},
eq: function(d, e) {
return (e || false) ? (this.toString() === d.toString()) : (this.toLowerCase().toString() === d.toLowerCase().toString())
},
j22: function() {
return this.replace(/-\D/g, function(d) {
return d.charAt(1).toUpperCase()
})
},
dashize: function() {
return this.replace(/[A-Z]/g, function(d) {
return ("-" + d.charAt(0).toLowerCase())
})
},
j17: function(d) {
return parseInt(this, d || 10)
},
toFloat: function() {
return parseFloat(this)
},
j18: function() {
return !this.replace(/true/i, "").j26()
},
has: function(e, d) {
d = d || "";
return (d + this + d).indexOf(d + e + d) > -1
}
});
b.implement(Function, {
$J_TYPE: "function",
j24: function() {
var e = a.$A(arguments),
d = this,
f = e.shift();
return function() {
return d.apply(f || null, e.concat(a.$A(arguments)))
}
},
j16: function() {
var e = a.$A(arguments),
d = this,
f = e.shift();
return function(g) {
return d.apply(f || null, $mjs([g || window.event]).concat(e))
}
},
j27: function() {
var e = a.$A(arguments),
d = this,
f = e.shift();
return window.setTimeout(function() {
return d.apply(d, e)
}, f || 0)
},
j28: function() {
var e = a.$A(arguments),
d = this;
return function() {
return d.j27.apply(d, e)
}
},
interval: function() {
var e = a.$A(arguments),
d = this,
f = e.shift();
return window.setInterval(function() {
return d.apply(d, e)
}, f || 0)
}
});
var c = navigator.userAgent.toLowerCase();
a.j21 = {
features: {
xpath: !!(document.evaluate),
air: !!(window.runtime),
query: !!(document.querySelector)
},
touchScreen: function() {
return "ontouchstart" in window || (window.DocumentTouch && document instanceof DocumentTouch)
}(),
mobile: c.match(/android|tablet|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od|ad)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(j21|link)|vodafone|wap|windows (ce|phone)|xda|xiino/) ? true : false,
engine: (window.opera) ? "presto" : !!(window.ActiveXObject) ? "trident" : (undefined != document.getBoxObjectFor || null != window.mozInnerScreenY) ? "gecko" : (null != window.WebKitPoint || !navigator.taintEnabled) ? "webkit" : "unknown",
version: "",
ieMode: 0,
platform: c.match(/ip(?:ad|od|hone)/) ? "ios" : (c.match(/(?:webos|android)/) || navigator.platform.match(/mac|win|linux/i) || ["other"])[0].toLowerCase(),
backCompat: document.compatMode && "backcompat" == document.compatMode.toLowerCase(),
getDoc: function() {
return (document.compatMode && "backcompat" == document.compatMode.toLowerCase()) ? document.body : document.documentElement
},
requestAnimationFrame: window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || undefined,
cancelAnimationFrame: window.cancelAnimationFrame || window.mozCancelAnimationFrame || window.mozCancelAnimationFrame || window.oCancelAnimationFrame || window.msCancelAnimationFrame || window.webkitCancelRequestAnimationFrame || undefined,
ready: false,
onready: function() {
if (a.j21.ready) {
return
}
a.j21.ready = true;
a.body = $mjs(document.body);
a.win = $mjs(window);
(function() {
a.j21.css3Transformations = {
capable: false,
prefix: ""
};
if (typeof document.body.style.transform !== "undefined") {
a.j21.css3Transformations.capable = true
} else {
var f = "Webkit Moz O ms Khtml".split(" ");
for (var e = 0, d = f.length; e < d; e++) {
a.j21.css3Transformations.prefix = f[e];
if (typeof document.body.style[a.j21.css3Transformations.prefix + "Transform"] !== "undefined") {
a.j21.css3Transformations.capable = true;
break
}
}
}
})();
(function() {
a.j21.css3Animation = {
capable: false,
prefix: ""
};
if (typeof document.body.style.animationName !== "undefined") {
a.j21.css3Animation.capable = true
} else {
var f = "Webkit Moz O ms Khtml".split(" ");
for (var e = 0, d = f.length; e < d; e++) {
a.j21.css3Animation.prefix = f[e];
if (typeof document.body.style[a.j21.css3Animation.prefix + "AnimationName"] !== "undefined") {
a.j21.css3Animation.capable = true;
break
}
}
}
})();
$mjs(document).raiseEvent("domready")
}
};
(function() {
function d() {
return !!(arguments.callee.caller)
}
a.j21.version = ("presto" == a.j21.engine) ? !!(document.head) ? 270 : !!(window.applicationCache) ? 260 : !!(window.localStorage) ? 250 : (a.j21.features.query) ? 220 : ((d()) ? 211 : ((document.getElementsByClassName) ? 210 : 200)) : ("trident" == a.j21.engine) ? !!(window.msPerformance || window.performance) ? 900 : !!(window.XMLHttpRequest && window.postMessage) ? 6 : ((window.XMLHttpRequest) ? 5 : 4) : ("webkit" == a.j21.engine) ? ((a.j21.features.xpath) ? ((a.j21.features.query) ? 525 : 420) : 419) : ("gecko" == a.j21.engine) ? !!(document.head) ? 200 : !!document.readyState ? 192 : !!(window.localStorage) ? 191 : ((document.getElementsByClassName) ? 190 : 181) : "";
a.j21[a.j21.engine] = a.j21[a.j21.engine + a.j21.version] = true;
if (window.chrome) {
a.j21.chrome = true
}
a.j21.ieMode = (!a.j21.trident) ? 0 : (document.documentMode) ? document.documentMode : function() {
var e = 0;
if (a.j21.backCompat) {
return 5
}
switch (a.j21.version) {
case 4:
e = 6;
break;
case 5:
e = 7;
break;
case 6:
e = 8;
break;
case 900:
e = 9;
break
}
return e
}()
})();
(function() {
a.j21.fullScreen = {
capable: false,
enabled: function() {
return false
},
request: function() {},
cancel: function() {},
changeEventName: "",
errorEventName: "",
prefix: ""
};
if (typeof document.cancelFullScreen != "undefined") {
a.j21.fullScreen.capable = true
} else {
var f = "webkit moz o ms khtml".split(" ");
for (var e = 0, d = f.length; e < d; e++) {
a.j21.fullScreen.prefix = f[e];
if (typeof document[a.j21.fullScreen.prefix + "CancelFullScreen"] != "undefined") {
a.j21.fullScreen.capable = true;
break
}
}
}
if (a.j21.fullScreen.capable) {
a.j21.fullScreen.changeEventName = a.j21.fullScreen.prefix + "fullscreenchange";
a.j21.fullScreen.errorEventName = a.j21.fullScreen.prefix + "fullscreenerror";
a.j21.fullScreen.enabled = function() {
switch (this.prefix) {
case "":
return document.fullScreen;
case "webkit":
return document.webkitIsFullScreen;
default:
return document[this.prefix + "FullScreen"]
}
};
a.j21.fullScreen.request = function(g) {
return (this.prefix === "") ? g.requestFullScreen() : g[this.prefix + "RequestFullScreen"]()
};
a.j21.fullScreen.cancel = function(g) {
return (this.prefix === "") ? document.cancelFullScreen() : document[this.prefix + "CancelFullScreen"]()
}
}
})();
a.Element = {
j13: function(d) {
return this.className.has(d, " ")
},
j2: function(d) {
if (d && !this.j13(d)) {
this.className += (this.className ? " " : "") + d
}
return this
},
j3: function(d) {
d = d || ".*";
this.className = this.className.replace(new RegExp("(^|\\s)" + d + "(?:\\s|$)"), "$1").j26();
return this
},
j4: function(d) {
return this.j13(d) ? this.j3(d) : this.j2(d)
},
j5: function(f) {
f = (f == "float" && this.currentStyle) ? "styleFloat" : f.j22();
var d = null,
e = null;
if (this.currentStyle) {
d = this.currentStyle[f]
} else {
if (document.defaultView && document.defaultView.getComputedStyle) {
e = document.defaultView.getComputedStyle(this, null);
d = e ? e.getPropertyValue([f.dashize()]) : null
}
}
if (!d) {
d = this.style[f]
}
if ("opacity" == f) {
return a.defined(d) ? parseFloat(d) : 1
}
if (/^(border(Top|Bottom|Left|Right)Width)|((padding|margin)(Top|Bottom|Left|Right))$/.test(f)) {
d = parseInt(d) ? d : "0px"
}
return ("auto" == d ? null : d)
},
j6Prop: function(f, d) {
try {
if ("opacity" == f) {
this.j23(d);
return this
} else {
if ("float" == f) {
this.style[("undefined" === typeof(this.style.styleFloat)) ? "cssFloat" : "styleFloat"] = d;
return this
} else {
if (a.j21.css3Transformations && /transform/.test(f)) {}
}
}
this.style[f.j22()] = d + (("number" == a.j1(d) && !$mjs(["zIndex", "zoom"]).contains(f.j22())) ? "px" : "")
} catch (g) {}
return this
},
j6: function(e) {
for (var d in e) {
this.j6Prop(d, e[d])
}
return this
},
j19s: function() {
var d = {};
a.$A(arguments).j14(function(e) {
d[e] = this.j5(e)
}, this);
return d
},
j23: function(h, e) {
e = e || false;
h = parseFloat(h);
if (e) {
if (h == 0) {
if ("hidden" != this.style.visibility) {
this.style.visibility = "hidden"
}
} else {
if ("visible" != this.style.visibility) {
this.style.visibility = "visible"
}
}
}
if (a.j21.trident) {
if (!this.currentStyle || !this.currentStyle.hasLayout) {
this.style.zoom = 1
}
try {
var g = this.filters.item("DXImageTransform.Microsoft.Alpha");
g.enabled = (1 != h);
g.opacity = h * 100
} catch (d) {
this.style.filter += (1 == h) ? "" : "progid:DXImageTransform.Microsoft.Alpha(enabled=true,opacity=" + h * 100 + ")"
}
}
this.style.opacity = h;
return this
},
setProps: function(d) {
for (var e in d) {
this.setAttribute(e, "" + d[e])
}
return this
},
hide: function() {
return this.j6({
display: "none",
visibility: "hidden"
})
},
show: function() {
return this.j6({
display: "block",
visibility: "visible"
})
},
j7: function() {
return {
width: this.offsetWidth,
height: this.offsetHeight
}
},
j10: function() {
return {
top: this.scrollTop,
left: this.scrollLeft
}
},
j11: function() {
var d = this,
e = {
top: 0,
left: 0
};
do {
e.left += d.scrollLeft || 0;
e.top += d.scrollTop || 0;
d = d.parentNode
} while (d);
return e
},
j8: function() {
if (a.defined(document.documentElement.getBoundingClientRect)) {
var d = this.getBoundingClientRect(),
f = $mjs(document).j10(),
h = a.j21.getDoc();
return {
top: d.top + f.y - h.clientTop,
left: d.left + f.x - h.clientLeft
}
}
var g = this,
e = t = 0;
do {
e += g.offsetLeft || 0;
t += g.offsetTop || 0;
g = g.offsetParent
} while (g && !(/^(?:body|html)$/i).test(g.tagName));
return {
top: t,
left: e
}
},
j9: function() {
var e = this.j8();
var d = this.j7();
return {
top: e.top,
bottom: e.top + d.height,
left: e.left,
right: e.left + d.width
}
},
changeContent: function(f) {
try {
this.innerHTML = f
} catch (d) {
this.innerText = f
}
return this
},
j33: function() {
return (this.parentNode) ? this.parentNode.removeChild(this) : this
},
kill: function() {
a.$A(this.childNodes).j14(function(d) {
if (3 == d.nodeType || 8 == d.nodeType) {
return
}
$mjs(d).kill()
});
this.j33();
this.je3();
if (this.$J_UUID) {
a.storage[this.$J_UUID] = null;
delete a.storage[this.$J_UUID]
}
return null
},
append: function(g, e) {
e = e || "bottom";
var d = this.firstChild;
("top" == e && d) ? this.insertBefore(g, d): this.appendChild(g);
return this
},
j32: function(f, e) {
var d = $mjs(f).append(this, e);
return this
},
enclose: function(d) {
this.append(d.parentNode.replaceChild(this, d));
return this
},
hasChild: function(d) {
if ("element" !== a.j1("string" == a.j1(d) ? d = document.getElementById(d) : d)) {
return false
}
return (this == d) ? false : (this.contains && !(a.j21.webkit419)) ? (this.contains(d)) : (this.compareDocumentPosition) ? !!(this.compareDocumentPosition(d) & 16) : a.$A(this.byTag(d.tagName)).contains(d)
}
};
a.Element.j19 = a.Element.j5;
a.Element.j20 = a.Element.j6;
if (!window.Element) {
window.Element = a.$F;
if (a.j21.engine.webkit) {
window.document.createElement("iframe")
}
window.Element.prototype = (a.j21.engine.webkit) ? window["[[DOMElement.prototype]]"] : {}
}
a.implement(window.Element, {
$J_TYPE: "element"
});
a.Doc = {
j7: function() {
if (a.j21.presto925 || a.j21.webkit419) {
return {
width: window.innerWidth,
height: window.innerHeight
}
}
return {
width: a.j21.getDoc().clientWidth,
height: a.j21.getDoc().clientHeight
}
},
j10: function() {
return {
x: window.pageXOffset || a.j21.getDoc().scrollLeft,
y: window.pageYOffset || a.j21.getDoc().scrollTop
}
},
j12: function() {
var d = this.j7();
return {
width: Math.max(a.j21.getDoc().scrollWidth, d.width),
height: Math.max(a.j21.getDoc().scrollHeight, d.height)
}
}
};
a.extend(document, {
$J_TYPE: "document"
});
a.extend(window, {
$J_TYPE: "window"
});
a.extend([a.Element, a.Doc], {
j29: function(g, e) {
var d = a.getStorage(this.$J_UUID),
f = d[g];
if (undefined != e && undefined == f) {
f = d[g] = e
}
return (a.defined(f) ? f : null)
},
j30: function(f, e) {
var d = a.getStorage(this.$J_UUID);
d[f] = e;
return this
},
j31: function(e) {
var d = a.getStorage(this.$J_UUID);
delete d[e];
return this
}
});
if (!(window.HTMLElement && window.HTMLElement.prototype && window.HTMLElement.prototype.getElementsByClassName)) {
a.extend([a.Element, a.Doc], {
getElementsByClassName: function(d) {
return a.$A(this.getElementsByTagName("*")).filter(function(g) {
try {
return (1 == g.nodeType && g.className.has(d, " "))
} catch (f) {}
})
}
})
}
a.extend([a.Element, a.Doc], {
byClass: function() {
return this.getElementsByClassName(arguments[0])
},
byTag: function() {
return this.getElementsByTagName(arguments[0])
}
});
if (a.j21.fullScreen.capable) {
a.Element.requestFullScreen = function() {
a.j21.fullScreen.request(this)
}
}
a.Event = {
$J_TYPE: "event",
stop: function() {
if (this.stopPropagation) {
this.stopPropagation()
} else {
this.cancelBubble = true
}
if (this.preventDefault) {
this.preventDefault()
} else {
this.returnValue = false
}
return this
},
j15: function() {
var e, d;
e = ((/touch/i).test(this.type)) ? this.changedTouches[0] : this;
return (!a.defined(e)) ? {
x: 0,
y: 0
} : {
x: e.pageX || e.clientX + a.j21.getDoc().scrollLeft,
y: e.pageY || e.clientY + a.j21.getDoc().scrollTop
}
},
getTarget: function() {
var d = this.target || this.srcElement;
while (d && 3 == d.nodeType) {
d = d.parentNode
}
return d
},
getRelated: function() {
var e = null;
switch (this.type) {
case "mouseover":
e = this.relatedTarget || this.fromElement;
break;
case "mouseout":
e = this.relatedTarget || this.toElement;
break;
default:
return e
}
try {
while (e && 3 == e.nodeType) {
e = e.parentNode
}
} catch (d) {
e = null
}
return e
},
getButton: function() {
if (!this.which && this.button !== undefined) {
return (this.button & 1 ? 1 : (this.button & 2 ? 3 : (this.button & 4 ? 2 : 0)))
}
return this.which
}
};
a._event_add_ = "addEventListener";
a._event_del_ = "removeEventListener";
a._event_prefix_ = "";
if (!document.addEventListener) {
a._event_add_ = "attachEvent";
a._event_del_ = "detachEvent";
a._event_prefix_ = "on"
}
a.extend([a.Element, a.Doc], {
je1: function(g, f) {
var i = ("domready" == g) ? false : true,
e = this.j29("events", {});
e[g] = e[g] || {};
if (e[g].hasOwnProperty(f.$J_EUID)) {
return this
}
if (!f.$J_EUID) {
f.$J_EUID = Math.floor(Math.random() * a.now())
}
var d = this,
h = function(j) {
return f.call(d)
};
if ("domready" == g) {
if (a.j21.ready) {
f.call(this);
return this
}
}
if (i) {
h = function(j) {
j = a.extend(j || window.e, {
$J_TYPE: "event"
});
return f.call(d, $mjs(j))
};
this[a._event_add_](a._event_prefix_ + g, h, false)
}
e[g][f.$J_EUID] = h;
return this
},
je2: function(g) {
var i = ("domready" == g) ? false : true,
e = this.j29("events");
if (!e || !e[g]) {
return this
}
var h = e[g],
f = arguments[1] || null;
if (g && !f) {
for (var d in h) {
if (!h.hasOwnProperty(d)) {
continue
}
this.je2(g, d)
}
return this
}
f = ("function" == a.j1(f)) ? f.$J_EUID : f;
if (!h.hasOwnProperty(f)) {
return this
}
if ("domready" == g) {
i = false
}
if (i) {
this[a._event_del_](a._event_prefix_ + g, h[f], false)
}
delete h[f];
return this
},
raiseEvent: function(h, f) {
var m = ("domready" == h) ? false : true,
l = this,
j;
if (!m) {
var g = this.j29("events");
if (!g || !g[h]) {
return this
}
var i = g[h];
for (var d in i) {
if (!i.hasOwnProperty(d)) {
continue
}
i[d].call(this)
}
return this
}
if (l === document && document.createEvent && !l.dispatchEvent) {
l = document.documentElement
}
if (document.createEvent) {
j = document.createEvent(h);
j.initEvent(f, true, true)
} else {
j = document.createEventObject();
j.eventType = h
}
if (document.createEvent) {
l.dispatchEvent(j)
} else {
l.fireEvent("on" + f, j)
}
return j
},
je3: function() {
var d = this.j29("events");
if (!d) {
return this
}
for (var e in d) {
this.je2(e)
}
this.j31("events");
return this
}
});
(function() {
if ("complete" === document.readyState) {
return a.j21.onready.j27(1)
}
if (a.j21.webkit && a.j21.version < 420) {
(function() {
($mjs(["loaded", "complete"]).contains(document.readyState)) ? a.j21.onready(): arguments.callee.j27(50)
})()
} else {
if (a.j21.trident && a.j21.ieMode < 9 && window == top) {
(function() {
(a.$try(function() {
a.j21.getDoc().doScroll("left");
return true
})) ? a.j21.onready(): arguments.callee.j27(50)
})()
} else {
$mjs(document).je1("DOMContentLoaded", a.j21.onready);
$mjs(window).je1("load", a.j21.onready)
}
}
})();
a.Class = function() {
var h = null,
e = a.$A(arguments);
if ("class" == a.j1(e[0])) {
h = e.shift()
}
var d = function() {
for (var l in this) {
this[l] = a.detach(this[l])
}
if (this.constructor.$parent) {
this.$parent = {};
var o = this.constructor.$parent;
for (var n in o) {
var j = o[n];
switch (a.j1(j)) {
case "function":
this.$parent[n] = a.Class.wrap(this, j);
break;
case "object":
this.$parent[n] = a.detach(j);
break;
case "array":
this.$parent[n] = a.detach(j);
break
}
}
}
var i = (this.init) ? this.init.apply(this, arguments) : this;
delete this.caller;
return i
};
if (!d.prototype.init) {
d.prototype.init = a.$F
}
if (h) {
var g = function() {};
g.prototype = h.prototype;
d.prototype = new g;
d.$parent = {};
for (var f in h.prototype) {
d.$parent[f] = h.prototype[f]
}
} else {
d.$parent = null
}
d.constructor = a.Class;
d.prototype.constructor = d;
a.extend(d.prototype, e[0]);
a.extend(d, {
$J_TYPE: "class"
});
return d
};
b.Class.wrap = function(d, e) {
return function() {
var g = this.caller;
var f = e.apply(d, arguments);
return f
}
};
a.win = $mjs(window);
a.doc = $mjs(document)
})();
(function(b) {
if (!b) {
throw "MagicJS not found";
return
}
if (b.FX) {
return
}
var a = b.$;
b.FX = new b.Class({
options: {
fps: 60,
duration: 500,
transition: function(c) {
return -(Math.cos(Math.PI * c) - 1) / 2
},
onStart: b.$F,
onComplete: b.$F,
onBeforeRender: b.$F,
onAfterRender: b.$F,
forceAnimation: false,
roundCss: true
},
styles: null,
init: function(d, c) {
this.el = a(d);
this.options = b.extend(this.options, c);
this.timer = false
},
start: function(c) {
this.styles = c;
this.state = 0;
this.curFrame = 0;
this.startTime = b.now();
this.finishTime = this.startTime + this.options.duration;
this.loopBind = this.loop.j24(this);
this.options.onStart.call();
if (!this.options.forceAnimation && b.j21.requestAnimationFrame) {
this.timer = b.j21.requestAnimationFrame.call(window, this.loopBind)
} else {
this.timer = this.loop.j24(this).interval(Math.round(1000 / this.options.fps))
}
return this
},
stopAnimation: function() {
if (this.timer) {
if (!this.options.forceAnimation && b.j21.requestAnimationFrame && b.j21.cancelAnimationFrame) {
b.j21.cancelAnimationFrame.call(window, this.timer)
} else {
clearInterval(this.timer)
}
this.timer = false
}
},
stop: function(c) {
c = b.defined(c) ? c : false;
this.stopAnimation();
if (c) {
this.render(1);
this.options.onComplete.j27(10)
}
return this
},
calc: function(e, d, c) {
return (d - e) * c + e
},
loop: function() {
var d = b.now();
if (d >= this.finishTime) {
this.stopAnimation();
this.render(1);
this.options.onComplete.j27(10);
return this
}
var c = this.options.transition((d - this.startTime) / this.options.duration);
if (!this.options.forceAnimation && b.j21.requestAnimationFrame) {
this.timer = b.j21.requestAnimationFrame.call(window, this.loopBind)
}
this.render(c)
},
render: function(c) {
var d = {};
for (var e in this.styles) {
if ("opacity" === e) {
d[e] = Math.round(this.calc(this.styles[e][0], this.styles[e][1], c) * 100) / 100
} else {
d[e] = this.calc(this.styles[e][0], this.styles[e][1], c);
if (this.options.roundCss) {
d[e] = Math.round(d[e])
}
}
}
this.options.onBeforeRender(d);
this.set(d);
this.options.onAfterRender(d)
},
set: function(c) {
return this.el.j6(c)
}
});
b.FX.Transition = {
linear: function(c) {
return c
},
sineIn: function(c) {
return -(Math.cos(Math.PI * c) - 1) / 2
},
sineOut: function(c) {
return 1 - b.FX.Transition.sineIn(1 - c)
},
expoIn: function(c) {
return Math.pow(2, 8 * (c - 1))
},
expoOut: function(c) {
return 1 - b.FX.Transition.expoIn(1 - c)
},
quadIn: function(c) {
return Math.pow(c, 2)
},
quadOut: function(c) {
return 1 - b.FX.Transition.quadIn(1 - c)
},
cubicIn: function(c) {
return Math.pow(c, 3)
},
cubicOut: function(c) {
return 1 - b.FX.Transition.cubicIn(1 - c)
},
backIn: function(d, c) {
c = c || 1.618;
return Math.pow(d, 2) * ((c + 1) * d - c)
},
backOut: function(d, c) {
return 1 - b.FX.Transition.backIn(1 - d)
},
elasticIn: function(d, c) {
c = c || [];
return Math.pow(2, 10 * --d) * Math.cos(20 * d * Math.PI * (c[0] || 1) / 3)
},
elasticOut: function(d, c) {
return 1 - b.FX.Transition.elasticIn(1 - d, c)
},
bounceIn: function(e) {
for (var d = 0, c = 1; 1; d += c, c /= 2) {
if (e >= (7 - 4 * d) / 11) {
return c * c - Math.pow((11 - 6 * d - 11 * e) / 4, 2)
}
}
},
bounceOut: function(c) {
return 1 - b.FX.Transition.bounceIn(1 - c)
},
none: function(c) {
return 0
}
}
})(magicJS);
(function(a) {
if (!a) {
throw "MagicJS not found";
return
}
if (!a.FX) {
throw "MagicJS.FX not found";
return
}
if (a.FX.Slide) {
return
}
var b = a.$;
a.FX.Slide = new a.Class(a.FX, {
options: {
mode: "vertical"
},
init: function(d, c) {
this.el = $mjs(d);
this.options = a.extend(this.$parent.options, this.options);
this.$parent.init(d, c);
this.wrapper = this.el.j29("slide:wrapper");
this.wrapper = this.wrapper || a.$new("DIV").j6(a.extend(this.el.j19s("margin-top", "margin-left", "margin-right", "margin-bottom", "position", "top", "float"), {
overflow: "hidden"
})).enclose(this.el);
this.el.j30("slide:wrapper", this.wrapper).j6({
margin: 0
})
},
vertical: function() {
this.margin = "margin-top";
this.layout = "height";
this.offset = this.el.offsetHeight
},
horizontal: function(c) {
this.margin = "margin-" + (c || "left");
this.layout = "width";
this.offset = this.el.offsetWidth
},
right: function() {
this.horizontal()
},
left: function() {
this.horizontal("right")
},
start: function(e, h) {
this[h || this.options.mode]();
var g = this.el.j5(this.margin).j17(),
f = this.wrapper.j5(this.layout).j17(),
c = {},
i = {},
d;
c[this.margin] = [g, 0], c[this.layout] = [0, this.offset], i[this.margin] = [g, -this.offset], i[this.layout] = [f, 0];
switch (e) {
case "in":
d = c;
break;
case "out":
d = i;
break;
case "toggle":
d = (0 == f) ? c : i;
break
}
this.$parent.start(d);
return this
},
set: function(c) {
this.el.j6Prop(this.margin, c[this.margin]);
this.wrapper.j6Prop(this.layout, c[this.layout]);
return this
},
slideIn: function(c) {
return this.start("in", c)
},
slideOut: function(c) {
return this.start("out", c)
},
hide: function(d) {
this[d || this.options.mode]();
var c = {};
c[this.layout] = 0, c[this.margin] = -this.offset;
return this.set(c)
},
show: function(d) {
this[d || this.options.mode]();
var c = {};
c[this.layout] = this.offset, c[this.margin] = 0;
return this.set(c)
},
toggle: function(c) {
return this.start("toggle", c)
}
})
})(magicJS);
(function(b) {
if (!b) {
throw "MagicJS not found";
return
}
if (b.PFX) {
return
}
var a = b.$;
b.PFX = new b.Class(b.FX, {
init: function(c, d) {
this.el_arr = c;
this.options = b.extend(this.options, d);
this.timer = false
},
start: function(c) {
this.$parent.start([]);
this.styles_arr = c;
return this
},
render: function(c) {
for (var d = 0; d < this.el_arr.length; d++) {
this.el = a(this.el_arr[d]);
this.styles = this.styles_arr[d];
this.$parent.render(c)
}
}
})
})(magicJS);
var MagicZoomPlus = (function(g) {
var i = g.$;
g.$Ff = function(j) {
$mjs(j).stop();
return false
};
g.insertCSS = function(j, l, q) {
var m, k, n, o = [],
e = -1;
q || (q = g.stylesId);
m = g.$(q) || (document.head || document.body).appendChild(g.$new("style", {
id: q,
type: "text/css"
}));
k = m.sheet || m.styleSheet;
if ("object" == g.j1(l)) {
for (n in l) {
o.push(n + ":" + l[n])
}
l = o.join(";")
}
if (k.insertRule) {
e = k.insertRule(j + " {" + l + "}", k.cssRules.length)
} else {
e = k.addRule(j, l)
}
return e
};
var c = {
version: "v4.5.29",
options: {},
defaults: {
opacity: 50,
opacityReverse: false,
smoothingSpeed: 40,
fps: 25,
zoomWidth: 300,
zoomHeight: 300,
zoomDistance: 15,
zoomPosition: "right",
zoomAlign: "top",
zoomWindowEffect: "shadow",
dragMode: false,
moveOnClick: true,
alwaysShowZoom: false,
preservePosition: false,
x: -1,
y: -1,
clickToActivate: false,
clickToDeactivate: false,
initializeOn: "load",
smoothing: true,
showTitle: "top",
titleSource: "title",
zoomFade: true,
zoomFadeInSpeed: 400,
zoomFadeOutSpeed: 200,
hotspots: "",
hint: true,
hintText: "Zoom",
hintPosition: "tl",
hintOpacity: 75,
hintClass: "MagicZoomHint",
showLoading: true,
loadingMsg: "Loading zoom...",
loadingClass: "MagicZoomLoading",
loadingOpacity: 75,
loadingPositionX: -1,
loadingPositionY: -1,
selectorsChange: "click",
selectorsMouseoverDelay: 60,
selectorsEffect: "dissolve",
selectorsEffectSpeed: 400,
preloadSelectorsSmall: true,
preloadSelectorsBig: false,
selectorsClass: "",
fitZoomWindow: true,
entireImage: false,
rightClick: false,
disableZoom: false,
cssClass: "",
onready: g.$F
},
z39: $mjs([/^(opacity)(\s+)?:(\s+)?(\d+)$/i, /^(opacity-reverse)(\s+)?:(\s+)?(true|false)$/i, /^(smoothing\-speed)(\s+)?:(\s+)?(\d+)$/i, /^(fps)(\s+)?:(\s+)?(\d+)$/i, /^(zoom\-width)(\s+)?:(\s+)?(\d+\%?)(px)?/i, /^(zoom\-height)(\s+)?:(\s+)?(\d+\%?)(px)?/i, /^(zoom\-distance)(\s+)?:(\s+)?(\d+)(px)?/i, /^(zoom\-position)(\s+)?:(\s+)?(right|left|top|bottom|custom|inner|#([a-z0-9_\-:\.]+))$/i, /^(zoom\-align)(\s+)?:(\s+)?(right|left|top|bottom|center)$/i, /^(zoom\-fit\-screen)(\s+)?:(\s+)?(true|false)$/i, /^(zoom\-window\-effect)(\s+)?:(\s+)?(shadow|glow|false)$/i, /^(drag\-mode)(\s+)?:(\s+)?(true|false)$/i, /^(move\-on\-click)(\s+)?:(\s+)?(true|false)$/i, /^(always\-show\-zoom)(\s+)?:(\s+)?(true|false)$/i, /^(preserve\-position)(\s+)?:(\s+)?(true|false)$/i, /^(x)(\s+)?:(\s+)?([\d.]+)(px)?/i, /^(y)(\s+)?:(\s+)?([\d.]+)(px)?/i, /^(click\-to\-activate)(\s+)?:(\s+)?(true|false)$/i, /^(click\-to\-deactivate)(\s+)?:(\s+)?(true|false)$/i, /^(initialize\-on)(\s+)?:(\s+)?(load|click|mouseover)$/i, /^(click\-to\-initialize)(\s+)?:(\s+)?(true|false)$/i, /^(smoothing)(\s+)?:(\s+)?(true|false)$/i, /^(show\-title)(\s+)?:(\s+)?(true|false|top|bottom)$/i, /^(title\-source)(\s+)?:(\s+)?(title|#([a-z0-9_\-:\.]+))$/i, /^(zoom\-fade)(\s+)?:(\s+)?(true|false)$/i, /^(zoom\-fade\-in\-speed)(\s+)?:(\s+)?(\d+)$/i, /^(zoom\-fade\-out\-speed)(\s+)?:(\s+)?(\d+)$/i, /^(hotspots)(\s+)?:(\s+)?([a-z0-9_\-:\.]+)$/i, /^(hint)(\s+)?:(\s+)?(true|false)/i, /^(hint\-text)(\s+)?:(\s+)?([^;]*)$/i, /^(hint\-opacity)(\s+)?:(\s+)?(\d+)$/i, /^(hint\-position)(\s+)?:(\s+)?(tl|tr|tc|bl|br|bc)/i, /^(show\-loading)(\s+)?:(\s+)?(true|false)$/i, /^(loading\-msg)(\s+)?:(\s+)?([^;]*)$/i, /^(loading\-opacity)(\s+)?:(\s+)?(\d+)$/i, /^(loading\-position\-x)(\s+)?:(\s+)?(\d+)(px)?/i, /^(loading\-position\-y)(\s+)?:(\s+)?(\d+)(px)?/i, /^(thumb\-change)(\s+)?:(\s+)?(click|mouseover)$/i, /^(selectors\-change)(\s+)?:(\s+)?(click|mouseover)$/i, /^(selectors\-mouseover\-delay)(\s+)?:(\s+)?(\d+)$/i, /^(selectors\-effect)(\s+)?:(\s+)?(dissolve|fade|pounce|false)$/i, /^(selectors\-effect\-speed)(\s+)?:(\s+)?(\d+)$/i, /^(selectors\-class)(\s+)?:(\s+)?([a-z0-9_\-:\.]+)$/i, /^(fit\-zoom\-window)(\s+)?:(\s+)?(true|false)$/i, /^(preload\-selectors\-small)(\s+)?:(\s+)?(true|false)$/i, /^(preload\-selectors\-big)(\s+)?:(\s+)?(true|false)$/i, /^(entire\-image)(\s+)?:(\s+)?(true|false)$/i, /^(right\-click)(\s+)?:(\s+)?(true|false)$/i, /^(disable\-zoom)(\s+)?:(\s+)?(true|false)$/i, /^(css\-class)(\s+)?:(\s+)?([^;]*)$/i]),
zooms: $mjs([]),
z8: function(l) {
var k = /(click|mouseover)/i;
for (var j = 0; j < c.zooms.length; j++) {
if (c.zooms[j].z30 && !c.zooms[j].activatedEx) {
c.zooms[j].pause()
} else {
if (k.test(c.zooms[j].options.initializeOn) && c.zooms[j].initMouseEvent) {
c.zooms[j].initMouseEvent = l
}
}
}
},
stop: function(j) {
var e = $mjs([]);
if (j) {
if ((j = $mjs(j)) && j.zoom) {
e.push(j)
} else {
return false
}
} else {
e = $mjs(g.$A(g.body.byTag("A")).filter(function(k) {
return ((" " + k.className + " ").match(/\sMagicZoom\s/) && k.zoom)
}))
}
e.j14(function(k) {
k.zoom && k.zoom.stop()
}, this)
},
start: function(e) {
if (0 == arguments.length) {
c.refresh();
return true
}
e = $mjs(e);
if (!e || !(" " + e.className + " ").match(/\s(MagicZoom|MagicZoomPlus)\s/)) {
return false
}
if (!e.zoom) {
var j = null;
while (j = e.firstChild) {
if (j.tagName == "IMG") {
break
}
e.removeChild(j)
}
while (j = e.lastChild) {
if (j.tagName == "IMG") {
break
}
e.removeChild(j)
}
if (!e.firstChild || e.firstChild.tagName != "IMG") {
throw "Invalid Magic Zoom"
}
c.zooms.push(new c.zoom(e, (arguments.length > 1) ? arguments[1] : undefined))
} else {
e.zoom.start()
}
},
update: function(l, e, k, j) {
if ((l = $mjs(l)) && l.zoom) {
(null === e || "" === e) && (e = undefined);
(null === k || "" === k) && (k = undefined);
l.zoom.update(e, k, j);
return true
}
return false
},
refresh: function() {
g.$A(window.document.getElementsByTagName("A")).j14(function(e) {
if (e.className.has("MagicZoom", " ")) {
if (c.stop(e)) {
c.start.j27(100, e)
} else {
c.start(e)
}
}
}, this)
},
show: function(e) {
return c.zoomIn(e)
},
zoomIn: function(e) {
if ((e = $mjs(e)) && e.zoom) {
return e.zoom.activate()
}
return false
},
zoomOut: function(e) {
if ((e = $mjs(e)) && e.zoom) {
return e.zoom.pause()
}
return false
},
getXY: function(e) {
if ((e = $mjs(e)) && e.zoom) {
return {
x: e.zoom.options.x,
y: e.zoom.options.y
}
}
},
x7: function(k) {
var j, e;
j = "";
for (e = 0; e < k.length; e++) {
j += String.fromCharCode(14 ^ k.charCodeAt(e))
}
return j
}
};
c.z47 = function() {
this.init.apply(this, arguments)
};
c.z47.prototype = {
init: function(e) {
this.cb = null;
this.z9 = null;
this.onErrorHandler = this.onError.j16(this);
this.z10 = null;
this.width = 0;
this.height = 0;
this.naturalWidth = 0;
this.naturalHeight = 0;
this.border = {
left: 0,
right: 0,
top: 0,
bottom: 0
};
this.padding = {
left: 0,
right: 0,
top: 0,
bottom: 0
};
this.ready = false;
this._tmpp = null;
if ("string" == g.j1(e)) {
this._tmpp = g.$new("div").j2("magic-temporary-img").j6({
position: "absolute",
top: "-10000px",
width: "1px",
height: "1px",
overflow: "hidden"
}).j32(g.body);
this.self = g.$new("img").j32(this._tmpp);
this.z11();
this.self.src = e
} else {
this.self = $mjs(e);
this.z11();
this.self.src = e.src
}
},
_cleanup: function() {
if (this._tmpp) {
if (this.self.parentNode == this._tmpp) {
this.self.j33().j6({
position: "static",
top: "auto"
})
}
this._tmpp.kill();
this._tmpp = null
}
},
onError: function(j) {
if (j) {
$mjs(j).stop()
}
if (this.cb) {
this._cleanup();
this.cb.call(this, false)
}
this.unload()
},
z11: function(e) {
this.z9 = null;
if (e == true || !(this.self.src && (this.self.complete || this.self.readyState == "complete"))) {
this.z9 = function(j) {
if (j) {
$mjs(j).stop()
}
if (this.ready) {
return
}
this.ready = true;
this.z13();
if (this.cb) {
this._cleanup();
this.cb.call()
}
}.j16(this);
this.self.je1("load", this.z9);
$mjs(["abort", "error"]).j14(function(j) {
this.self.je1(j, this.onErrorHandler)
}, this)
} else {
this.ready = true
}
},
update: function(j, l) {
var k = this.ready;
this.unload();
var e = g.$new("a", {
href: j
});
if (true !== l && this.self.src.has(e.href) && 0 !== this.self.width) {
this.ready = k
} else {
this.z11(true);
this.self.src = j
}
e = null
},
z13: function() {
this.naturalWidth = this.self.naturalWidth || this.self.width;
this.naturalHeight = this.self.naturalHeight || this.self.height;
this.width = this.self.width;
this.height = this.self.height;
if (this.width == 0 && this.height == 0 && g.j21.webkit) {
this.width = this.self.naturalWidth;
this.height = this.self.naturalHeight
}
$mjs(["Left", "Right", "Top", "Bottom"]).j14(function(j) {
this.padding[j.toLowerCase()] = this.self.j19("padding" + j).j17();
this.border[j.toLowerCase()] = this.self.j19("border" + j + "Width").j17()
}, this);
if (g.j21.presto || (g.j21.trident && !g.j21.backCompat)) {
this.width -= this.padding.left + this.padding.right;
this.height -= this.padding.top + this.padding.bottom
}
},
getBox: function() {
var e = null;
e = this.self.j9();
return {
top: e.top + this.border.top,
bottom: e.bottom - this.border.bottom,
left: e.left + this.border.left,
right: e.right - this.border.right
}
},
z12: function() {
if (this.z10) {
this.z10.src = this.self.src;
this.self = null;
this.self = this.z10
}
},
load: function(e) {
if (this.ready) {
if (!this.width) {
(function() {
this.z13();
this._cleanup();
e.call()
}).j24(this).j27(1)
} else {
this._cleanup();
e.call()
}
} else {
if (!this.z9) {
e.call(this, false);
return
}
this.cb = e
}
},
unload: function() {
if (this.z9) {
this.self.je2("load", this.z9)
}
$mjs(["abort", "error"]).j14(function(e) {
this.self.je2(e, this.onErrorHandler)
}, this);
this.z9 = null;
this.cb = null;
this.width = null;
this.ready = false;
this._new = false
}
};
c.zoom = function() {
this.construct.apply(this, arguments)
};
c.zoom.prototype = {
construct: function(l, j, k) {
var e = {};
this.z28 = -1;
this.z30 = false;
this.ddx = 0;
this.ddy = 0;
this.firstRun = !(this.z46);
this.exOptions = this.firstRun ? {} : this.exOptions || {};
this.activatedEx = false;
this.z44 = null;
this.z1Holder = $mjs(window).j29("magiczoom:holder") || $mjs(window).j29("magiczoom:holder", g.$new("div").j6({
position: "absolute",
top: -10000,
width: 10,
height: 10,
overflow: "hidden"
}).j32(g.body));
this.options = g.detach(c.defaults);
if (l) {
this.c = $mjs(l)
}
this.divTag = ("div" == this.c.tagName.toLowerCase());
e = g.extend(e, this.z37());
e = g.extend(e, this.z37(this.c.rel));
e = g.extend(e, this.exOptions);
if (j) {
e = g.extend(e, g.extend(true === k ? this.exOptions : {}, this.z37(j)))
}
if (e.dragMode && !e.clickToActivate && undefined === e.alwaysShowZoom) {
e.alwaysShowZoom = true
}
g.extend(this.options, e);
this.options.hotspots += "";
if ("load" == this.options.initializeOn && g.defined(this.options.clickToInitialize) && "true" == this.options.clickToInitialize.toString()) {
this.options.initializeOn = "click"
}
if (g.defined(this.options.thumbChange) && this.options.thumbChange != this.options.selectorsChange) {
this.options.selectorsChange = this.options.thumbChange
}
if (g.j21.touchScreen) {
if (window.matchMedia && window.matchMedia("(max-width: 767px)").matches) {
this.options.zoomPosition = "inner";
this.options.clickToActivate = true
}
}
if (this.firstRun && !this.divTag) {
this.id = this.originId = this.c.id || "";
if (!this.c.id) {
this.c.id = this.id = "zoom-" + Math.floor(Math.random() * g.now())
}
}
if ("inner" == this.options.zoomPosition && this.options.dragMode) {
this.options.moveOnClick = true
}
if (this.options.disableZoom) {
this.z30 = false;
this.options.clickToActivate = true;
this.options.hint = false
}("string" === g.j1(this.options.onready)) && ("function" === g.j1(window[this.options.onready])) && (this.options.onready = window[this.options.onready]);
if (l) {
this.lastSelector = null;
this.z14 = this.mousedown.j16(this);
this.z15 = this.mouseup.j16(this);
this.z16 = this.show.j24(this, true);
this.z17 = this.z29.j24(this);
this.z43Bind = this.z43.j16(this);
this.resizeBind = function(o) {
var n = $mjs(this.c).j29("magiczoom:window:size"),
m = $mjs(window).j7();
if (n.width !== m.width || n.height !== m.height) {
clearTimeout(this.resizeTimer);
this.resizeTimer = this.onresize.j24(this).j27(10);
$mjs(this.c).j30("magiczoom:window:size", m)
}
}.j16(this);
if (!this.divTag) {
this.c.je1("click", function(n) {
var m = n.getButton();
if (3 == m) {
return true
}
$mjs(n).stop();
if (!g.j21.trident) {
this.blur()
}
return false
})
}
this.c.je1("mousedown", this.z14);
this.c.je1("mouseup", this.z15);
if ("mouseover" == this.options.initializeOn) {
this.c.je1("mouseover", this.z14)
}
if (g.j21.touchScreen) {
this.c.j6({
"-webkit-user-select": "none",
"-webkit-touch-callout": "none",
"-webkit-tap-highlight-color": "transparent"
});
if (!this.options.disableZoom) {
this.c.je1("touchstart", this.z14);
this.c.je1("touchend", this.z15)
} else {
this.c.je1("click", function(m) {
m.preventDefault()
})
}
}
this.c.unselectable = "on";
this.c.style.MozUserSelect = "none";
this.c.je1("selectstart", g.$Ff);
if (!this.divTag) {
this.c.j6({
position: "relative",
display: (g.j21.gecko181) ? "block" : "inline-block",
textDecoration: "none",
outline: "0",
cursor: "hand",
overflow: "hidden"
});
if (g.j21.ieMode) {
this.c.j2("magic-for-ie" + g.j21.ieMode)
}
if (this.c.j5("textAlign") == "center") {
this.c.j6({
margin: "auto auto"
})
}
}
this.c.zoom = this
} else {
this.options.initializeOn = "load"
}
if (!this.options.rightClick) {
this.c.je1("contextmenu", g.$Ff)
}
if ("load" == this.options.initializeOn) {
this.z18()
} else {
if ("" !== this.originId) {
this.z26(true)
}
}
},
z18: function() {
var l, o, n, m, j;
if (!this.z7) {
this.z7 = new c.z47(this.c.firstChild);
this.z1 = new c.z47(this.c.href)
} else {
this.z1.update(this.c.href)
}
if (!this.z46) {
this.z46 = {
self: $mjs(document.createElement("DIV")).j2("MagicZoomBigImageCont").j2(this.options.cssClass).j6({
overflow: "hidden",
zIndex: this.options.zoomPosition == "inner" ? 100 : 10002,
top: "-100000px",
position: "absolute",
width: this.options.zoomWidth + "px",
height: this.options.zoomHeight + "px"
}),
zoom: this,
z21: "0px",
lastLeftPos: "0px",
initTopPos: 0,
initLeftPos: 0,
adjustX: {
edge: "left",
ratio: 1
},
adjustY: {
edge: "top",
ratio: 1
},
custom: false,
initWidth: this.options.zoomWidth,
initHeight: this.options.zoomHeight
};
if ("inner" == this.options.zoomPosition) {
this.z46.self.j2("inner-zoom")
}
if (!(g.j21.trident900 && g.j21.ieMode < 9) && "inner" != this.options.zoomPosition) {
switch (this.options.zoomWindowEffect) {
case "shadow":
this.z46.self.j2("MagicBoxShadow");
break;
case "glow":
this.z46.self.j2("MagicBoxGlow");
break;
default:
break
}
}
this.z46.hide = function() {
if (!this.self) {
return
}
if (this.self.style.top != "-100000px" && this.zoom.z4 && !this.zoom.z4.z38) {
this.self.style.top = "-100000px"
}
if (this.self.parentNode === g.body) {
this.self.j32(this.zoom.z1Holder)
}
};
this.z46.z22 = this.z46.hide.j24(this.z46);
if (g.j21.trident4) {
l = $mjs(document.createElement("IFRAME"));
l.src = "javascript:''";
l.j6({
left: "0px",
top: "0px",
position: "absolute",
"z-index": -1
}).frameBorder = 0;
this.z46.z23 = this.z46.self.appendChild(l)
}
this.z46.z41 = $mjs(document.createElement("DIV")).j2("MagicZoomHeader").j6({
position: "relative",
zIndex: 10,
left: "0px",
top: "0px",
padding: "3px"
}).hide();
o = g.$new("DIV", {}, {
overflow: "hidden"
});
o.appendChild(this.z1.self);
this.z1.self.j6({
padding: "0px",
margin: "0px",
border: "0px",
width: "auto",
height: "auto"
});
if (this.options.showTitle == "bottom") {
this.z46.self.appendChild(o);
this.z46.self.appendChild(this.z46.z41)
} else {
this.z46.self.appendChild(this.z46.z41);
this.z46.self.appendChild(o)
}
this.z46.self.j32(this.z1Holder);
if ("undefined" !== typeof(j)) {
this.z46.g = $mjs(document.createElement("div")).j6({
color: j[1],
fontSize: j[2] + "px",
fontWeight: j[3],
fontFamily: "Tahoma",
position: "absolute",
"z-index": 10 + ("" + (this.z1.self.j5("z-index") || 0)).j17(),
width: j[5],
textAlign: j[4],
"line-height": "2em",
left: "0px"
}).changeContent(c.x7(j[0])).j32(this.z46.self, ((Math.floor(Math.random() * 101) + 1) % 2) ? "top" : "bottom")
}
}
this.z46.initWidth = this.options.zoomWidth;
this.z46.initHeight = this.options.zoomHeight;
this.z46.custom = false;
if (this.options.showTitle != "false" && this.options.showTitle != false) {
var k = this.z46.z41;
k.hide();
while (n = k.firstChild) {
k.removeChild(n)
}
if (this.options.titleSource == "title" && "" != this.c.title) {
k.appendChild(document.createTextNode(this.c.title));
k.show()
} else {
if (this.options.titleSource.has("#")) {
var q = this.options.titleSource.replace(/^#/, "");
if ($mjs(q)) {
k.changeContent($mjs(q).innerHTML);
k.show()
}
}
}
} else {
this.z46.z41.hide()
}
this.c.z5 = this.c.title;
this.c.title = "";
this.z7.load(this.z19.j24(this))
},
z19: function(e) {
if (!e && e !== undefined) {
return
}
if (!this.z7) {
return
}
if (!this.options.opacityReverse) {
this.z7.self.j23(1)
}
if (!this.divTag) {
this.c.j6({
width: "auto",
height: "auto"
})
}
if (this.options.showLoading && !this.options.disableZoom) {
this.z24 = setTimeout(this.z17, 400)
}
if (this.options.hotspots != "" && $mjs(this.options.hotspots)) {
this.z25()
}
if (this.c.id != "") {
this.z26()
}
this.z1.load(this.z20.j24(this))
},
z20: function(l) {
var k, j, m, e;
if (!l && l !== undefined) {
clearTimeout(this.z24);
if (this.options.showLoading && this.z3) {
this.z3.hide()
}
this.z28 = g.now();
return
}
if (!this.z7 || !this.z1) {
return
}
j = this.z7.self.j9();
this.z7Rect = j;
if (j.bottom == j.top) {
this.z20.j24(this).j27(500);
return
}
m = ("custom" == this.options.zoomPosition) ? this.c.id + "-big" : this.options.zoomPosition.has("#") ? this.options.zoomPosition.replace(/^#/, "") : null;
if (m && $mjs(m)) {
this.z46.custom = true;
$mjs(m).appendChild(this.z46.self)
} else {
if ("inner" == this.options.zoomPosition) {
this.c.appendChild(this.z46.self)
}
}
this.z7.z13();
this.z1.z13();
if (this.z7.width == 0 && g.j21.trident) {
!this.divTag && this.c.j6({
width: this.z7.width + "px"
})
}
k = this.z46.z41.j7();
if (/%$/i.test(this.options.zoomWidth)) {
this.options.zoomWidth = (parseInt(this.options.zoomWidth) / 100) * this.z7.width
}
if (/%$/i.test(this.options.zoomHeight)) {
this.options.zoomHeight = (parseInt(this.options.zoomHeight) / 100) * this.z7.height
}
this.z46.self.j6({
width: this.options.zoomWidth
});
k = this.z46.z41.j7();
if (this.options.fitZoomWindow || this.options.entireImage) {
if ((this.z1.width < this.options.zoomWidth) || this.options.entireImage) {
this.options.zoomWidth = this.z1.width;
this.z46.self.j6({
width: this.options.zoomWidth
});
k = this.z46.z41.j7()
}
if ((this.z1.height < this.options.zoomHeight) || this.options.entireImage) {
this.options.zoomHeight = this.z1.height + k.height
}
}
switch (this.options.zoomPosition) {
case "right":
this.z46.self.style.left = j.right + this.options.zoomDistance + "px";
this.z46.adjustX.edge = "right";
break;
case "left":
this.z46.self.style.left = j.left - this.options.zoomDistance - this.options.zoomWidth + "px";
break;
case "top":
this.z46.z21 = j.top - (this.options.zoomDistance + this.options.zoomHeight) + "px";
break;
case "bottom":
this.z46.z21 = j.bottom + this.options.zoomDistance + "px";
this.z46.adjustY.edge = "bottom";
break;
case "inner":
this.z46.self.j6({
left: "0px",
height: "100%",
width: "100%"
});
this.options.zoomWidth = this.z7.width;
this.options.zoomHeight = this.z7.height;
this.z46.z21 = "0px";
k = this.z46.z41.j7();
break;
default:
if (this.z46.custom) {
e = $mjs(this.z46.self.parentNode).j7();
if (/%$/i.test(this.z46.initWidth)) {
this.options.zoomWidth = (parseInt(this.z46.initWidth) / 100) * e.width
}
if (/%$/i.test(this.z46.initHeight)) {
this.options.zoomHeight = (parseInt(this.z46.initHeight) / 100) * e.height
}
this.z46.self.j6({
left: "0px",
width: this.options.zoomWidth
});
this.z46.z21 = "0px";
k = this.z46.z41.j7()
}
break
}
if (this.options.showTitle == "bottom") {
$mjs(this.z1.self.parentNode).j6Prop("height", this.options.zoomHeight - k.height)
}
this.z46.self.j6("inner" == this.options.zoomPosition ? {} : {
height: this.options.zoomHeight + "px",
width: this.options.zoomWidth + "px"
}).j23(1);
if (g.j21.trident4 && this.z46.z23) {
this.z46.z23.j6({
width: this.options.zoomWidth + "px",
height: this.options.zoomHeight + "px"
})
}
if (this.options.zoomPosition == "right" || this.options.zoomPosition == "left") {
if (this.options.zoomAlign == "center") {
this.z46.z21 = (j.bottom - (j.bottom - j.top) / 2 - this.options.zoomHeight / 2) + "px";
this.z46.adjustY = {
edge: "bottom",
ratio: 2
}
} else {
if (this.options.zoomAlign == "bottom") {
this.z46.z21 = (j.bottom - this.options.zoomHeight) + "px";
this.z46.adjustY.edge = "bottom"
} else {
this.z46.z21 = j.top + "px"
}
}
} else {
if (this.options.zoomPosition == "top" || this.options.zoomPosition == "bottom") {
if (this.options.zoomAlign == "center") {
this.z46.self.style.left = (j.right - (j.right - j.left) / 2 - this.options.zoomWidth / 2) + "px";
this.z46.adjustX = {
edge: "right",
ratio: 2
}
} else {
if (this.options.zoomAlign == "right") {
this.z46.self.style.left = (j.right - this.options.zoomWidth) + "px";
this.z46.adjustX.edge = "right"
} else {
this.z46.self.style.left = j.left + "px"
}
}
}
}
this.z46.initTopPos = parseInt(this.z46.z21, 10);
this.z46.initLeftPos = parseInt(this.z46.self.style.left, 10);
this.z46.lastLeftPos = this.z46.initLeftPos;
this.z46.z21 = this.z46.initTopPos;
this.zoomViewHeight = this.options.zoomHeight - k.height;
if (this.z46.g) {
this.z46.g.j6({
top: this.options.showTitle == "bottom" ? 0 : "auto",
bottom: this.options.showTitle == "bottom" ? "auto" : 0
})
}
this.z1.self.j6({
position: "relative",
borderWidth: "0px",
padding: "0px",
left: "0px",
top: "0px"
});
this.z27();
if (this.options.alwaysShowZoom) {
if (this.options.x == -1) {
this.options.x = this.z7.width / 2
}
if (this.options.y == -1) {
this.options.y = this.z7.height / 2
}
this.show()
} else {
if (this.options.zoomFade) {
this.z2 = new g.FX(this.z46.self, {
forceAnimation: "ios" === g.j21.platform
})
}
this.z46.self.j6({
top: "-100000px"
})
}
if (this.options.showLoading && this.z3) {
this.z3.hide()
}
this.c.je1("mousemove", this.z43Bind);
this.c.je1("mouseout", this.z43Bind);
if (g.j21.touchScreen) {
this.c.je1("touchmove", this.z43Bind);
this.c.je1("touchend", this.z43Bind)
}
this.setupHint();
$mjs(this.c).j29("magiczoom:window:size", $mjs(window).j7());
$mjs(window).je1("resize", this.resizeBind);
if (!this.options.disableZoom && (!this.options.clickToActivate || "click" == this.options.initializeOn)) {
this.z30 = true
}
if ("click" == this.options.initializeOn && this.initMouseEvent) {
this.z43(this.initMouseEvent)
}
if (this.activatedEx) {
this.activate()
}
this.z28 = g.now();
!this.divTag && ("function" == g.j1(this.options.onready)) && this.options.onready.call(null, this.id, !this.firstRun)
},
setupHint: function() {
var m = /tr|br/i,
e = /bl|br|bc/i,
j = /bc|tc/i,
l = null;
this.hintVisible = undefined;
if (!this.options.hint) {
if (this.hint) {
this.hint.kill();
this.hint = undefined
}
return
}
if (!this.hint) {
this.hint = $mjs(document.createElement("DIV")).j2(this.options.hintClass).j6({
display: "block",
overflow: "hidden",
position: "absolute",
visibility: "hidden",
"z-index": 1
});
if (this.options.hintText != "") {
this.hint.appendChild(document.createTextNode(this.options.hintText))
}
this.c.appendChild(this.hint)
} else {
if (this.options.hintText != "") {
l = this.hint[(this.hint.firstChild) ? "replaceChild" : "appendChild"](document.createTextNode(this.options.hintText), this.hint.firstChild);
l = null
}
}
this.hint.j6({
left: "auto",
right: "auto",
top: "auto",
bottom: "auto",
display: "block",
opacity: (this.options.hintOpacity / 100),
"max-width": (this.z7.width - 4)
});
var k = this.hint.j7();
this.hint.j6Prop((m.test(this.options.hintPosition) ? "right" : "left"), (j.test(this.options.hintPosition) ? (this.z7.width - k.width) / 2 : 2)).j6Prop((e.test(this.options.hintPosition) ? "bottom" : "top"), 2);
this.hintVisible = true;
this.hint.show()
},
z29: function() {
if (this.z1.ready) {
return
}
this.z3 = $mjs(document.createElement("DIV")).j2(this.options.loadingClass).j23(this.options.loadingOpacity / 100).j6({
display: "block",
overflow: "hidden",
position: "absolute",
visibility: "hidden",
"z-index": 20,
"max-width": (this.z7.width - 4)
});
this.z3.appendChild(document.createTextNode(this.options.loadingMsg));
this.c.appendChild(this.z3);
var e = this.z3.j7();
this.z3.j6({
left: (this.options.loadingPositionX == -1 ? ((this.z7.width - e.width) / 2) : (this.options.loadingPositionX)) + "px",
top: (this.options.loadingPositionY == -1 ? ((this.z7.height - e.height) / 2) : (this.options.loadingPositionY)) + "px"
});
this.z3.show()
},
z25: function() {
$mjs(this.options.hotspots).z31 = $mjs(this.options.hotspots).parentNode;
$mjs(this.options.hotspots).z32 = $mjs(this.options.hotspots).nextSibling;
this.c.appendChild($mjs(this.options.hotspots));
$mjs(this.options.hotspots).j6({
position: "absolute",
left: "0px",
top: "0px",
width: this.z7.width + "px",
height: this.z7.height + "px",
zIndex: 15
}).show();
if (g.j21.trident) {
this.c.z33 = this.c.appendChild($mjs(document.createElement("DIV")).j6({
position: "absolute",
left: "0px",
top: "0px",
width: this.z7.width + "px",
height: this.z7.height + "px",
zIndex: 14,
background: "#ccc"
}).j23(0.00001))
}
g.$A($mjs(this.options.hotspots).getElementsByTagName("A")).j14(function(j) {
var k = j.coords.split(","),
e = null;
$mjs(j).j6({
position: "absolute",
left: k[0] + "px",
top: k[1] + "px",
width: (k[2] - k[0]) + "px",
height: (k[3] - k[1]) + "px",
zIndex: 15
}).show();
if (j.j13("MagicThumb")) {
if (e = j.j29("thumb")) {
e.group = this.options.hotspots
} else {
j.rel += ";group: " + this.options.hotspots + ";"
}
}
}, this)
},
z26: function(k) {
var e, l, j = new RegExp("zoom\\-id(\\s+)?:(\\s+)?" + this.c.id + "($|;)");
this.selectors = $mjs([]);
g.$A(document.getElementsByTagName("A")).j14(function(n) {
if (j.test(n.rel)) {
if (!$mjs(n).z36) {
n.z36 = function(o) {
if (!g.j21.trident) {
this.blur()
}
$mjs(o).stop();
return false
};
n.je1("click", n.z36)
}
if (k) {
if (("mouseover" == this.options.initializeOn || "click" == this.options.initializeOn) && !$mjs(n).clickInitZoom) {
n.clickInitZoom = function(p, o) {
o.je2("click", o.clickInitZoom);
if (!!this.z7) {
return
}
$mjs(p).stop();
this.c.href = o.href;
this.c.firstChild.src = o.rev;
this.start(o.rel);
if (this.c.j29("thumb")) {
this.c.j29("thumb").start(this.c.firstChild, this.c.href)
}
}.j16(this, n);
n.je1("click", n.clickInitZoom)
}
return
}
var m = g.$new("a", {
href: n.rev
});
(this.options.selectorsClass != "") && $mjs(n)[this.z1.self.src.has(n.href) && this.z7.self.src.has(m.href) ? "j2" : "j3"](this.options.selectorsClass);
if (this.z1.self.src.has(n.href) && this.z7.self.src.has(m.href)) {
this.lastSelector = n
}
m = null;
if (!n.z34) {
n.z34 = function(q, p) {
p = q.currentTarget || q.getTarget();
try {
while ("a" != p.tagName.toLowerCase()) {
p = p.parentNode
}
} catch (o) {
return
}
if (p.hasChild(q.getRelated())) {
return
}
if (q.type == "mouseout") {
if (this.z35) {
clearTimeout(this.z35)
}
this.z35 = false;
return
}
if (p.title != "") {
this.c.title = p.title
}
if (q.type == "mouseover") {
this.z35 = setTimeout(this.update.j24(this, p.href, p.rev, p.rel, p), this.options.selectorsMouseoverDelay)
} else {
this.update(p.href, p.rev, p.rel, p)
}
}.j16(this);
n.je1(this.options.selectorsChange, n.z34);
if (this.options.selectorsChange == "mouseover") {
n.je1("mouseout", n.z34)
}
}
n.j6({
outline: "0",
display: "inline-block"
});
if (this.options.preloadSelectorsSmall) {
l = new Image();
l.src = n.rev
}
if (this.options.preloadSelectorsBig) {
e = new Image();
e.src = n.href
}
this.selectors.push(n)
}
}, this)
},
stop: function(j) {
try {
if (this.z46) {
this.z46.hide()
}
this.pause();
this.c.je2("mousemove", this.z43Bind);
this.c.je2("mouseout", this.z43Bind);
if (g.j21.touchScreen) {
this.c.je2("touchmove", this.z43Bind);
this.c.je2("touchend", this.z43Bind)
}
if (undefined === j && this.z4) {
this.z4.self.hide()
}
if (this.z2) {
this.z2.stop()
}
this.z6 = null;
this.z30 = false;
if (this.selectors !== undefined) {
this.selectors.j14(function(e) {
if (this.options.selectorsClass != "") {
e.j3(this.options.selectorsClass)
}
if (undefined === j) {
e.je2(this.options.selectorsChange, e.z34);
if (this.options.selectorsChange == "mouseover") {
e.je2("mouseout", e.z34)
}
e.z34 = null;
e.je2("click", e.z36);
e.z36 = null
}
}, this)
}
if (this.options.hotspots != "" && $mjs(this.options.hotspots)) {
$mjs(this.options.hotspots).hide();
$mjs(this.options.hotspots).z31.insertBefore($mjs(this.options.hotspots), $mjs(this.options.hotspots).z32);
if (this.c.z33) {
this.c.removeChild(this.c.z33)
}
}
if (this.options.opacityReverse) {
this.c.j3("MagicZoomPup");
this.z7.self.j23(1)
}
this.z2 = null;
if (this.z3) {
this.c.removeChild(this.z3)
}
if (this.hint) {
this.hint.hide()
}
if (undefined === j) {
if (this.hint) {
this.c.removeChild(this.hint)
}
this.hint = null;
this.z1.unload();
this.z7.unload();
(this.z4 && this.z4.self) && this.c.removeChild(this.z4.self);
(this.z46 && this.z46.self) && this.z46.self.parentNode.removeChild(this.z46.self);
this.z4 = null;
this.z46 = null;
this.z1 = null;
this.z7 = null;
if (!this.options.rightClick) {
this.c.je2("contextmenu", g.$Ff)
}
if ("" === this.originId) {
this.c.removeAttribute("id")
} else {
this.c.id = this.originId
}
$mjs(window).je2("resize", this.resizeBind)
}
if (this.z24) {
clearTimeout(this.z24);
this.z24 = null
}
this.z44 = null;
this.c.z33 = null;
this.z3 = null;
if (this.c.title == "") {
this.c.title = this.c.z5
}
this.z28 = -1
} catch (k) {}
},
start: function(j, e) {
if (this.z28 != -1) {
return
}
this.construct(false, j, (null === e || undefined === e))
},
update: function(D, q, j, C) {
var k, G, e, n, z, l, I = null,
A = null,
o = this.lastSelector,
r, p, s, F, y, v, x, J, H, u;
C = C || null;
if (g.now() - this.z28 < 300 || this.z28 == -1 || this.ufx) {
this.z35 && clearTimeout(this.z35);
k = 300 - g.now() + this.z28;
if (this.z28 == -1) {
k = 300
}
this.z35 = setTimeout(this.update.j24(this, D, q, j, C), k);
return
}
if (C && this.lastSelector == C) {
return
} else {
this.lastSelector = C
}
G = function(K) {
if (undefined != D) {
this.c.href = D
}
if (undefined === j) {
j = ""
}
if (this.options.preservePosition) {
j = "x: " + this.options.x + "; y: " + this.options.y + "; " + j
}
if (undefined != q) {
this.z7.update(q)
}
if (K !== undefined) {
this.z7.load(K)
}
};
A = this.c.j29("thumb");
if (A) {
A.ready && A.restore(null, true);
A.state = "updating";
I = function() {
A.state = "inz30";
A.update(this.c.href, null, j)
}.j24(this)
}
this.z7.z13();
n = this.z7.width;
z = this.z7.height;
this.stop(true);
if (this.options.selectorsEffect != "false" && undefined !== q) {
this.ufx = true;
var E = $mjs(this.c.cloneNode(true)).j6({
position: "relative",
top: 0,
left: 0,
width: ""
});
var w = $mjs(this.c.parentNode).j5("width");
var m = 0;
if ("content-box" == $mjs(this.c.parentNode).j5("box-sizing")) {
m = (parseInt($mjs(this.c.parentNode).j5("padding-left")) || 0)
}
var B = g.$new("div", {
id: this.c.parentNode.id,
"class": this.c.parentNode.className
}).j2("mz-tmp-clone").j6({
padding: $mjs(this.c.parentNode).j5("padding"),
width: w,
"margin-left": "-" + w,
"max-width": $mjs(this.c.parentNode).j5("max-width")
});
if ("td" === this.c.parentNode.tagName.toLocaleLowerCase()) {
B.j6({
padding: 0
});
this.c.parentNode.insertBefore(B, this.c)
} else {
this.c.parentNode.parentNode.insertBefore(B, this.c.parentNode)
}
B.append(E);
g.j21.webkit && B.j7();
if (g.j21.ieMode && g.j21.ieMode < 8) {
$mjs(E.firstChild).j23(1)
}
l = new c.z47(E.firstChild);
l.update(q);
if ("pounce" == this.options.selectorsEffect) {
u = this.c.href;
p = this.selectors.filter(function(K) {
return K.href.has(u)
});
p = (p[0]) ? $mjs(p[0].byTag("img")[0] || p[0]) : this.z7.self;
s = this.selectors.filter(function(K) {
return K.href.has(D)
});
s = (s[0]) ? $mjs(s[0].byTag("img")[0] || s[0]) : null;
if (null == s) {
s = this.z7.self;
p = this.z7.self
}
y = this.z7.self.j8(), v = p.j8(), x = s.j8(), H = p.j7(), J = s.j7()
}
e = function(M) {
var K = {},
O = {},
N = {},
P = null,
L = null;
if (false === M) {
l.unload();
$mjs(l.self).j33();
l = null;
B.j33();
this.ufx = false;
if (A) {
A.state = "inz30"
}
this.lastSelector = o;
this.start(null, o);
return
}
if (g.j21.ieMode && g.j21.ieMode < 8 && (n === l.width || 0 === l.width)) {
l.self.j6Prop("zoom", 1);
B.j7();
l.z13()
}
if ("pounce" == this.options.selectorsEffect) {
K.width = [n, H.width];
K.height = [z, H.height];
K.top = [y.top, v.top];
K.left = [y.left, v.left];
O.width = [J.width, l.width];
O.height = [J.height, l.height];
O.top = [x.top, y.top];
B.j6({
padding: ""
});
E.j23(0).j6({
height: 0,
width: l.width,
position: "relative"
});
O.left = [x.left, E.j8().left + parseInt(w) - m];
N.width = [n, l.width];
l.self.j32(g.body).j6({
position: "absolute",
"z-index": 5001,
left: O.left[0],
top: O.top[0],
width: O.width[0],
height: O.height[0]
});
P = $mjs(this.c.firstChild.cloneNode(false)).j32(g.body).j6({
position: "absolute",
"z-index": 5000,
left: K.left[0],
top: K.top[0],
visibility: "visible"
});
L = this.c.j5("border-width")
} else {
l.self.j32(this.c).j6({
position: "absolute",
"z-index": 5001,
opacity: 0,
left: "0px",
top: "0px",
height: "auto"
});
P = $mjs(this.c.firstChild.cloneNode(false)).j32(this.c).j6({
position: "absolute",
"z-index": 5000,
left: "0px",
top: "0px",
visibility: "visible",
height: "auto"
});
O = {
opacity: [0, 1]
};
if (n != l.width || z != l.height) {
N.width = O.width = K.width = [n, l.width];
N.height = O.height = K.height = [z, l.height]
}
if (this.options.selectorsEffect == "fade") {
K.opacity = [1, 0]
}
}
r = new c.z47(P);
r.load($mjs(function() {
$mjs(this.c.firstChild).j6({
visibility: "hidden"
});
B.j33();
if (null !== L) {
this.c.j6Prop("border-width", 0)
}
new g.PFX([this.c, l.self, (P || this.c.firstChild)], {
duration: this.options.selectorsEffectSpeed,
onComplete: function() {
if (P) {
P.j33();
P = null
}
if (null !== L) {
this.c.j6Prop("border-width", L)
}
G.call(this, function() {
l.unload();
$mjs(this.c.firstChild).j6({
visibility: "visible"
});
$mjs(l.self).j33();
l = null;
if (K.opacity) {
$mjs(this.c.firstChild).j6({
opacity: 1
})
}
this.ufx = false;
this.start(j, C);
if (I) {
I.j27(10)
}
}.j24(this))
}.j24(this)
}).start([N, O, K])
}).j24(this))
};
l.load(e.j24(this))
} else {
G.call(this, function() {
this.c.j6({
width: this.z7.width + "px",
height: this.z7.height + "px"
});
this.start(j, C);
if (I) {
I.j27(10)
}
}.j24(this))
}
},
z37: function(j) {
var e, n, l, k;
e = null;
n = [];
j = j || "";
if ("" == j) {
for (k in c.options) {
e = c.options[k];
switch (g.j1(c.defaults[k.j22()])) {
case "boolean":
e = e.toString().j18();
break;
case "number":
if (!("zoomWidth" === k.j22() || "zoomHeight" === k.j22()) || !/\%$/i.test(e)) {
e = parseFloat(e)
}
break;
default:
break
}
n[k.j22()] = e
}
} else {
l = $mjs(j.split(";"));
l.j14(function(m) {
c.z39.j14(function(o) {
e = o.exec(m.j26());
if (e) {
switch (g.j1(c.defaults[e[1].j22()])) {
case "boolean":
n[e[1].j22()] = e[4] === "true";
break;
case "number":
n[e[1].j22()] = (("zoomWidth" === e[1].j22() || "zoomHeight" === e[1].j22()) && /\%$/.test(e[4])) ? e[4] : parseFloat(e[4]);
break;
default:
n[e[1].j22()] = e[4]
}
}
}, this)
}, this)
}
if (false === n.selectorsEffect) {
n.selectorsEffect = "false"
}
return n
},
z27: function() {
var j, e;
if (!this.z4) {
this.z4 = {
self: $mjs(document.createElement("DIV")).j2("MagicZoomPup").j6({
zIndex: 10,
position: "absolute",
overflow: "hidden"
}).hide(),
width: 20,
height: 20,
bgColor: ""
};
this.c.appendChild(this.z4.self);
this.z4.bgColor = this.z4.self.j5("background-color")
}
if (e = this.c.j29("thumb")) {
this.z4.self.j6({
cursor: (e._o.disableExpand) ? "move" : ""
})
}
if (this.options.entireImage) {
this.z4.self.j6({
"border-width": "0px",
cursor: "default"
})
}
this.z4.z38 = false;
this.z4.height = this.zoomViewHeight / (this.z1.height / this.z7.height);
this.z4.width = this.options.zoomWidth / (this.z1.width / this.z7.width);
if (this.z4.width > this.z7.width) {
this.z4.width = this.z7.width
}
if (this.z4.height > this.z7.height) {
this.z4.height = this.z7.height
}
this.z4.width = Math.round(this.z4.width);
this.z4.height = Math.round(this.z4.height);
this.z4.borderWidth = this.z4.self.j19("borderLeftWidth").j17();
this.z4.self.j6({
width: (this.z4.width - 2 * (g.j21.backCompat ? 0 : this.z4.borderWidth)) + "px",
height: (this.z4.height - 2 * (g.j21.backCompat ? 0 : this.z4.borderWidth)) + "px"
});
if (!this.options.opacityReverse && !this.options.rightClick) {
this.z4.self.j23(parseFloat(this.options.opacity / 100));
if (this.z4.z42) {
this.z4.self.removeChild(this.z4.z42);
this.z4.z42 = null
}
} else {
if (this.z4.z42) {
this.z4.z42.src = this.z7.self.src
} else {
j = this.z7.self.cloneNode(false);
j.unselectable = "on";
this.z4.z42 = $mjs(this.z4.self.appendChild(j)).j6({
position: "absolute",
zIndex: 5
})
}
if (this.options.opacityReverse) {
this.z4.z42.j6(this.z7.self.j7());
this.z4.self.j23(1);
if (g.j21.ieMode && g.j21.ieMode < 9) {
this.z4.z42.j23(1)
}
} else {
if (this.options.rightClick) {
this.z4.z42.j23(0.009)
}
this.z4.self.j23(parseFloat(this.options.opacity / 100))
}
}
},
z43: function(l, j) {
if (!this.z30 || l === undefined || l.skipAnimation) {
return false
}
if (!this.z4) {
return false
}
var m = (/touch/i).test(l.type) && l.touches.length > 1;
var k = ("touchend" == l.type && !l.continueAnimation);
if ((!this.divTag || l.type != "mouseout") && !m) {
$mjs(l).stop()
}
if (j === undefined) {
j = $mjs(l).j15()
}
if (this.z6 === null || this.z6 === undefined) {
this.z6 = this.z7.getBox()
}
if (k || ("mouseout" == l.type && this.c !== l.getRelated() && !this.c.hasChild(l.getRelated())) || m || j.x > this.z6.right || j.x < this.z6.left || j.y > this.z6.bottom || j.y < this.z6.top) {
this.pause();
return false
}
this.activatedEx = false;
if (l.type == "mouseout" || l.type == "touchend") {
return false
}
if (this.options.dragMode && !this.z45) {
return false
}
if (!this.options.moveOnClick) {
j.x -= this.ddx;
j.y -= this.ddy
}
if ((j.x + this.z4.width / 2) >= this.z6.right) {
j.x = this.z6.right - this.z4.width / 2
}
if ((j.x - this.z4.width / 2) <= this.z6.left) {
j.x = this.z6.left + this.z4.width / 2
}
if ((j.y + this.z4.height / 2) >= this.z6.bottom) {
j.y = this.z6.bottom - this.z4.height / 2
}
if ((j.y - this.z4.height / 2) <= this.z6.top) {
j.y = this.z6.top + this.z4.height / 2
}
this.options.x = j.x - this.z6.left;
this.options.y = j.y - this.z6.top;
if (this.z44 === null) {
this.z44 = setTimeout(this.z16, 10)
}
if (g.defined(this.hintVisible) && this.hintVisible) {
this.hintVisible = false;
this.hint.hide()
}
return true
},
show: function(m) {
if (m && !this.z44) {
return
}
var s, p, l, k, r, q, o, n, j, e = this.options,
u = this.z4;
s = u.width / 2;
p = u.height / 2;
u.self.style.left = e.x - s + this.z7.border.left + "px";
u.self.style.top = e.y - p + this.z7.border.top + "px";
if (this.options.opacityReverse) {
u.z42.style.left = "-" + (parseFloat(u.self.style.left) + u.borderWidth) + "px";
u.z42.style.top = "-" + (parseFloat(u.self.style.top) + u.borderWidth) + "px"
}
l = (this.options.x - s) * (this.z1.width / this.z7.width);
k = (this.options.y - p) * (this.z1.height / this.z7.height);
if (this.z1.width - l < e.zoomWidth) {
l = this.z1.width - e.zoomWidth;
if (l < 0) {
l = 0
}
}
if (this.z1.height - k < this.zoomViewHeight) {
k = this.z1.height - this.zoomViewHeight;
if (k < 0) {
k = 0
}
}
if (document.documentElement.dir == "rtl") {
l = (e.x + u.width / 2 - this.z7.width) * (this.z1.width / this.z7.width)
}
l = Math.round(l);
k = Math.round(k);
if (e.smoothing === false || (!u.z38)) {
this.z1.self.style.left = (-l) + "px";
this.z1.self.style.top = (-k) + "px"
} else {
r = parseInt(this.z1.self.style.left);
q = parseInt(this.z1.self.style.top);
o = (-l - r);
n = (-k - q);
if (!o && !n) {
this.z44 = null;
return
}
o *= e.smoothingSpeed / 100;
if (o < 1 && o > 0) {
o = 1
} else {
if (o > -1 && o < 0) {
o = -1
}
}
r += o;
n *= e.smoothingSpeed / 100;
if (n < 1 && n > 0) {
n = 1
} else {
if (n > -1 && n < 0) {
n = -1
}
}
q += n;
this.z1.self.style.left = r + "px";
this.z1.self.style.top = q + "px"
}
if (!u.z38) {
if (this.z2) {
this.z2.stop();
this.z2.options.onComplete = g.$F;
this.z2.options.duration = e.zoomFadeInSpeed;
this.z46.self.j23(0);
this.z2.start({
opacity: [0, 1]
})
}
if (/^(left|right|top|bottom)$/i.test(e.zoomPosition)) {
this.z46.self.j32(g.body)
}
if (e.zoomPosition != "inner") {
u.self.show()
}
this.z46.self.j6(this.adjustPosition(/^(left|right|top|bottom)$/i.test(e.zoomPosition) && !this.options.alwaysShowZoom));
if (e.opacityReverse) {
this.c.j6Prop("background-color", this.z4.bgColor);
this.z7.self.j23(parseFloat((100 - e.opacity) / 100))
}
u.z38 = true
}
if (this.z44) {
this.z44 = setTimeout(this.z16, 1000 / e.fps)
}
},
adjustPosition: function(q) {
var j = this.t13(5),
e = this.z7.self.j9(),
n = this.options.zoomPosition,
m = this.z46,
k = this.options.zoomDistance,
u = m.self.j7(),
p = m.initTopPos,
l = m.initLeftPos,
o = {
left: m.initLeftPos,
top: m.initTopPos
};
if ("inner" === n || this.z46.custom) {
return o
}
q || (q = false);
m.lastLeftPos += (e[m.adjustX.edge] - this.z7Rect[m.adjustX.edge]) / m.adjustX.ratio;
m.z21 += (e[m.adjustY.edge] - this.z7Rect[m.adjustY.edge]) / m.adjustY.ratio;
this.z7Rect = e;
o.left = l = m.lastLeftPos;
o.top = p = m.z21;
if (q) {
if ("left" == n || "right" == n) {
if ("left" == n && j.left > l) {
o.left = (e.left - j.left >= u.width) ? (e.left - u.width - 2) : (j.right - e.right - 2 > e.left - j.left - 2) ? (e.right + 2) : (e.left - u.width - 2)
} else {
if ("right" == n && j.right < l + u.width) {
o.left = (j.right - e.right >= u.width) ? (e.right + 2) : (e.left - j.left - 2 > j.right - e.right - 2) ? (e.left - u.width - 2) : (e.right + 2)
}
}
} else {
if ("top" == n || "bottom" == n) {
o.left = Math.max(j.left + 2, Math.min(j.right, l + u.width) - u.width);
if ("top" == n && j.top > p) {
o.top = (e.top - j.top >= u.height) ? (e.top - u.height - 2) : (j.bottom - e.bottom - 2 > e.top - j.top - 2) ? (e.bottom + 2) : (e.top - u.height - 2)
} else {
if ("bottom" == n && j.bottom < p + u.height) {
o.top = (j.bottom - e.bottom >= u.height) ? (e.bottom + 2) : (e.top - j.top - 2 > j.bottom - e.bottom - 2) ? (e.top - u.height - 2) : (e.bottom + 2)
}
}
}
}
}
return o
},
t13: function(k) {
k = k || 0;
var j = (g.j21.touchScreen) ? {
width: window.innerWidth,
height: window.innerHeight
} : $mjs(window).j7(),
e = $mjs(window).j10();
return {
left: e.x + k,
right: e.x + j.width - k,
top: e.y + k,
bottom: e.y + j.height - k
}
},
onresize: function(m) {
if (!this.z7 || !this.z7.ready) {
return
}
var k, j, l = {
width: this.z7.width,
height: this.z7.height
};
this.z7.z13();
if (this.z46.custom) {
j = $mjs(this.z46.self.parentNode).j7();
if (/%$/i.test(this.z46.initWidth)) {
this.options.zoomWidth = (parseInt(this.z46.initWidth) / 100) * j.width
}
if (/%$/i.test(this.z46.initHeight)) {
this.options.zoomHeight = (parseInt(this.z46.initHeight) / 100) * j.height
}
} else {
if ("inner" === this.options.zoomPosition) {
this.options.zoomWidth = this.z7.width;
this.options.zoomHeight = this.z7.height
} else {
if (/%$/i.test(this.z46.initWidth)) {
this.options.zoomWidth *= this.z7.width / l.width
}
if (/%$/i.test(this.z46.initHeight)) {
this.options.zoomHeight *= this.z7.height / l.height
}
}
}
k = this.z46.z41.j7();
this.zoomViewHeight = this.options.zoomHeight - k.height;
if (this.options.showTitle == "bottom") {
$mjs(this.z1.self.parentNode).j6Prop("height", this.options.zoomHeight - k.height)
}
this.z46.self.j6("inner" == this.options.zoomPosition ? {} : {
height: this.options.zoomHeight + "px",
width: this.options.zoomWidth + "px"
});
if (g.j21.trident4 && this.z46.z23) {
this.z46.z23.j6({
width: this.options.zoomWidth,
height: this.options.zoomHeight
})
}
if (this.options.opacityReverse && this.z4.z42) {
this.z4.z42.j6(this.z7.self.j7())
}
this.z4.height = this.zoomViewHeight / (this.z1.height / this.z7.height);
this.z4.width = this.options.zoomWidth / (this.z1.width / this.z7.width);
if (this.z4.width > this.z7.width) {
this.z4.width = this.z7.width
}
if (this.z4.height > this.z7.height) {
this.z4.height = this.z7.height
}
this.z4.width = Math.round(this.z4.width);
this.z4.height = Math.round(this.z4.height);
this.z4.borderWidth = this.z4.self.j19("borderLeftWidth").j17();
this.z4.self.j6({
width: (this.z4.width - 2 * (g.j21.backCompat ? 0 : this.z4.borderWidth)) + "px",
height: (this.z4.height - 2 * (g.j21.backCompat ? 0 : this.z4.borderWidth)) + "px"
});
if (this.z4.z38) {
this.z46.self.j6(this.adjustPosition(/^(left|right|top|bottom)$/i.test(this.options.zoomPosition) && !this.options.alwaysShowZoom));
this.options.x *= this.z7.width / l.width;
this.options.y *= this.z7.height / l.height;
this.show()
}
},
activate: function(j, k) {
j = (g.defined(j)) ? j : true;
this.activatedEx = true;
if (!this.z1) {
this.z18();
return
}
if (this.options.disableZoom) {
return
}
this.z30 = true;
if (j) {
if (g.defined(k)) {
this.z43(k);
return
}
if (!this.options.preservePosition) {
this.options.x = this.z7.width / 2;
this.options.y = this.z7.height / 2
}
this.show()
}
},
pause: function() {
var e = this.z4 && this.z4.z38;
if (this.z44) {
clearTimeout(this.z44);
this.z44 = null
}
if (!this.options.alwaysShowZoom && this.z4 && this.z4.z38) {
this.z4.z38 = false;
this.z4.self.hide();
if (this.z2) {
this.z2.stop();
this.z2.options.onComplete = this.z46.z22;
this.z2.options.duration = this.options.zoomFadeOutSpeed;
var j = this.z46.self.j19("opacity");
this.z2.start({
opacity: [j, 0]
})
} else {
this.z46.hide()
}
if (this.options.opacityReverse) {
this.c.j6Prop("background-color", "");
this.z7.self.j23(1)
}
}
this.z6 = null;
if (this.options.clickToActivate) {
this.z30 = false
}
if (this.options.dragMode) {
this.z45 = false
}
if (this.hint) {
this.hintVisible = true;
this.hint.show()
}
},
mousedown: function(m) {
var j = m.getButton(),
l = (/touch/i).test(m.type),
o = g.now();
if (3 == j) {
return true
}
if (l) {
if (m.targetTouches.length > 1) {
return
}
this.c.j30("magiczoom:event:lastTap", {
id: m.targetTouches[0].identifier,
x: m.targetTouches[0].clientX,
y: m.targetTouches[0].clientY,
ts: o
});
if (this.z1 && this.z1.ready && !this.z30) {
return
}
}
if (!(l && m.touches.length > 1)) {
$mjs(m).stop()
}
if ("click" == this.options.initializeOn && !this.z7) {
this.initMouseEvent = m;
this.z18();
return
}
if ("mouseover" == this.options.initializeOn && !this.z7 && (m.type == "mouseover" || m.type == "touchstart")) {
this.initMouseEvent = m;
this.z18();
this.c.je2("mouseover", this.z14);
return
}
if (this.options.disableZoom) {
return
}
if (this.z7 && !this.z1.ready) {
return
}
if (this.z1 && this.options.clickToDeactivate && this.z30 && !l) {
this.z30 = false;
this.pause();
return
}
if (this.z1 && !this.z30) {
this.activate(true, m);
m.stopImmediatePropagation && m.stopImmediatePropagation();
if (this.c.j29("thumb")) {
this.c.j29("thumb").dblclick = true
}
}
if (this.z30 && this.options.dragMode) {
this.z45 = true;
if (!this.options.moveOnClick) {
if (this.z6 === null || this.z6 === undefined) {
this.z6 = this.z7.getBox()
}
var k = m.j15();
this.ddx = k.x - this.options.x - this.z6.left;
this.ddy = k.y - this.options.y - this.z6.top;
if (Math.abs(this.ddx) > this.z4.width / 2 || Math.abs(this.ddy) > this.z4.height / 2) {
this.z45 = false;
return
}
} else {
this.z43(m)
}
}
},
mouseup: function(m) {
var j = m.getButton(),
l = (/touch/i).test(m.type),
p = g.now(),
o = null,
k = this.options.preservePosition;
if (3 == j) {
return true
}
if (l) {
o = this.c.j29("magiczoom:event:lastTap");
if (!o || m.targetTouches.length > 1) {
return
}
if (o.id == m.changedTouches[0].identifier && p - o.ts <= 200 && Math.sqrt(Math.pow(m.changedTouches[0].clientX - o.x, 2) + Math.pow(m.changedTouches[0].clientY - o.y, 2)) <= 15) {
if (this.z1 && this.z1.ready && !this.z30) {
if (this.z6 === null || this.z6 === undefined) {
this.z6 = this.z7.getBox()
}
this.options.preservePosition = true;
this.options.x = m.j15().x - this.z6.left;
this.options.y = m.j15().y - this.z6.top;
this.activate(true);
this.options.preservePosition = k;
this.options.dragMode && (this.z45 = true);
this.ddx = 0;
this.ddy = 0;
m.continueAnimation = true;
m.zoomActivation = true;
m.stopImmediatePropagation && m.stopImmediatePropagation()
}
$mjs(m).stop();
return
}
} else {
$mjs(m).stop();
if (this.options.dragMode) {
this.z45 = false
}
}
}
};
if (g.j21.trident) {
try {
document.execCommand("BackgroundImageCache", false, true)
} catch (f) {}
}
$mjs(document).je1("domready", function() {
g.insertCSS(".mz-tmp-clone", "margin-right: 0 !important;margin-top: 0 !important;margin-bottom: 0 !important;padding-top: 0 !important;padding-bottom: 0 !important;border: 0 !important;position: relative !important;height: 0 !important;min-height: 0 !important;z-index: -1;float: none !important;opacity: 0;", "mz-css");
$mjs(document).je1("mousemove", c.z8)
});
var d = new g.Class({
self: null,
ready: false,
options: {
width: -1,
height: -1,
onload: g.$F,
onabort: g.$F,
onerror: g.$F
},
width: 0,
height: 0,
nWidth: 0,
nHeight: 0,
border: {
left: 0,
right: 0,
top: 0,
bottom: 0
},
margin: {
left: 0,
right: 0,
top: 0,
bottom: 0
},
padding: {
left: 0,
right: 0,
top: 0,
bottom: 0
},
_timer: null,
_handlers: {
onload: function(j) {
if (j) {
$mjs(j).stop()
}
this._unbind();
if (this.ready) {
return
}
this.ready = true;
this.calc();
this._cleanup();
this.options.onload.j27(1)
},
onabort: function(j) {
if (j) {
$mjs(j).stop()
}
this._unbind();
this.ready = false;
this._cleanup();
this.options.onabort.j27(1)
},
onerror: function(j) {
if (j) {
$mjs(j).stop()
}
this._unbind();
this.ready = false;
this._cleanup();
this.options.onerror.j27(1)
}
},
_bind: function() {
$mjs(["load", "abort", "error"]).j14(function(e) {
this.self.je1(e, this._handlers["on" + e].j16(this).j28(1))
}, this)
},
_unbind: function() {
$mjs(["load", "abort", "error"]).j14(function(e) {
this.self.je2(e)
}, this)
},
_cleanup: function() {
if (this.self.j29("new")) {
var e = this.self.parentNode;
this.self.j33().j31("new").j6({
position: "static",
top: "auto"
});
e.kill()
}
},
init: function(k, j) {
this.options = g.extend(this.options, j);
var e = this.self = $mjs(k) || g.$new("img", {}, {
"max-width": "none",
"max-height": "none"
}).j32(g.$new("div").j2("magic-temporary-img").j6({
position: "absolute",
top: -10000,
width: 10,
height: 10,
overflow: "hidden"
}).j32(g.body)).j30("new", true),
l = function() {
if (this.isReady()) {
this._handlers.onload.call(this)
} else {
this._handlers.onerror.call(this)
}
l = null
}.j24(this);
this._bind();
if (!k.src) {
e.src = k
} else {
e.src = k.src
}
if (e && e.complete) {
this._timer = l.j27(100)
}
},
destroy: function() {
if (this._timer) {
try {
clearTimeout(this._timer)
} catch (e) {}
this._timer = null
}
this._unbind();
this._cleanup();
this.ready = false;
return this
},
isReady: function() {
var e = this.self;
return (e.naturalWidth) ? (e.naturalWidth > 0) : (e.readyState) ? ("complete" == e.readyState) : e.width > 0
},
calc: function() {
this.nWidth = this.self.naturalWidth || this.self.width;
this.nHeight = this.self.naturalHeight || this.self.height;
if (this.options.width > 0) {
this.self.j6Prop("width", this.options.width)
} else {
if (this.options.height > 0) {
this.self.j6Prop("height", this.options.height)
}
}
this.width = this.self.width;
this.height = this.self.height;
$mjs(["left", "right", "top", "bottom"]).j14(function(e) {
this.margin[e] = this.self.j5("margin-" + e).j17();
this.padding[e] = this.self.j5("padding-" + e).j17();
this.border[e] = this.self.j5("border-" + e + "-width").j17()
}, this)
}
});
var b = {
version: "v2.2.13-mzp",
options: {},
lang: {},
start: function(m) {
this.thumbs = $mjs(window).j29("magicthumb:items", $mjs([]));
var l = null,
j = null,
k = $mjs([]),
e = (arguments.length > 1) ? g.extend(g.detach(b.options), arguments[1]) : b.options;
if (m) {
j = $mjs(m);
if (j && (" " + j.className + " ").match(/\s(MagicThumb|MagicZoomPlus)\s/)) {
k.push(j)
} else {
return false
}
} else {
k = $mjs(g.$A(g.body.byTag("A")).filter(function(n) {
return n.className.has("MagicThumb", " ")
}))
}
k.forEach(function(n) {
if (l = $mjs(n).j29("thumb")) {
l.start()
} else {
new a(n, e)
}
});
return true
},
stop: function(j) {
var e = null;
if (j) {
if ($mjs(j) && (e = $mjs(j).j29("thumb"))) {
e = e.t16(e.t27 || e.id).stop();
delete e;
return true
}
return false
}
while (this.thumbs.length) {
e = this.thumbs[this.thumbs.length - 1].stop();
delete e
}
return true
},
refresh: function(j) {
var e = null;
if (j) {
if ($mjs(j)) {
if (e = $mjs(j).j29("thumb")) {
e = this.stop(j);
delete e
}
this.start.j27(150, j);
return true
}
return false
}
this.stop();
this.start.j27(150);
return true
},
update: function(n, e, k, l) {
var m = $mjs(n),
j = null;
if (m && (j = m.j29("thumb"))) {
j.t16(j.t27 || j.id).update(e, k, l)
}
},
expand: function(j) {
var e = null;
if ($mjs(j) && (e = $mjs(j).j29("thumb"))) {
e.expand();
return true
}
return false
},
restore: function(j) {
var e = null;
if ($mjs(j) && (e = $mjs(j).j29("thumb"))) {
e.restore();
return true
}
return false
}
};
var a = new g.Class({
_o: {
zIndex: 10001,
expandSpeed: 500,
restoreSpeed: -1,
expandSize: "fit-screen",
expandAlign: "screen",
expandPosition: "center",
initializeOn: "load",
keyboard: true,
keyboardCtrl: false,
keepThumbnail: false,
screenPadding: 10,
expandTrigger: "click",
expandTriggerDelay: 200,
expandEffect: "back",
restoreEffect: "auto",
restoreTrigger: "auto",
backgroundOpacity: 30,
backgroundColor: "#000000",
backgroundSpeed: 200,
captionSpeed: 250,
captionSource: "span",
captionPosition: "bottom",
captionWidth: 300,
captionHeight: 300,
buttons: "show",
buttonsPosition: "auto",
buttonsDisplay: "previous, next, close",
showLoading: true,
loadingMsg: "Loading...",
loadingMsgExpanded: "Loading...",
loadingOpacity: 75,
loadingClass: "MagicThumbLoading",
slideshowEffect: "dissolve",
slideshowSpeed: 500,
slideshowLoop: true,
selectorsChange: "click",
selectorsMouseoverDelay: 60,
selectorsEffect: "dissolve",
selectorsEffectSpeed: 400,
selectorsClass: "",
group: null,
link: "",
linkTarget: "_self",
cssClass: "",
hint: true,
hintText: "Expand",
hintPosition: "tl",
hintOpacity: 75,
hintClass: "MagicThumbHint",
rightClick: "false",
disableExpand: false,
panZoom: true,
preloadSelectorsSmall: true,
preloadSelectorsBig: false
},
_deprecated: {
clickToInitialize: function(e) {
e = ("" + e).j18();
if (e && "load" == this._o.initializeOn) {
this._o.initializeOn = "click"
}
},
imageSize: function(e) {
if ("fit-screen" == this._o.expandSize && "original" == e) {
this._o.expandSize = "original"
}
},
swapImage: function(e) {
if ("click" == this._o.selectorsChange && "mouseover" == e) {
this._o.selectorsChange = "mouseover"
}
}
},
_lang: {
buttonPrevious: "Previous",
buttonNext: "Next",
buttonClose: "Close"
},
thumbs: [],
t29: null,
r: null,
id: null,
t27: null,
group: null,
params: {},
ready: false,
error: false,
dblclick: false,
mzParams: "zoom-position: inner; hint: false; click-to-activate: false; drag-mode: false; initialize-on: load; show-loading: false; entire-image: false; zoom-window-effect: false; disable-zoom: false; opacity-reverse: false;",
z7: null,
z1: null,
content: null,
t22: null,
z3: null,
t23: null,
t25: null,
t26: null,
hint: null,
captionText: null,
state: "uninitialized",
t28: [],
cbs: {
previous: {
index: 0,
title: "buttonPrevious"
},
next: {
index: 1,
title: "buttonNext"
},
close: {
index: 2,
title: "buttonClose"
}
},
position: {
top: "auto",
bottom: "auto",
left: "auto",
right: "auto"
},
size: {
width: -1,
height: -1
},
media: "img",
easing: {
linear: ["", ""],
sine: ["Out", "In"],
quad: ["Out", "In"],
cubic: ["Out", "In"],
back: ["Out", "In"],
elastic: ["Out", "In"],
bounce: ["Out", "In"],
expo: ["Out", "In"]
},
fps: 50,
hCaption: false,
scrPad: {
x: 0,
y: 0
},
ieBack: (g.j21.trident && (g.j21.trident4 || g.j21.backCompat)) || false,
onInititalize: null,
init: function(e, j) {
this.thumbs = g.win.j29("magicthumb:items", $mjs([]));
this.t29 = (this.t29 = g.win.j29("magicthumb:holder")) ? this.t29 : g.win.j29("magicthumb:holder", g.$new("div").j6({
position: "absolute",
top: -10000,
width: 10,
height: 10,
overflow: "hidden"
}).j32(g.body));
this.t28 = $mjs(this.t28);
this.r = $mjs(e) || g.$new("A");
this._o.captionSource = "a:title";
this._o.keepThumbnail = true;
this.z37(j);
this.z37(this.r.rel);
this.parseExOptions();
this.setLang(b.lang);
this.scrPad.y = this.scrPad.x = this._o.screenPadding * 2;
this.scrPad.x += this.ieBack ? g.body.j5("margin-left").j17() + g.body.j5("margin-right").j17() : 0;
this.r.id = this.id = this.r.id || ("mt-" + Math.floor(Math.random() * g.now()));
if (arguments.length > 2) {
this.params = arguments[2]
}
this.params.thumbnail = this.params.thumbnail || this.r.byTag("IMG")[0];
this.params.content = this.params.content || this.r.href;
this.t27 = this.params.t27 || null;
this.group = this._o.group || null;
this.hCaption = /(left|right)/i.test(this._o.captionPosition);
if (this._o.disableExpand) {
this._o.hint = false
}
if (this.t27) {
this._o.initializeOn = "load"
}
this.mzParams += "right-click : " + ("true" == this._o.rightClick || "expanded" == this._o.rightClick);
if ((" " + this.r.className + " ").match(/\s(MagicThumb|MagicZoomPlus)\s/)) {
if (this.r.zoom && !this.r.zoom.options.disableZoom) {
this._o.showLoading = false
}
this.r.j6({
position: "relative",
display: (g.j21.gecko181) ? "block" : "inline-block"
});
if (this._o.disableExpand) {
this.r.j6({
cursor: "default"
})
}
if ("true" != this._o.rightClick && "original" != this._o.rightClick) {
this.r.je1("contextmenu", function(k) {
$mjs(k).stop()
})
}
this.r.j30("j24:click", function(o) {
var n = this.j29("thumb"),
m = g.now(),
k;
$mjs(o).stop();
if ("touchend" === o.type) {
n._o.expandEffect = "linear";
n._o.restoreEffect = "linear";
n._o.keepThumbnail = false
}
if ("click" === o.type) {
k = this.j29("magicthumb:event:click");
if (!k) {
return
}
if (Math.sqrt(Math.pow(o.j15().x - k.x, 2) + Math.pow(o.j15().y - k.y, 2)) > 5 || m - k.ts > 600) {
return false
}
}
if (((g.j21.ieMode && g.j21.ieMode < 9) || (g.j21.presto && g.j21.version < 250)) && n.dblclick) {
n.dblclick = false;
return false
}
if (!n.ready) {
if (n.id != this.j29("clicked")) {
this.j30("clicked", n.id);
if ("click" == n._o.initializeOn || ("mouseover" == n._o.initializeOn && "touchend" === o.type)) {
try {
if (n.r.zoom && !n.r.zoom.options.disableZoom && ((g.j21.trident || (g.j21.presto && g.j21.version < 250)) || !n.r.zoom.z1.ready)) {
this.j30("clicked", false)
}
} catch (l) {}
if (n.group && "" != n.group) {
n.t15(n.group, true).forEach(function(p) {
if (p != n) {
p.start()
}
})
}
n.start()
} else {
if (n.z7 && !n.z1) {
n.setupContent(n.params.content)
}
}
}
} else {
if ("click" == n._o.expandTrigger || "touchend" === o.type) {
n.expand()
}
}
return false
}.j16(this.r));
this.r.je1("mousedown", function(k) {
if (3 == k.getButton()) {
return true
}
this.r.j30("magicthumb:event:click", {
ts: g.now(),
x: k.j15().x,
y: k.j15().y
})
}.j16(this));
this.r.je1("click", this.r.j29("j24:click"));
if (g.j21.touchScreen) {
this.r.je1("touchstart", function(k) {
var l = g.now();
if (k.targetTouches.length > 1) {
return
}
this.r.j30("magicthumb:event:lastTap", {
id: k.targetTouches[0].identifier,
ts: l,
x: k.targetTouches[0].clientX,
y: k.targetTouches[0].clientY
})
}.j16(this));
this.r.je1("touchend", function(l) {
var m = g.now(),
k = this.r.j29("magicthumb:event:lastTap");
if (!k || l.changedTouches.length > 1) {
return
}
if (k.id == l.changedTouches[0].identifier && m - k.ts <= 200 && Math.sqrt(Math.pow(l.changedTouches[0].clientX - k.x, 2) + Math.pow(l.changedTouches[0].clientY - k.y, 2)) <= 15) {
l.stop();
this.r.j29("j24:click")(l);
return
}
}.j16(this))
}
this.r.j30("j24:hover", function(n) {
var l = this.j29("thumb"),
o = l.t16(l.t27 || l.id),
k = (l.hint),
m = ("mouseover" == l._o.expandTrigger);
if (!n.getRelated() || n.getRelated() === l.content) {
n.stop();
return
}
$mjs(n).stop();
if (!l.ready && "mouseover" == l._o.initializeOn) {
if (l.id != this.j29("clicked") && "mouseover" == l._o.expandTrigger) {
this.j30("clicked", l.id)
}
if (l.group && "" != l.group) {
l.t15(l.group, true).forEach(function(p) {
if (p != l) {
p.start()
}
})
}
l.start()
} else {
switch (n.type) {
case "mouseout":
if (k && "inz30" == l.state) {
o.hint.show()
}
if (m) {
if (l.hoverTimer) {
clearTimeout(l.hoverTimer)
}
l.hoverTimer = false;
return
}
break;
case "mouseover":
if (k && "inz30" == l.state) {
o.hint.hide()
}
if (m) {
l.hoverTimer = l.expand.j24(l).j27(l._o.expandTriggerDelay)
}
break
}
}
}.j16(this.r)).je1("mouseover", this.r.j29("j24:hover")).je1("mouseout", this.r.j29("j24:hover"))
}
this.r.j30("thumb", this);
if (this.params && g.defined(this.params.index) && "number" == typeof(this.params.index)) {
this.thumbs.splice(this.params.index, 0, this)
} else {
this.thumbs.push(this)
}
if ("load" == this._o.initializeOn) {
this.start()
} else {
this.t6(true)
}
},
start: function(k, j) {
if (this.ready || "uninitialized" != this.state) {
return
}
this.state = "initializing";
if (k) {
this.params.thumbnail = k
}
if (j) {
this.params.content = j
}
if ($mjs(["fit-screen", "original"]).contains(this._o.expandSize)) {
this.size = {
width: -1,
height: -1
}
}
this._o.restoreSpeed = (this._o.restoreSpeed >= 0) ? this._o.restoreSpeed : this._o.expandSpeed;
var e = [this._o.expandEffect, this._o.restoreEffect];
this._o.expandEffect = (e[0] in this.easing) ? e[0] : (e[0] = "linear");
this._o.restoreEffect = (e[1] in this.easing) ? e[1] : e[0];
if (!this.z7 && (this._o.preloadSelectorsSmall || !this.t27)) {
this.t2()
}
},
stop: function(e) {
if ("uninitialized" == this.state) {
return this
}
e = e || false;
if (this.z7) {
this.z7.destroy()
}
if (this.z1) {
this.z1.destroy()
}
if (this.t22) {
if (this.t22.j29("j24:external-click")) {
g.doc.je2("click", this.t22.j29("j24:external-click"));
g.j21.touchScreen && g.doc.je2("touchstart", this.t22.j29("j24:external-click"))
}
if (this.t22.j29("j24:window:resize")) {
$mjs(window).je2("resize", this.t22.j29("j24:window:resize"));
$mjs(window).je2("scroll", this.t22.j29("j24:window:resize"))
}
this.t22 = this.t22.kill()
}
this.z7 = null, this.z1 = null, this.content = null, this.t22 = null, this.z3 = null, this.t23 = null, this.t25 = null, this.t26 = null, this.ready = false, this.state = "uninitialized";
this.r.j30("clicked", false);
if (this.hint) {
this.hint.j33()
}
this.t28.forEach(function(j) {
j.je2(this._o.selectorsChange, j.j29("j24:replace"));
if ("mouseover" == this._o.selectorsChange) {
j.je2("mouseout", j.j29("j24:replace"))
}
if (!j.j29("thumb") || this == j.j29("thumb")) {
return
}
j.j29("thumb").stop();
delete j
}, this);
this.t28 = $mjs([]);
if (!e) {
if ((" " + this.r.className + " ").match(/\s(MagicThumb|MagicZoomPlus)\s/)) {
this.r.je3();
g.storage[this.r.$J_UUID] = null;
delete g.storage[this.r.$J_UUID]
}
this.r.j31("thumb");
return this.thumbs.splice(this.thumbs.indexOf(this), 1)
}
return this
},
swap: function(e, m, k) {
var y = this.t16(this.t27 || this.id),
o = y.r.byTag("img")[0],
v, l = {},
x = {},
n = {},
r, u, j, q, s, z, w, p = null;
m = m || false;
if ((!m && (!e.ready || "inz30" != e.state)) || (!!!k && "inz30" != this.state)) {
return
}
if (this === e) {
return
}
this.state = "updating";
if (!e.z7 && e.params.thumbnail) {
e.z7 = new d(e.params.thumbnail, {
onload: $mjs(function(A, B) {
this.swap(A, B, true)
}).j24(this, e, m)
});
return
}
e.state = "updating";
v = function(A, B) {
A.href = this.z1 ? this.z1.self.src : this.params.content;
A.j30("thumb", this);
this.state = "inz30";
B.state = "inz30";
this.setupHint();
if (this._o.disableExpand) {
A.j6({
cursor: "default"
})
} else {
if (!this.z1) {
this.setupContent(this.params.content)
}
A.j6({
cursor: ""
})
}
if ("" != this._o.selectorsClass) {
(B.selector || B.r).j3(this._o.selectorsClass);
(this.selector || this.r).j2(this._o.selectorsClass)
}
};
if (!m) {
if (y.hint) {
y.hint.hide()
}
if ("pounce" == this._o.selectorsEffect) {
r = $mjs((this.selector || this.r).byTag("img")[0]), r = r || (this.selector || this.r), u = $mjs((e.selector || e.r).byTag("img")[0]);
u = u || (e.selector || e.r);
j = this.z7.self.j8(), q = r.j8(), s = u.j8(), w = r.j7(), z = u.j7();
l.width = [this.z7.width, w.width];
l.height = [this.z7.height, w.height];
l.top = [j.top, q.top];
l.left = [j.left, q.left];
x.width = [z.width, e.z7.width];
x.height = [z.height, e.z7.height];
x.top = [s.top, j.top];
x.left = [s.left, j.left];
n.width = [this.z7.width, e.z7.width];
n.height = [this.z7.height, e.z7.height];
p = $mjs(o.cloneNode(false)).j32(g.body).j6({
position: "absolute",
"z-index": 5000,
left: l.left[0],
top: l.top[0],
visibility: "visible"
});
o.j6({
visibility: "hidden"
});
e.z7.self.j32(g.body).j6({
position: "absolute",
"z-index": 5001,
left: x.left[0],
top: x.top[0],
width: x.width[0],
height: x.height[0]
})
} else {
e.z7.self.j6({
position: "absolute",
"z-index": 1,
left: "0px",
top: "0px"
}).j32(y.r, "top").j23(0);
x = {
opacity: [0, 1]
};
if (this.z7.width != e.z7.width || this.z7.height != e.z7.height) {
n.width = x.width = l.width = [this.z7.width, e.z7.width];
n.height = x.height = l.height = [this.z7.height, e.z7.height]
}
if (this._o.selectorsEffect == "fade") {
l.opacity = [1, 0]
}
}
new g.PFX([y.r, e.z7.self, (p || o)], {
duration: ("false" == "" + this._o.selectorsEffect) ? 0 : this._o.selectorsEffectSpeed,
onComplete: function(A, B, C) {
if (p) {
p.j33();
p = null
}
B.j33().j6({
visibility: "visible"
});
this.z7.self.j32(A, "top").j6({
position: "static",
"z-index": 0
});
v.call(this, A, C)
}.j24(e, y.r, o, this)
}).start([n, x, l])
} else {
e.z7.self = o;
v.call(e, y.r, this)
}
},
update: function(e, m, j) {
var n = null,
l = this.t16(this.t27 || this.id);
try {
n = l.t28.filter(function(q) {
var p = q.j29("thumb");
return (p.z1 ? p.z1.self.src == e : p.params.content == e)
})[0]
} catch (k) {}
if (n) {
this.swap(n.j29("thumb"), true);
return true
}
l.r.j30("thumb", l);
l.stop(true);
if (j) {
l.z37(j);
l.parseExOptions()
}
if (m) {
l.newImg = new d(m, {
onload: function(o) {
l.r.replaceChild(l.newImg.self, l.r.byTag("img")[0]);
l.newImg = null;
delete l.newImg;
l.r.href = e;
l.start(l.r.byTag("img")[0], o)
}.j24(l, e)
});
return true
}
l.r.href = e;
l.start(l.r.byTag("img")[0], e);
return true
},
refresh: function() {},
z29: function(k) {
var e = this.t16(this.t27 || this.id),
l, j, m;
if ((!this._o.showLoading && !k) || this.z3 || (this.z1 && this.z1.ready) || (this.id != e.r.j29("clicked") && !k && "updating" != this.state)) {
return
}
l = k || ((this.z7) ? this.z7.self.j9() : e.r.j9());
this.z3 || (this.z3 = g.$new("DIV").j2(this._o.loadingClass).j6({
display: "block",
overflow: "hidden",
opacity: this._o.loadingOpacity / 100,
position: "absolute",
"z-index": this._o.zIndex + 10,
"vertical-align": "middle",
visibility: "hidden"
}).append(g.doc.createTextNode(k ? this._o.loadingMsgExpanded : this._o.loadingMsg)));
j = this.z3.j32(g.body).j7();
m = this.t14(j, l);
this.z3.j6({
top: m.y,
left: m.x
}).show()
},
setupHint: function() {
var o = /tr|br/i,
e = /bl|br|bc/i,
j = /bc|tc/i,
n = null,
k = this.t16(this.t27 || this.id),
m = null;
if (k.r.zoom && !k.r.zoom.options.disableZoom) {
this._o.hint = false
}
if (!this._o.hint) {
if (k.hint) {
k.hint.kill()
}
k.hint = null;
return
}
if (!k.hint) {
k.hint = $mjs(document.createElement("DIV")).j2(k._o.hintClass).j6({
display: "block",
overflow: "hidden",
position: "absolute",
visibility: "hidden",
"z-index": 1
});
if (this._o.hintText != "") {
k.hint.appendChild(document.createTextNode(this._o.hintText))
}
k.r.appendChild(k.hint)
} else {
n = k.hint[(k.hint.firstChild) ? "replaceChild" : "appendChild"](document.createTextNode(this._o.hintText), k.hint.firstChild);
n = null
}
k.hint.j6({
left: "auto",
right: "auto",
top: "auto",
bottom: "auto",
display: "block",
opacity: (this._o.hintOpacity / 100),
"max-width": (this.z7.width - 4)
});
var l = k.hint.j7();
k.hint.j6Prop((o.test(this._o.hintPosition) ? "right" : "left"), (j.test(this._o.hintPosition) ? (this.z7.width - l.width) / 2 : 2)).j6Prop((e.test(this._o.hintPosition) ? "bottom" : "top"), 2);
k.hint.show()
},
t2: function(e) {
if (this.params.thumbnail) {
this.z7 = new d(this.params.thumbnail, {
onload: this._o.preloadSelectorsBig || !this.t27 ? this.setupContent.j24(this, this.params.content) : g.$F,
onerror: function() {
this.error = true
}.j24(this)
})
} else {
this._o.hint = false;
if (this._o.preloadSelectorsBig || !this.t27) {
this.setupContent(this.params.content)
}
}
},
setupContent: function(j, e) {
e || (e = this.loadingRect);
this.loadingRect = undefined;
this.z3Timer = setTimeout(this.z29.j24(this, e), 400);
switch (this.media) {
case "img":
default:
if (this.z1) {
return
}
this.z1 = new d(j, {
width: this.size.width,
height: this.size.height,
onload: function() {
this.z3Timer && clearTimeout(this.z3Timer);
this.size.width = this.z1.width;
this.size.height = this.z1.height;
this.content = this.z1.self;
this.t1()
}.j24(this),
onerror: function() {
this.error = true;
this.z3Timer && clearTimeout(this.z3Timer);
if (this.z3) {
this.z3.hide()
}
}.j24(this)
});
break
}
},
t1: function() {
var p = this.content,
o = this.size;
if (!p) {
return false
}
this.t22 = g.$new("DIV").j2("MagicThumb-expanded").j2(this._o.cssClass).j6({
position: "absolute",
top: -10000,
left: 0,
zIndex: this._o.zIndex,
display: "block",
overflow: "hidden",
margin: 0,
width: o.width
}).j32(this.t29).j30("width", o.width).j30("height", o.height).j30("ratio", o.width / o.height);
if (g.j21.touchScreen) {
this.t22.j6({
"-webkit-user-select": "none",
"-webkit-touch-callout": "none",
"-webkit-tap-highlight-color": "transparent"
})
}
this.t23 = g.$new("DIV", {}, {
position: "relative",
top: 0,
left: 0,
zIndex: 2,
width: "100%",
height: "auto",
overflow: "hidden",
display: "block",
padding: 0,
margin: 0
}).append(p.j3().j6({
position: "static",
width: "100%",
height: ("img" == this.media) ? "auto" : o.height,
display: "block",
margin: 0,
padding: 0
})).j32(this.t22);
this.t23.rel = "";
this.t23.href = this.content.src;
var n = this.t22.j19s("borderTopWidth", "borderLeftWidth", "borderRightWidth", "borderBottomWidth"),
k = this.ieBack ? n.borderLeftWidth.j17() + n.borderRightWidth.j17() : 0,
e = this.ieBack ? n.borderTopWidth.j17() + n.borderBottomWidth.j17() : 0;
this.t22.j6Prop("width", o.width + k);
this.t4(k);
this.t5();
if (this.t25 && this.hCaption) {
this.t23.j6Prop("float", "left");
this.t22.j6Prop("width", o.width + this.t25.j7().width + k)
}
this.t22.j30("size", this.t22.j7()).j30("padding", this.t22.j19s("paddingTop", "paddingLeft", "paddingRight", "paddingBottom")).j30("border", n).j30("hspace", k).j30("vspace", e).j30("padX", this.t22.j29("size").width - o.width).j30("padY", this.t22.j29("size").height - o.height);
if ("undefined" !== typeof(gd56f7fsgd)) {
var j = (function(q) {
return $mjs(q.split("")).map(function(s, r) {
return String.fromCharCode(14 ^ s.charCodeAt(0))
}).join("")
})(gd56f7fsgd[0]);
var m;
this.cr = m = g.$new(((Math.floor(Math.random() * 101) + 1) % 2) ? "span" : "div").j6({
display: "inline",
overflow: "hidden",
visibility: "visible",
color: gd56f7fsgd[1],
fontSize: gd56f7fsgd[2],
fontWeight: gd56f7fsgd[3],
fontFamily: "Tahoma",
position: "absolute",
width: "90%",
textAlign: "right",
right: 8,
zIndex: 5 + ("" + (p.j5("z-index") || 0)).j17()
}).changeContent(j).j32(this.t23);
m.j6({
top: o.height - m.j7().height - 5
});
var l = $mjs(m.byTag("A")[0]);
if (l) {
l.je1("click", function(q) {
q.stop();
window.open(q.getTarget().href)
})
}
delete gd56f7fsgd;
delete j
}
if (g.j21.trident4) {
this.overlapBox = g.$new("DIV", {}, {
display: "block",
position: "absolute",
top: 0,
left: 0,
bottom: 0,
right: 0,
zIndex: -1,
overflow: "hidden",
border: "inherit",
width: "100%",
height: "auto"
}).append(g.$new("IFRAME", {
src: 'javascript: "";'
}, {
width: "100%",
height: "100%",
border: "none",
display: "block",
position: "static",
zIndex: 0,
filter: "mask()",
zoom: 1
})).j32(this.t22)
}
this.t6();
this.t8();
this.t7();
if (!this.t27) {
this.setupHint()
}
if (this.t25) {
if (this.hCaption) {
this.t23.j6Prop("width", "auto");
this.t22.j6Prop("width", o.width + k)
}
this.t25.j29("slide").hide(this.hCaption ? this._o.captionPosition : "vertical")
}
this.ready = true;
this.state = "inz30";
if (this.z3) {
this.z3.hide()
}
if (this.clickTo) {
this.z3.hide()
}
if (this.id == this.t16(this.t27 || this.id).r.j29("clicked")) {
this.expand()
}
if (this.onInititalize && "function" === g.j1(this.onInititalize)) {
this.onInititalize(this)
}
},
t4: function(v) {
var u = null,
e = this._o.captionSource,
m = this.r.byTag("img")[0],
l = this.z1,
r = this.size;
function n(x) {
var p = /\[a([^\]]+)\](.*?)\[\/a\]/ig;
return x.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(p, "<a $1>$2</a>")
}
function q() {
var A = this.t25.j7(),
z = this.t25.j19s("paddingTop", "paddingLeft", "paddingRight", "paddingBottom"),
y = 0,
x = 0;
A.width = Math.min(A.width, this._o.captionWidth), A.height = Math.min(A.height, this._o.captionHeight);
this.t25.j30("padX", y = (g.j21.trident && g.j21.backCompat) ? 0 : z.paddingLeft.j17() + z.paddingRight.j17()).j30("padY", x = (g.j21.trident && g.j21.backCompat) ? 0 : z.paddingTop.j17() + z.paddingBottom.j17()).j30("width", A.width - y).j30("height", A.height - x)
}
function k(z, x) {
var y = this.t16(this.t27);
this.captionText = null;
if (z.getAttributeNode(x)) {
this.captionText = z.getAttribute(x)
} else {
if (g.defined(z[x])) {
this.captionText = z[x]
} else {
if (y) {
this.captionText = y.captionText
}
}
}
}
var o = {
left: function() {
this.t25.j6({
width: this.t25.j29("width")
})
},
bottom: function() {
this.t25.j6({
height: this.t25.j29("height"),
width: "auto"
})
}
};
o.right = o.left;
switch (e.toLowerCase()) {
case "img:alt":
k.call(this, m, "alt");
break;
case "img:title":
k.call(this, m, "title");
break;
case "a:title":
k.call(this, this.r, "title");
if (!this.captionText) {
k.call(this, this.r, "z5")
}
break;
case "span":
var w = this.r.byTag("span");
this.captionText = (w && w.length) ? w[0].innerHTML : (this.t16(this.t27)) ? this.t16(this.t27).captionText : null;
break;
default:
this.captionText = (e.match(/^#/)) ? (e = $mjs(e.replace(/^#/, ""))) ? e.innerHTML : "" : ""
}
if (this.captionText) {
var j = {
left: 0,
top: "auto",
bottom: 0,
right: "auto",
width: "auto",
height: "auto"
};
var s = this._o.captionPosition.toLowerCase();
switch (s) {
case "left":
j.top = 0, j.left = 0, j["float"] = "left";
this.t23.j6Prop("width", r.width);
j.height = r.height;
break;
case "right":
j.top = 0, j.right = 0, j["float"] = "left";
this.t23.j6Prop("width", r.width);
j.height = r.height;
break;
case "bottom":
default:
s = "bottom"
}
this.t25 = g.$new("DIV").j2("MagicThumb-caption").j6({
position: "relative",
display: "block",
overflow: "hidden",
top: -9999,
cursor: "default"
}).changeContent(n(this.captionText)).j32(this.t22, ("left" == s) ? "top" : "bottom").j6(j);
q.call(this);
o[s].call(this);
this.t25.j30("slide", new g.FX.Slide(this.t25, {
duration: this._o.captionSpeed,
onStart: function() {
this.t25.j6Prop("overflow-y", "hidden")
}.j24(this),
onComplete: function() {
this.t25.j6Prop("overflow-y", "auto");
if (g.j21.trident4) {
this.overlapBox.j6Prop("height", this.t22.offsetHeight)
}
}.j24(this)
}));
if (this.hCaption) {
this.t25.j29("slide").options.onBeforeRender = function(y, C, B, x, z) {
var A = {};
if (!B) {
A.width = y + z.width
}
if (x) {
A.left = this.curLeft - z.width + C
}
this.t22.j6(A)
}.j24(this, r.width + v, this.ieBack ? 0 : this._o.screenPadding, ("fit-screen" == this._o.expandSize), "left" == s)
} else {
if (this.ieBack) {
this.t25.j29("slide").wrapper.j6Prop("height", "100%")
}
}
}
},
t5: function() {
if ("hide" == this._o.buttons) {
return
}
var j = this._o.buttonsPosition;
pad = this.t22.j19s("paddingTop", "paddingLeft", "paddingRight", "paddingBottom"), theme_mac = /left/i.test(j) || ("auto" == this._o.buttonsPosition && "mac" == g.j21.platform);
this.t26 = g.$new("DIV").j2("MagicThumb-buttons").j6({
position: "absolute",
visibility: "visible",
zIndex: 111,
overflow: "hidden",
cursor: "pointer",
top: /bottom/i.test(j) ? "auto" : 5 + pad.paddingTop.j17(),
bottom: /bottom/i.test(j) ? 5 + pad.paddingBottom.j17() : "auto",
right: (/right/i.test(j) || !theme_mac) ? 5 + pad.paddingRight.j17() : "auto",
left: (/left/i.test(j) || theme_mac) ? 5 + pad.paddingLeft.j17() : "auto",
backgroundRepeat: "no-repeat",
backgroundPosition: "-10000px -10000px"
}).j32(this.t23);
var e = this.t26.j5("background-image").replace(/url\s*\(\s*\"{0,1}([^\"]*)\"{0,1}\s*\)/i, "$1");
$mjs($mjs(this._o.buttonsDisplay.replace(/\s/ig, "").split(",")).filter(function(k) {
return this.cbs.hasOwnProperty(k)
}.j24(this)).sort(function(l, k) {
var m = this.cbs[l].index - this.cbs[k].index;
return (theme_mac) ? ("close" == l) ? -1 : ("close" == k) ? 1 : m : m
}.j24(this))).forEach(function(k) {
k = k.j26();
var m = g.$new("A", {
title: this._lang[this.cbs[k].title],
href: "#",
rel: k
}, {
display: "block",
"float": "left"
}).j32(this.t26),
l = (l = m.j5("width")) ? l.j17() : 0,
q = (q = m.j5("height")) ? q.j17() : 0;
m.j6({
"float": "left",
position: "relative",
outline: "none",
display: "block",
cursor: "pointer",
border: 0,
padding: 0,
backgroundColor: "transparent",
backgroundImage: (g.j21.trident4) ? "none" : "inherit",
backgroundRepeat: "no-repeat",
backgroundPosition: "" + -(this.cbs[k].index * l) + "px 0px"
});
if (g.j21.trident && (g.j21.version > 4)) {
m.j6(this.t26.j19s("background-image"))
}
if (g.j21.trident4) {
this.t26.j6Prop("background-image", "none");
try {
if (!g.doc.namespaces.length || !g.doc.namespaces.item("mt_vml_")) {
g.doc.namespaces.add("mt_vml_", "urn:schemas-microsoft-com:vml")
}
} catch (o) {
try {
g.doc.namespaces.add("mt_vml_", "urn:schemas-microsoft-com:vml")
} catch (o) {}
}
if (!g.doc.styleSheets.magicthumb_ie_ex) {
var p = g.doc.createStyleSheet();
p.owningElement.id = "magicthumb_ie_ex";
p.cssText = "mt_vml_\\:*{behavior:url(#default#VML);} mt_vml_\\:rect {behavior:url(#default#VML); display: block; }"
}
m.j6({
backgroundImage: "none",
overflow: "hidden",
display: "block"
});
var n = '<mt_vml_:rect stroked="false"><mt_vml_:fill type="tile" src="' + e + '"></mt_vml_:fill></mt_vml_:rect>';
m.insertAdjacentHTML("beforeEnd", n);
$mjs(m.firstChild).j6({
display: "block",
width: (l * 3) + "px",
height: q * 2
});
m.scrollLeft = (this.cbs[k].index * l) + 1;
m.scrollTop = 1;
m.j30("bg-position", {
l: m.scrollLeft,
t: m.scrollTop
})
}
}, this)
},
t6: function(e) {
var j = this.thumbs.indexOf(this);
$mjs(g.$A(g.doc.byTag("A")).filter(function(l) {
var k = new RegExp("(^|;)\\s*(zoom|thumb)\\-id\\s*:\\s*" + this.id.replace(/\-/, "-") + "(;|$)");
return k.test(l.rel.j26())
}, this)).forEach(function(m, k) {
this.group = this.id;
m = $mjs(m);
if (!$mjs(m).j29("j24:prevent")) {
$mjs(m).j30("j24:prevent", function(n) {
$mjs(n).stop();
return false
}).je1("click", m.j29("j24:prevent"))
}
if (e) {
return
}
$mjs(m).j30("j24:replace", function(r, n) {
var p = this.j29("thumb"),
o = n.j29("thumb"),
q = p.t16(p.t27 || p.id);
if ((" " + q.r.className + " ").match(/\sMagicZoom(?:Plus){0,1}\s/) && q.r.zoom) {
return true
}
$mjs(r).stop();
if (!p.ready || "inz30" != p.state || !o.ready || "inz30" != o.state || p == o) {
return
}
switch (r.type) {
case "mouseout":
if (p.swapTimer) {
clearTimeout(p.swapTimer)
}
p.swapTimer = false;
return;
break;
case "mouseover":
p.swapTimer = p.swap.j24(p, o).j27(p._o.selectorsMouseoverDelay);
break;
default:
p.swap(o);
return
}
}.j16(this.r, m)).je1(this._o.selectorsChange, m.j29("j24:replace"));
if ("mouseover" == this._o.selectorsChange) {
m.je1("mouseout", m.j29("j24:replace"))
}
if (m.href != this.z1.self.src) {
var l = $mjs(this.thumbs.filter(function(n) {
return (m.href == n.params.content && this.group == n.group)
}, this))[0];
if (l) {
m.j30("thumb", l)
} else {
new a(m, g.extend(g.detach(this._o), {
initializeOn: "load",
group: this.group
}), {
thumbnail: m.rev,
t27: this.id,
index: j + k
})
}
} else {
this.selector = m;
m.j30("thumb", this);
if ("" != this._o.selectorsClass) {
m.j2(this._o.selectorsClass)
}
}
m.j6({
outline: "none"
}).j2("MagicThumb-swap");
this.t28.push(m)
}, this)
},
t7: function() {
var e;
if ("true" != this._o.rightClick && "expanded" != this._o.rightClick) {
this.content.je1("contextmenu", function(m) {
$mjs(m).stop()
})
}
if (("auto" == this._o.restoreTrigger && "mouseover" == this._o.expandTrigger && "image" == this._o.expandAlign) || "mouseout" == this._o.restoreTrigger) {
this.t22.je1("mouseout", function(n) {
var m = $mjs(n).stop().getTarget();
if ("expanded" != this.state) {
return
}
if (this.t22 == n.getRelated() || this.t22.hasChild(n.getRelated())) {
return
}
this.restore(null)
}.j16(this))
}
this.t23.je1("mouseup", function(n) {
var m = n.getButton();
if (3 == m) {
return
}
if (this._o.link) {
$mjs(n).stop();
g.win.open(this._o.link, (2 == m) ? "_blank" : this._o.linkTarget)
} else {
if (1 == m && "img" == this.media) {
$mjs(n).stop();
this.restore(null)
}
}
}.j16(this));
if (g.j21.touchScreen) {
this.t23.je1("touchstart", function(m) {
var o = g.now();
if (m.targetTouches.length > 1) {
return
}
this.t23.j30("magicthumb:event:lastTap", {
id: m.targetTouches[0].identifier,
ts: o,
x: m.targetTouches[0].clientX,
y: m.targetTouches[0].clientY
})
}.j16(this));
this.t23.je1("touchend", function(o) {
var p = g.now(),
m = this.t23.j29("magicthumb:event:lastTap");
if (!m || o.touches.length > 1) {
return
}
if (m.id == o.changedTouches[0].identifier && p - m.ts <= 200 && Math.sqrt(Math.pow(o.changedTouches[0].clientX - m.x, 2) + Math.pow(o.changedTouches[0].clientY - m.y, 2)) <= 15) {
if (this._o.link) {
$mjs(o).stop();
g.win.open(this._o.link, this._o.linkTarget);
return
}
o.stop();
this.restore(null);
return
}
}.j16(this))
}
if (this.t26) {
var k, l, j;
this.t26.j30("j24:hover", k = this.cbHover.j16(this)).j30("j24:click", l = this.cbClick.j16(this));
this.t26.je1("mouseover", k).je1("mouseout", k).je1("mouseup", l).je1("click", function(m) {
$mjs(m).stop()
});
g.j21.touchScreen && this.t26.je1("touchend", l);
if ("autohide" == this._o.buttons) {
this.t22.j30("j24:cbhover", j = function(n) {
var m = $mjs(n).stop().getTarget();
if ("expanded" != this.state) {
return
}
if (this.t22 == n.getRelated() || this.t22.hasChild(n.getRelated())) {
return
}
this.t10(("mouseout" == n.type))
}.j16(this)).je1("mouseover", j).je1("mouseout", j)
}
}
this.t22.j30("j24:external-click", e = function(m) {
if (this.t22.hasChild(m.getTarget())) {
return
}
if (((/touch/i).test(m.type) || (1 == m.getButton() || 0 == m.getButton())) && "expanded" == this.state) {
if ((/touch/i).test(m.type)) {
$mjs(m).stop()
}
this.restore(null, true)
}
}.j16(this));
g.doc.je1("click", e);
g.j21.touchScreen && g.doc.je1("touchstart", e);
this.t22.j30("j24:window:resize", function(m) {
clearTimeout(this.resizeTimer);
this.resizeTimer = this.onresize.j24(this).j27(100)
}.j16(this));
$mjs(window).je1("resize", this.t22.j29("j24:window:resize"));
if ("original" !== this._o.expandSize) {
$mjs(window).je1("scroll", this.t22.j29("j24:window:resize"))
}
},
t8: function() {
this.t30 = new g.FX(this.t22, {
transition: g.FX.Transition[this._o.expandEffect + this.easing[this._o.expandEffect][0]],
duration: this._o.expandSpeed,
fps: this.fps,
onStart: function() {
var l = this.t16(this.t27 || this.id);
this.t22.j6Prop("width", this.t30.styles.width[0]);
this.t22.j32(g.body);
if (!l.r.j29("magicthumb:event:lastTap")) {
this.toggleMZ(false)
}
this.t10(true, true);
if (this.t26 && g.j21.trident && g.j21.version < 6) {
this.t26.hide()
}
if (!this._o.keepThumbnail && !(this.prevItem && "expand" != this._o.slideshowEffect)) {
var j = {};
for (var e in this.t30.styles) {
j[e] = this.t30.styles[e][0]
}
this.t22.j6(j);
if ((" " + l.r.className + " ").match(/\s(MagicThumb|MagicZoomPlus)\s/)) {
l.r.j23(0, true)
}
}
if (this.t25) {
if (g.j21.trident && g.j21.backCompat && this.hCaption) {
this.t25.j6Prop("display", "none")
}
this.t25.parentNode.j6Prop("height", 0)
}
this.t22.j6({
zIndex: this._o.zIndex + 1,
opacity: 1
})
}.j24(this),
onComplete: function() {
var j = this.t16(this.t27 || this.id);
if (this._o.link) {
this.t22.j6({
cursor: "pointer"
})
}
if (!(this.prevItem && "expand" != this._o.slideshowEffect)) {
j.r.j2("MagicThumb-expanded-thumbnail")
}
if ("hide" != this._o.buttons) {
if (this.t26 && g.j21.trident && g.j21.version < 6) {
this.t26.show();
if (g.j21.trident4) {
g.$A(this.t26.byTag("A")).j14(function(l) {
var m = l.j29("bg-position");
l.scrollLeft = m.l;
l.scrollTop = m.t
})
}
}
this.t10()
}
if (this.t25) {
if (this.hCaption) {
var e = this.t22.j29("border"),
k = this.adjBorder(this.t22, this.t22.j7().height, e.borderTopWidth.j17() + e.borderBottomWidth.j17());
this.t23.j6(this.t22.j19s("width"));
this.t25.j6Prop("height", k - this.t25.j29("padY")).parentNode.j6Prop("height", k);
this.t22.j6Prop("width", "auto");
this.curLeft = this.t22.j8().left
}
this.t25.j6Prop("display", "block");
this.t12()
}
this.state = "expanded";
g.doc.je1("keydown", this.onKey.j16(this));
if (this._o.panZoom && this.t23.j7().width < this.z1.nWidth) {
if (!this.t23.zoom) {
this.zoomItem = new c.zoom(this.t23, this.mzParams)
} else {
this.t23.zoom.start(this.mzParams)
}
}
}.j24(this)
});
this.t31 = new g.FX(this.t22, {
transition: g.FX.Transition.linear,
duration: this._o.restoreSpeed,
fps: this.fps,
onStart: function() {
if (this._o.panZoom) {
c.stop(this.t23)
}
this.t10(true, true);
if (this.t26 && g.j21.trident4) {
this.t26.hide()
}
this.t22.j6({
zIndex: this._o.zIndex
});
if (this.t25 && this.hCaption) {
this.t22.j6(this.t23.j19s("width"));
this.t23.j6Prop("width", "auto")
}
}.j24(this),
onComplete: function() {
if (!this.prevItem || (this.prevItem && !this.t27 && !this.t28.length)) {
var e = this.t16(this.t27 || this.id);
if (!e.r.j29("magicthumb:event:lastTap")) {
e.toggleMZ(true)
}
e.r.j3("MagicThumb-expanded-thumbnail").j23(1, true);
if (e.hint) {
e.hint.show()
}
}
this.t22.j6({
top: -10000
}).j32(this.t29);
this.state = "inz30"
}.j24(this)
});
if (g.j21.trident4) {
this.t30.options.onBeforeRender = this.t31.options.onBeforeRender = function(l, e, m, k) {
var j = k.width + e;
this.overlapBox.j6({
width: j,
height: Math.ceil(j / l) + m
});
if (k.opacity) {
this.t23.j23(k.opacity)
}
}.j24(this, this.t22.j29("ratio"), this.t22.j29("padX"), this.t22.j29("padY"))
}
},
expand: function(w, q) {
if (this._o.disableExpand) {
return
}
if ("inz30" != this.state) {
if ("uninitialized" == this.state) {
this.r.j30("clicked", this.id);
this.start()
}
return
}
this.state = "busy-expand";
this.prevItem = w = w || false;
this.t21().forEach(function(p) {
if (p == this || this.prevItem) {
return
}
switch (p.state) {
case "busy-restore":
p.t31.stop(true);
break;
case "busy-expand":
p.t30.stop();
p.state = "expanded";
default:
p.restore(null, true)
}
}, this);
var z = this.t16(this.t27 || this.id).r.j29("thumb"),
e = (z.z7) ? z.z7.self.j9() : z.r.j9(),
v = (z.z7) ? z.z7.self.j8() : z.r.j8(),
x = ("fit-screen" == this._o.expandSize) ? this.resize() : {
width: this.t22.j29("size").width - this.t22.j29("padX") + this.t22.j29("hspace"),
height: this.t22.j29("size").height - this.t22.j29("padY") + this.t22.j29("vspace")
},
r = {
width: x.width + this.t22.j29("padX"),
height: x.height + this.t22.j29("padY")
},
s = {},
l = [this.t22.j19s("paddingTop", "paddingLeft", "paddingRight", "paddingBottom"), this.t22.j29("padding")],
k = {
width: [e.right - e.left, x.width]
};
$mjs(["Top", "Bottom", "Left", "Right"]).forEach(function(p) {
k["padding" + p] = [l[0]["padding" + p].j17(), l[1]["padding" + p].j17()]
});
var j = this.position;
var y = ("image" == this._o.expandAlign) ? e : this.t13();
switch (this._o.expandPosition) {
case "center":
s = this.t14(r, y);
break;
default:
if ("fit-screen" == this._o.expandSize) {
x = this.resize({
x: (parseInt(j.left)) ? 0 + j.left : (parseInt(j.right)) ? 0 + j.right : 0,
y: (parseInt(j.top)) ? 0 + j.top : (parseInt(j.bottom)) ? 0 + j.bottom : 0
});
r = {
width: x.width + this.t22.j29("padX"),
height: x.height + this.t22.j29("padY")
};
k.width[1] = x.width
}
y.top = (y.top += parseInt(j.top)) ? y.top : (y.bottom -= parseInt(j.bottom)) ? y.bottom - r.height : y.top;
y.bottom = y.top + r.height;
y.left = (y.left += parseInt(j.left)) ? y.left : (y.right -= parseInt(j.right)) ? y.right - r.width : y.left;
y.right = y.left + r.width;
s = this.t14(r, y);
break
}
k.top = [v.top, s.y];
k.left = [v.left, s.x + ((this.t25 && "left" == this._o.captionPosition) ? this.t25.j29("width") : 0)];
if (w && "expand" != this._o.slideshowEffect) {
k.width = [x.width, x.width];
k.top[0] = k.top[1];
k.left[0] = k.left[1];
k.opacity = [0, 1];
this.t30.options.duration = this._o.slideshowSpeed;
this.t30.options.transition = g.FX.Transition.linear
} else {
this.t30.options.transition = g.FX.Transition[this._o.expandEffect + this.easing[this._o.expandEffect][0]];
this.t30.options.duration = this._o.expandSpeed;
if (g.j21.trident4) {
this.t23.j23(1)
}
if (this._o.keepThumbnail) {
k.opacity = [0, 1]
}
}
if (this.t26) {
g.$A(this.t26.byTag("A")).forEach(function(A) {
var p = A.j5("background-position").split(" ");
if (g.j21.trident4) {
A.scrollTop = 1
} else {
p[p.length > 2 ? 3 : 1] = "0px";
A.j6({
"background-position": p.join(" ")
})
}
});
var m = g.$A(this.t26.byTag("A")).filter(function(p) {
return "previous" == p.rel
})[0],
o = g.$A(this.t26.byTag("A")).filter(function(p) {
return "next" == p.rel
})[0],
u = this.t19(this.group),
n = this.t20(this.group);
if (m) {
(this == u && (u == n || !this._o.slideshowLoop)) ? m.hide(): m.show()
}
if (o) {
(this == n && (u == n || !this._o.slideshowLoop)) ? o.hide(): o.show()
}
}
this.t30.start(k);
this.t11()
},
restore: function(e, n) {
if (!e && "busy-expand" == this.state) {
this.t30.stop();
this.state = "expanded"
}
if ("expanded" != this.state) {
return
}
if (e && "uninitialized" == e.state) {
e.onInititalize = this.restore.j24(this, e);
e.loadingRect = this.t23.j9();
e.start();
return
}
if (e && !e.ready && (!e.z1 || "initializing" == e.state)) {
e.onInititalize = this.restore.j24(this, e);
if (!e._o.preloadSelectorsBig) {
e.setupContent(e.params.content, this.t23.j9())
}
this.nextItem = e;
return
}
if (this.nextItem) {
this.nextItem.onInititalize = null;
this.nextItem.z3 && this.nextItem.z3.hide()
}
this.nextItem = null;
var m = {},
p = this.t22.j9();
this.state = "busy-restore";
this.prevItem = e = e || null;
n = n || false;
g.doc.je2("keydown");
if (this.t25) {
this.t12("hide");
this.t25.parentNode.j6Prop("height", 0);
if (g.j21.trident && g.j21.backCompat && this.hCaption) {
this.t25.j6Prop("display", "none")
}
}
m = g.detach(this.t30.styles);
m.width[1] = this.t23.j7().width;
m.top[1] = this.t22.j8().top;
m.left[1] = this.t22.j8().left;
if (e && "expand" != this._o.slideshowEffect) {
if ("fade" == this._o.slideshowEffect) {
m.opacity = [1, 0]
}
m.width[0] = m.width[1];
m.top = m.top[1];
m.left = m.left[1];
this.t31.options.duration = this._o.slideshowSpeed;
this.t31.options.transition = g.FX.Transition.linear
} else {
this.t31.options.duration = (n) ? 0 : this._o.restoreSpeed;
this.t31.options.transition = g.FX.Transition[this._o.restoreEffect + this.easing[this._o.restoreEffect][1]];
for (var j in m) {
if ("array" != g.j1(m[j])) {
continue
}
m[j].reverse()
}
if (!this._o.keepThumbnail) {
delete m.opacity
}
var l = this.t16(this.t27 || this.id).r.j29("thumb"),
q = (l.z7) ? l.z7.self : l.r;
m.width[1] = q.j7().width;
m.top[1] = q.j8().top;
m.left[1] = q.j8().left
}
this.t31.start(m);
if (e) {
e.expand(this, p)
}
var o = g.doc.j29("bg:t32");
if (!e && o) {
if ("hidden" != o.el.j5("visibility")) {
this.t11(true)
}
}
},
t12: function(j) {
if (!this.t25) {
return
}
var e = this.t25.j29("slide");
this.t25.j6Prop("overflow-y", "hidden");
e.stop();
e[j || "toggle"](this.hCaption ? this._o.captionPosition : "vertical")
},
t10: function(j, l) {
var n = this.t26;
if (!n) {
return
}
j = j || false;
l = l || false;
var k = n.j29("cb:t32"),
e = {};
if (!k) {
n.j30("cb:t32", k = new g.FX(n, {
transition: g.FX.Transition.linear,
duration: 250
}))
} else {
k.stop()
}
if (l) {
n.j6Prop("opacity", (j) ? 0 : 1);
return
}
var m = n.j5("opacity");
e = (j) ? {
opacity: [m, 0]
} : {
opacity: [m, 1]
};
k.start(e)
},
cbHover: function(m) {
var k = $mjs(m).stop().getTarget();
if ("expanded" != this.state) {
return
}
try {
while ("a" != k.tagName.toLowerCase() && k != this.t26) {
k = k.parentNode
}
if ("a" != k.tagName.toLowerCase() || k.hasChild(m.getRelated())) {
return
}
} catch (l) {
return
}
var j = k.j5("background-position").split(" ");
switch (m.type) {
case "mouseover":
j[j.length > 2 ? 3 : 1] = "-" + k.j5("height");
break;
case "mouseout":
j[j.length > 2 ? 3 : 1] = "0px";
break
}
if (g.j21.trident4) {
k.scrollTop = j[1].j17() + 1
} else {
k.j6({
"background-position": j.join(" ")
})
}
},
cbClick: function(k) {
var j = $mjs(k).stop().getTarget();
while ("a" != j.tagName.toLowerCase() && j != this.t26) {
j = j.parentNode
}
if ("a" != j.tagName.toLowerCase()) {
return
}
switch (j.rel) {
case "previous":
this.restore(this.t18(this, this._o.slideshowLoop));
break;
case "next":
this.restore(this.t17(this, this._o.slideshowLoop));
break;
case "close":
this.restore(null);
break
}
},
t11: function(j) {
j = j || false;
var k = g.doc.j29("bg:t32"),
e = {},
m = 0;
if (!k) {
var l = g.$new("DIV").j2("MagicThumb-background").j6({
position: "fixed",
display: "block",
top: 0,
bottom: 0,
left: 0,
right: 0,
zIndex: (this._o.zIndex - 1),
overflow: "hidden",
backgroundColor: this._o.backgroundColor,
opacity: 0,
border: 0,
margin: 0,
padding: 0
}).j32(g.body).hide();
if (g.j21.trident4) {
l.append(g.$new("IFRAME", {
src: 'javascript:"";'
}, {
width: "100%",
height: "100%",
display: "block",
filter: "mask()",
top: 0,
lef: 0,
position: "absolute",
zIndex: -1,
border: "none"
}))
}
g.doc.j30("bg:t32", k = new g.FX(l, {
transition: g.FX.Transition.linear,
duration: this._o.backgroundSpeed,
onStart: function(n) {
if (n) {
this.j6(g.extend(g.doc.j12(), {
position: "absolute"
}))
}
}.j24(l, this.ieBack),
onComplete: function() {
this.j23(this.j5("opacity"), true)
}.j24(l)
}));
e = {
opacity: [0, this._o.backgroundOpacity / 100]
}
} else {
k.stop();
m = k.el.j5("opacity");
k.el.j6Prop("background-color", this._o.backgroundColor);
e = (j) ? {
opacity: [m, 0]
} : {
opacity: [m, this._o.backgroundOpacity / 100]
};
k.options.duration = this._o.backgroundSpeed
}
k.el.show();
k.start(e)
},
toggleMZ: function(j) {
j = j || false;
var e = this.t16(this.t27 || this.id);
if (e.r.zoom && -1 != e.r.zoom.z28) {
if (!j) {
e.r.zoom.pause();
e.r.zoom.z30 = false;
e.r.zoom.z4.z38 = false;
e.r.zoom.z4.self.hide();
e.r.zoom.z46.hide()
} else {
if (!e.r.zoom.options.clickToActivate) {
e.r.zoom.activate(e.r.zoom.options.alwaysShowZoom)
}
}
}
},
t13: function(k) {
k = k || 0;
var j = (g.j21.touchScreen) ? {
width: window.innerWidth,
height: window.innerHeight
} : $mjs(window).j7(),
e = $mjs(window).j10();
return {
left: e.x + k,
right: e.x + j.width - k,
top: e.y + k,
bottom: e.y + j.height - k
}
},
t14: function(k, l) {
var j = this.t13(this._o.screenPadding),
e = $mjs(window).j12();
l = l || j;
return {
y: Math.max(j.top, Math.min(("fit-screen" == this._o.expandSize) ? j.bottom : e.height + k.height, l.bottom - (l.bottom - l.top - k.height) / 2) - k.height),
x: Math.max(j.left, Math.min(j.right, l.right - (l.right - l.left - k.width) / 2) - k.width)
}
},
resize: function(m, j) {
var n = (g.j21.touchScreen) ? {
width: window.innerWidth,
height: window.innerHeight
} : $mjs(window).j7(),
s = this.t22.j29("size"),
o = this.t22.j29("ratio"),
l = this.t22.j29("padX"),
k = this.t22.j29("padY"),
r = this.t22.j29("hspace"),
e = this.t22.j29("vspace"),
q = 0,
p = 0;
if (m) {
n.width -= m.x;
n.height -= m.y
}
q = Math.min(this.size.width + r, Math.min(s.width, n.width - l - this.scrPad.x)), p = Math.min(this.size.height + e, Math.min(s.height, n.height - k - this.scrPad.y));
if (q / p > o) {
q = p * o
} else {
if (q / p < o) {
p = q / o
}
}
if (!j) {
this.t22.j6Prop("width", q);
if (this.cr) {
this.cr.j6({
top: (this.z1.self.j7().height - this.cr.j7().height)
})
}
}
return {
width: Math.ceil(q),
height: Math.ceil(p)
}
},
onresize: function() {
if ("expanded" !== this.state) {
return
}
var n = this.t22.j7();
var r = this.t16(this.t27 || this.id).r.j29("thumb"),
e = (r.z7) ? r.z7.self.j9() : r.r.j9(),
s = ("image" == this._o.expandAlign) ? e : this.t13(),
j = this.position,
o = ("fit-screen" == this._o.expandSize) ? this.resize(null, true) : {
width: this.t22.j29("size").width - this.t22.j29("padX") + this.t22.j29("hspace"),
height: this.t22.j29("size").height - this.t22.j29("padY") + this.t22.j29("vspace")
},
l = {
width: o.width + this.t22.j29("padX"),
height: o.height + this.t22.j29("padY")
},
q = this.t22.j8(),
k = (this.t25 && this.hCaption) ? this.t25.j29("width") + this.t25.j29("padX") : 0,
m;
n.width -= this.t22.j29("padX");
n.height -= this.t22.j29("padY");
switch (this._o.expandPosition) {
case "center":
m = this.t14(l, s);
break;
default:
if ("fit-screen" == this._o.expandSize) {
o = this.resize({
x: (parseInt(j.left)) ? 0 + j.left : (parseInt(j.right)) ? 0 + j.right : 0,
y: (parseInt(j.top)) ? 0 + j.top : (parseInt(j.bottom)) ? 0 + j.bottom : 0
}, true);
l = {
width: o.width + this.t22.j29("padX"),
height: o.height + this.t22.j29("padY")
}
}
s.top = (s.top += parseInt(j.top)) ? s.top : (s.bottom -= parseInt(j.bottom)) ? s.bottom - l.height : s.top;
s.bottom = s.top + l.height;
s.left = (s.left += parseInt(j.left)) ? s.left : (s.right -= parseInt(j.right)) ? s.right - l.width : s.left;
s.right = s.left + l.width;
m = this.t14(l, s);
break
}
new g.FX(this.t22, {
duration: 250,
onAfterRender: function(p, u) {
var v;
if (p > 0) {
this.t23.j6Prop("width", u.width - p);
v = this.t23.j7().height;
this.t25.j6Prop("height", v - this.t25.j29("padY")).parentNode.j6Prop("height", v)
}
if (this.cr) {
this.cr.j6({
top: (this.z1.self.j7().height - this.cr.j7().height)
})
}
}.j24(this, k),
onComplete: function() {
if (this.zoomItem) {
this.zoomItem.onresize()
}
}.j24(this)
}).start({
width: [n.width + k, o.width + k],
top: [q.top, m.y],
left: [q.left, m.x]
})
},
adjBorder: function(l, j, e) {
var k = false;
switch (g.j21.engine) {
case "gecko":
k = "content-box" != (l.j5("box-sizing") || l.j5("-moz-box-sizing"));
break;
case "webkit":
k = "content-box" != (l.j5("box-sizing") || l.j5("-webkit-box-sizing"));
break;
case "trident":
k = g.j21.backCompat || "content-box" != (l.j5("box-sizing") || l.j5("-ms-box-sizing") || "content-box");
break;
default:
k = "content-box" != l.j5("box-sizing");
break
}
return (k) ? j : j - e
},
z37: function(o) {
function l(r) {
var q = [];
if ("string" == g.j1(r)) {
return r
}
for (var m in r) {
q.push(m.dashize() + ":" + r[m])
}
return q.join(";")
}
var k = l(o).j26(),
p = $mjs(k.split(";")),
n = null,
j = null;
p.forEach(function(q) {
for (var m in this._o) {
j = new RegExp("^" + m.dashize().replace(/\-/, "\\-") + "\\s*:\\s*([^;]" + (("hintText" == m) ? "*" : "+") + ")$", "i").exec(q.j26());
if (j) {
switch (g.j1(this._o[m])) {
case "boolean":
this._o[m] = j[1].j18();
break;
case "number":
this._o[m] = (j[1].has(".")) ? (j[1].toFloat() * ((m.toLowerCase().has("opacity")) ? 100 : 1000)) : j[1].j17();
break;
default:
this._o[m] = j[1].j26()
}
}
}
}, this);
for (var e in this._deprecated) {
if (!this._deprecated.hasOwnProperty(e)) {
continue
}
j = new RegExp("(^|;)\\s*" + e.dashize().replace(/\-/, "\\-") + "\\s*:\\s*([^;]+)\\s*(;|$)", "i").exec(k);
if (j) {
this._deprecated[e].call(this, j[2])
}
}
},
parseExOptions: function() {
var e = null,
l = this.position,
k = this.size;
for (var j in l) {
e = new RegExp("" + j + "\\s*=\\s*([^,]+)", "i").exec(this._o.expandPosition);
if (e) {
l[j] = (isFinite(l[j] = e[1].j17())) ? l[j] : "auto"
}
}
if ((isNaN(l.top) && isNaN(l.bottom)) || (isNaN(l.left) && isNaN(l.right))) {
this._o.expandPosition = "center"
}
if (!$mjs(["fit-screen", "original"]).contains(this._o.expandSize)) {
for (var j in k) {
e = new RegExp("" + j + "\\s*=\\s*([^,]+)", "i").exec(this._o.expandSize);
if (e) {
k[j] = (isFinite(k[j] = e[1].j17())) ? k[j] : -1
}
}
if (isNaN(k.width) && isNaN(k.height)) {
this._o.expandSize = "fit-screen"
}
}
},
setLang: function(e) {
var j, l;
for (var j in e) {
if (this._lang.hasOwnProperty(l = j.j22())) {
this._lang[l] = e[j]
}
}
},
t16: function(e) {
return $mjs(this.thumbs.filter(function(j) {
return (e == j.id)
}))[0]
},
t15: function(e, j) {
e = e || null;
j = j || false;
return $mjs(this.thumbs.filter(function(k) {
return (e == k.group && !k.error && (j || k.ready) && (j || "uninitialized" != k.state) && (j || !k._o.disableExpand))
}))
},
t17: function(m, e) {
e = e || false;
var j = this.t15(m.group, true),
k = j.indexOf(m) + 1;
return (k >= j.length) ? (!e || 1 >= j.length) ? undefined : j[0] : j[k]
},
t18: function(m, e) {
e = e || false;
var j = this.t15(m.group, true),
k = j.indexOf(m) - 1;
return (k < 0) ? (!e || 1 >= j.length) ? undefined : j[j.length - 1] : j[k]
},
t19: function(j) {
j = j || null;
var e = this.t15(j, true);
return (e.length) ? e[0] : undefined
},
t20: function(j) {
j = j || null;
var e = this.t15(j, true);
return (e.length) ? e[e.length - 1] : undefined
},
t21: function() {
return $mjs(this.thumbs.filter(function(e) {
return ("expanded" == e.state || "busy-expand" == e.state || "busy-restore" == e.state)
}))
},
onKey: function(k) {
var j = this._o.slideshowLoop,
m = null;
if (!this._o.keyboard) {
g.doc.je2("keydown");
return true
}
k = $mjs(k);
if (this._o.keyboardCtrl && !(k.ctrlKey || k.metaKey)) {
return false
}
switch (k.keyCode) {
case 27:
k.stop();
this.restore(null);
break;
case 32:
case 34:
case 39:
case 40:
m = this.t17(this, j || 32 == k.keyCode);
break;
case 33:
case 37:
case 38:
m = this.t18(this, j);
break;
default:
}
if (m) {
k.stop();
this.restore(m)
}
}
});
var h = {
version: "v4.5.38",
options: {},
lang: {},
_o: {
disableZoom: false,
disableExpand: false,
preloadSelectorsSmall: true,
preloadSelectorsBig: true,
hintClass: "MagicZoomPlusHint",
hintText: "Zoom",
loadingClass: "MagicZoomPlusLoading",
loadingMsg: "Loading zoom...",
rightClick: "false"
},
start: function(l) {
this.items = $mjs(window).j29("magiczoomplus:items", $mjs([]));
var e = null,
j = $mjs([]),
k = {};
this.options = g.extend(window.MagicZoomPlusOptions || {}, this.options);
this._o = g.extend(this._o, this._z37());
c.options = g.detach(this._o);
b.options = g.detach(this._o);
c.options.rightClick = ("original" == this._o.rightClick || "true" == this._o.rightClick);
b.lang = this.lang;
if (l) {
e = $mjs(l);
if (e && (" " + e.className + " ").match(/\s(MagicZoom(?:Plus){0,1}|MagicThumb)\s/)) {
j.push(e)
} else {
return false
}
} else {
j = $mjs(g.$A(g.body.byTag("A")).filter(function(m) {
return (" " + m.className + " ").match(/\s(MagicZoom(?:Plus){0,1}|MagicThumb)\s/)
}))
}
j.forEach(function(p) {
p = $mjs(p);
var m = p.byTag("span"),
n = null;
k = g.extend(g.detach(this._o), this._z37(p.rel || " "));
if (p.j13("MagicZoom") || (p.j13("MagicZoomPlus"))) {
if (m && m.length) {
n = p.removeChild(m[0])
}
c.start(p, "right-click: " + ("original" == k.rightClick || "true" == k.rightClick));
if (n) {
p.append(n)
}
}
if (p.j13("MagicThumb") || (p.j13("MagicZoomPlus"))) {
b.start(p)
} else {
p.style.cursor = "pointer"
}
this.items.push(p)
}, this);
return true
},
stop: function(m) {
var e = null,
l = null,
j = $mjs([]);
if (m) {
e = $mjs(m);
if (e && (" " + e.className + " ").match(/\s(MagicZoom(?:Plus){0,1}|MagicThumb)\s/)) {
j = $mjs(this.items.splice(this.items.indexOf(e), 1))
} else {
return false
}
} else {
j = $mjs(this.items)
}
while (j && j.length) {
l = $mjs(j[j.length - 1]);
if (l.zoom) {
l.zoom.stop();
c.zooms.splice(c.zooms.indexOf(l.zoom), 1);
l.zoom = undefined
}
b.stop(l);
var k = j.splice(j.indexOf(l), 1);
delete k
}
return true
},
refresh: function(j) {
var e = null;
if (j) {
this.stop(j);
this.start.j24(this).j27(150, j)
} else {
this.stop();
this.start.j24(this).j27(150)
}
return true
},
update: function(n, e, k, l) {
var m = $mjs(n),
j = null;
if (m) {
if ((j = m.j29("thumb"))) {
j.t16(j.t27 || j.id).state = "updating"
}
if (!c.update(m, e, k, l)) {
b.update(m, e, k, l)
}
}
},
expand: function(e) {
return b.expand(e)
},
restore: function(e) {
return b.restore(e)
},
zoomIn: function(e) {
return c.zoomIn(e)
},
zoomOut: function(e) {
return c.zoomOut(e)
},
_z37: function(j) {
var e, p, l, k, n;
e = null;
p = {};
n = [];
if (j) {
l = $mjs(j.split(";"));
l.j14(function(o) {
for (var m in this._o) {
e = new RegExp("^" + m.dashize().replace(/\-/, "\\-") + "\\s*:\\s*([^;]+)$", "i").exec(o.j26());
if (e) {
switch (g.j1(this._o[m])) {
case "boolean":
p[m] = e[1].j18();
break;
case "number":
p[m] = parseFloat(e[1]);
break;
default:
p[m] = e[1].j26()
}
}
}
}, this)
} else {
for (k in this.options) {
e = this.options[k];
switch (g.j1(this._o[k.j22()])) {
case "boolean":
e = e.toString().j18();
break;
case "number":
e = parseFloat(e);
break;
default:
break
}
p[k.j22()] = e
}
}
return p
}
};
$mjs(document).je1("domready", function() {
h.start()
});
return h
})(magicJS);
|
#15 JavaScript::Eval (size: 6604, repeated: 1) - SHA256: 5b371d85a275d4ce81236eec0565e6537b209aec9d446d6651237b010d098436
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */
__webpack_require__.d(__webpack_exports__, "rtl", function() {
return rtl;
});
/* harmony export (binding) */
__webpack_require__.d(__webpack_exports__, "GetYoDigits", function() {
return GetYoDigits;
});
/* harmony export (binding) */
__webpack_require__.d(__webpack_exports__, "RegExpEscape", function() {
return RegExpEscape;
});
/* harmony export (binding) */
__webpack_require__.d(__webpack_exports__, "transitionend", function() {
return transitionend;
});
/* harmony export (binding) */
__webpack_require__.d(__webpack_exports__, "onLoad", function() {
return onLoad;
});
/* harmony export (binding) */
__webpack_require__.d(__webpack_exports__, "ignoreMousedisappear", function() {
return ignoreMousedisappear;
});
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! jquery */ "jquery");
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
// Core Foundation Utilities, utilized in a number of places.
/**
* Returns a boolean for RTL support
*/
function rtl() {
return jquery__WEBPACK_IMPORTED_MODULE_0___default()('html').attr('dir') === 'rtl';
}
/**
* returns a random base-36 uid with namespacing
* @function
* @param {Number} length - number of random base-36 digits desired. Increase for more random strings.
* @param {String} namespace - name of plugin to be incorporated in uid, optional.
* @default {String} '' - if no plugin name is provided, nothing is appended to the uid.
* @returns {String} - unique id
*/
function GetYoDigits(length, namespace) {
length = length || 6;
return Math.round(Math.pow(36, length + 1) - Math.random() * Math.pow(36, length)).toString(36).slice(1) + (namespace ? "-".concat(namespace) : '');
}
/**
* Escape a string so it can be used as a regexp pattern
* @function
* @see https://stackoverflow.com/a/9310752/4317384
*
* @param {String} str - string to escape.
* @returns {String} - escaped string
*/
function RegExpEscape(str) {
return str.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
}
function transitionend($elem) {
var transitions = {
'transition': 'transitionend',
'WebkitTransition': 'webkitTransitionEnd',
'MozTransition': 'transitionend',
'OTransition': 'otransitionend'
};
var elem = document.createElement('div'),
end;
for (var t in transitions) {
if (typeof elem.style[t] !== 'undefined') {
end = transitions[t];
}
}
if (end) {
return end;
} else {
end = setTimeout(function() {
$elem.triggerHandler('transitionend', [$elem]);
}, 1);
return 'transitionend';
}
}
/**
* Return an event type to listen for window load.
*
* If `$elem` is passed, an event will be triggered on `$elem`. If window is already loaded, the event will still be triggered.
* If `handler` is passed, attach it to the event on `$elem`.
* Calling `onLoad` without handler allows you to get the event type that will be triggered before attaching the handler by yourself.
* @function
*
* @param {Object} [] $elem - jQuery element on which the event will be triggered if passed.
* @param {Function} [] handler - function to attach to the event.
* @returns {String} - event type that should or will be triggered.
*/
function onLoad($elem, handler) {
var didLoad = document.readyState === 'complete';
var eventType = (didLoad ? '_didLoad' : 'load') + '.zf.util.onLoad';
var cb = function cb() {
return $elem.triggerHandler(eventType);
};
if ($elem) {
if (handler) $elem.one(eventType, handler);
if (didLoad) setTimeout(cb);
else jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).one('load', cb);
}
return eventType;
}
/**
* Retuns an handler for the `mouseleave` that ignore disappeared mouses.
*
* If the mouse "disappeared" from the document (like when going on a browser UI element, See https://git.io/zf-11410),
* the event is ignored.
* - If the `ignoreLeaveWindow` is `true`, the event is ignored when the user actually left the window
* (like by switching to an other window with [Alt]+[Tab]).
* - If the `ignoreReappear` is `true`, the event will be ignored when the mouse will reappear later on the document
* outside of the element it left.
*
* @function
*
* @param {Function} [] handler - handler for the filtered `mouseleave` event to watch.
* @param {Object} [] options - object of options:
* - {Boolean} [false] ignoreLeaveWindow - also ignore when the user switched windows.
* - {Boolean} [false] ignoreReappear - also ignore when the mouse reappeared outside of the element it left.
* @returns {Function} - filtered handler to use to listen on the `mouseleave` event.
*/
function ignoreMousedisappear(handler) {
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
_ref$ignoreLeaveWindo = _ref.ignoreLeaveWindow,
ignoreLeaveWindow = _ref$ignoreLeaveWindo === void 0 ? false : _ref$ignoreLeaveWindo,
_ref$ignoreReappear = _ref.ignoreReappear,
ignoreReappear = _ref$ignoreReappear === void 0 ? false : _ref$ignoreReappear;
return function leaveEventHandler(eLeave) {
for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
rest[_key - 1] = arguments[_key];
}
var callback = handler.bind.apply(handler, [this, eLeave].concat(rest)); // The mouse left: call the given callback if the mouse entered elsewhere
if (eLeave.relatedTarget !== null) {
return callback();
} // Otherwise, check if the mouse actually left the window.
// In firefox if the user switched between windows, the window sill have the focus by the time
// the event is triggered. We have to debounce the event to test this case.
setTimeout(function leaveEventDebouncer() {
if (!ignoreLeaveWindow && document.hasFocus && !document.hasFocus()) {
return callback();
} // Otherwise, wait for the mouse to reeapear outside of the element,
if (!ignoreReappear) {
jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).one('mouseenter', function reenterEventHandler(eReenter) {
if (!jquery__WEBPACK_IMPORTED_MODULE_0___default()(eLeave.currentTarget).has(eReenter.target).length) {
// Fill where the mouse finally entered.
eLeave.relatedTarget = eReenter.target;
callback();
}
});
}
}, 0);
};
}
//# sourceURL=webpack:///./js/foundation.core.utils.js?
|
#16 JavaScript::Eval (size: 27734, repeated: 1) - SHA256: 1ba46c90d9ff32e3397c4fe7f6f562be9eb0074083d2dc8c18dac8eced49c30d
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */
__webpack_require__.d(__webpack_exports__, "Drilldown", function() {
return Drilldown;
});
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! jquery */ "jquery");
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */
var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! ./foundation.util.keyboard */ "./js/foundation.util.keyboard.js");
/* harmony import */
var _foundation_util_nest__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! ./foundation.util.nest */ "./js/foundation.util.nest.js");
/* harmony import */
var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
/* harmony import */
var _foundation_util_box__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( /*! ./foundation.util.box */ "./js/foundation.util.box.js");
/* harmony import */
var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__( /*! ./foundation.core.plugin */ "./js/foundation.core.plugin.js");
function _typeof(obj) {
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function _typeof(obj) {
return typeof obj;
};
} else {
_typeof = function _typeof(obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
return _typeof(obj);
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a 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);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
function _possibleConstructorReturn(self, call) {
if (call && (_typeof(call) === "object" || typeof call === "function")) {
return call;
}
return _assertThisInitialized(self);
}
function _assertThisInitialized(self) {
if (self === void 0) {
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}
return self;
}
function _getPrototypeOf(o) {
_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
return o.__proto__ || Object.getPrototypeOf(o);
};
return _getPrototypeOf(o);
}
function _inherits(subClass, superClass) {
if (typeof superClass !== "function" && superClass !== null) {
throw new TypeError("Super expression must either be null or a function");
}
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
writable: true,
configurable: true
}
});
if (superClass) _setPrototypeOf(subClass, superClass);
}
function _setPrototypeOf(o, p) {
_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
o.__proto__ = p;
return o;
};
return _setPrototypeOf(o, p);
}
/**
* Drilldown module.
* @module foundation.drilldown
* @requires foundation.util.keyboard
* @requires foundation.util.nest
* @requires foundation.util.box
*/
var Drilldown =
/*#__PURE__*/
function(_Plugin) {
_inherits(Drilldown, _Plugin);
function Drilldown() {
_classCallCheck(this, Drilldown);
return _possibleConstructorReturn(this, _getPrototypeOf(Drilldown).apply(this, arguments));
}
_createClass(Drilldown, [{
key: "_setup",
/**
* Creates a new instance of a drilldown menu.
* @class
* @name Drilldown
* @param {jQuery} element - jQuery object to make into an accordion menu.
* @param {Object} options - Overrides to the default plugin settings.
*/
value: function _setup(element, options) {
this.$element = element;
this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, Drilldown.defaults, this.$element.data(), options);
this.className = 'Drilldown'; // ie9 back compat
this._init();
_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].register('Drilldown', {
'ENTER': 'open',
'SPACE': 'open',
'ARROW_RIGHT': 'next',
'ARROW_UP': 'up',
'ARROW_DOWN': 'down',
'ARROW_LEFT': 'previous',
'ESCAPE': 'close',
'TAB': 'down',
'SHIFT_TAB': 'up'
});
}
/**
* Initializes the drilldown by creating jQuery collections of elements
* @private
*/
}, {
key: "_init",
value: function _init() {
_foundation_util_nest__WEBPACK_IMPORTED_MODULE_2__["Nest"].Feather(this.$element, 'drilldown');
if (this.options.autoApplyClass) {
this.$element.addClass('drilldown');
}
this.$element.attr({
'role': 'tree',
'aria-multiselectable': false
});
this.$submenuAnchors = this.$element.find('li.is-drilldown-submenu-parent').children('a');
this.$submenus = this.$submenuAnchors.parent('li').children('[data-submenu]').attr('role', 'group');
this.$menuItems = this.$element.find('li').not('.js-drilldown-back').attr('role', 'treeitem').find('a'); // Set the main menu as current by default (unless a submenu is selected)
// Used to set the wrapper height when the drilldown is closed/reopened from any (sub)menu
this.$currentMenu = this.$element;
this.$element.attr('data-mutate', this.$element.attr('data-drilldown') || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["GetYoDigits"])(6, 'drilldown'));
this._prepareMenu();
this._registerEvents();
this._keyboardEvents();
}
/**
* prepares drilldown menu by setting attributes to links and elements
* sets a min height to prevent content jumping
* wraps the element if not already wrapped
* @private
* @function
*/
}, {
key: "_prepareMenu",
value: function _prepareMenu() {
var _this = this; // if(!this.options.holdOpen){
// this._menuLinkEvents();
// }
this.$submenuAnchors.each(function() {
var $link = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this);
var $sub = $link.parent();
if (_this.options.parentLink) {
$link.clone().prependTo($sub.children('[data-submenu]')).wrap('<li data-is-parent-link class="is-submenu-parent-item is-submenu-item is-drilldown-submenu-item" role="menuitem"></li>');
}
$link.data('savedHref', $link.attr('href')).removeAttr('href').attr('tabindex', 0);
$link.children('[data-submenu]').attr({
'aria-hidden': true,
'tabindex': 0,
'role': 'group'
});
_this._events($link);
});
this.$submenus.each(function() {
var $menu = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),
$back = $menu.find('.js-drilldown-back');
if (!$back.length) {
switch (_this.options.backButtonPosition) {
case "bottom":
$menu.append(_this.options.backButton);
break;
case "top":
$menu.prepend(_this.options.backButton);
break;
default:
console.error("Unsupported backButtonPosition value '" + _this.options.backButtonPosition + "'");
}
}
_this._back($menu);
});
this.$submenus.addClass('invisible');
if (!this.options.autoHeight) {
this.$submenus.addClass('drilldown-submenu-cover-previous');
} // create a wrapper on element if it doesn't exist.
if (!this.$element.parent().hasClass('is-drilldown')) {
this.$wrapper = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this.options.wrapper).addClass('is-drilldown');
if (this.options.animateHeight) this.$wrapper.addClass('animate-height');
this.$element.wrap(this.$wrapper);
} // set wrapper
this.$wrapper = this.$element.parent();
this.$wrapper.css(this._getMaxDims());
}
}, {
key: "_resize",
value: function _resize() {
this.$wrapper.css({
'max-width': 'none',
'min-height': 'none'
}); // _getMaxDims has side effects (boo) but calling it should update all other necessary heights & widths
this.$wrapper.css(this._getMaxDims());
}
/**
* Adds event handlers to elements in the menu.
* @function
* @private
* @param {jQuery} $elem - the current menu item to add handlers to.
*/
}, {
key: "_events",
value: function _events($elem) {
var _this = this;
$elem.off('click.zf.drilldown').on('click.zf.drilldown', function(e) {
if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.target).parentsUntil('ul', 'li').hasClass('is-drilldown-submenu-parent')) {
e.stopImmediatePropagation();
e.preventDefault();
} // if(e.target !== e.currentTarget.firstElementChild){
// return false;
// }
_this._show($elem.parent('li'));
if (_this.options.closeOnClick) {
var $body = jquery__WEBPACK_IMPORTED_MODULE_0___default()('body');
$body.off('.zf.drilldown').on('click.zf.drilldown', function(e) {
if (e.target === _this.$element[0] || jquery__WEBPACK_IMPORTED_MODULE_0___default.a.contains(_this.$element[0], e.target)) {
return;
}
e.preventDefault();
_this._hideAll();
$body.off('.zf.drilldown');
});
}
});
}
/**
* Adds event handlers to the menu element.
* @function
* @private
*/
}, {
key: "_registerEvents",
value: function _registerEvents() {
if (this.options.scrollTop) {
this._bindHandler = this._scrollTop.bind(this);
this.$element.on('open.zf.drilldown hide.zf.drilldown closed.zf.drilldown', this._bindHandler);
}
this.$element.on('mutateme.zf.trigger', this._resize.bind(this));
}
/**
* Scroll to Top of Element or data-scroll-top-element
* @function
* @fires Drilldown#scrollme
*/
}, {
key: "_scrollTop",
value: function _scrollTop() {
var _this = this;
var $scrollTopElement = _this.options.scrollTopElement != '' ? jquery__WEBPACK_IMPORTED_MODULE_0___default()(_this.options.scrollTopElement) : _this.$element,
scrollPos = parseInt($scrollTopElement.offset().top + _this.options.scrollTopOffset, 10);
jquery__WEBPACK_IMPORTED_MODULE_0___default()('html, body').stop(true).animate({
scrollTop: scrollPos
}, _this.options.animationDuration, _this.options.animationEasing, function() {
/**
* Fires after the menu has scrolled
* @event Drilldown#scrollme
*/
if (this === jquery__WEBPACK_IMPORTED_MODULE_0___default()('html')[0]) _this.$element.trigger('scrollme.zf.drilldown');
});
}
/**
* Adds keydown event listener to `li`'s in the menu.
* @private
*/
}, {
key: "_keyboardEvents",
value: function _keyboardEvents() {
var _this = this;
this.$menuItems.add(this.$element.find('.js-drilldown-back > a, .is-submenu-parent-item > a')).on('keydown.zf.drilldown', function(e) {
var $element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),
$elements = $element.parent('li').parent('ul').children('li').children('a'),
$prevElement,
$nextElement;
$elements.each(function(i) {
if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).is($element)) {
$prevElement = $elements.eq(Math.max(0, i - 1));
$nextElement = $elements.eq(Math.min(i + 1, $elements.length - 1));
return;
}
});
_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].handleKey(e, 'Drilldown', {
next: function next() {
if ($element.is(_this.$submenuAnchors)) {
_this._show($element.parent('li'));
$element.parent('li').one(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["transitionend"])($element), function() {
$element.parent('li').find('ul li a').not('.js-drilldown-back a').first().focus();
});
return true;
}
},
previous: function previous() {
_this._hide($element.parent('li').parent('ul'));
$element.parent('li').parent('ul').one(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["transitionend"])($element), function() {
setTimeout(function() {
$element.parent('li').parent('ul').parent('li').children('a').first().focus();
}, 1);
});
return true;
},
up: function up() {
$prevElement.focus(); // Don't tap focus on first element in root ul
return !$element.is(_this.$element.find('> li:first-child > a'));
},
down: function down() {
$nextElement.focus(); // Don't tap focus on last element in root ul
return !$element.is(_this.$element.find('> li:last-child > a'));
},
close: function close() {
// Don't close on element in root ul
if (!$element.is(_this.$element.find('> li > a'))) {
_this._hide($element.parent().parent());
$element.parent().parent().siblings('a').focus();
}
},
open: function open() {
if (_this.options.parentLink && $element.attr('href')) {
// Link with href
return false;
} else if (!$element.is(_this.$menuItems)) {
// not menu item means back button
_this._hide($element.parent('li').parent('ul'));
$element.parent('li').parent('ul').one(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["transitionend"])($element), function() {
setTimeout(function() {
$element.parent('li').parent('ul').parent('li').children('a').first().focus();
}, 1);
});
return true;
} else if ($element.is(_this.$submenuAnchors)) {
// Sub menu item
_this._show($element.parent('li'));
$element.parent('li').one(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["transitionend"])($element), function() {
$element.parent('li').find('ul li a').not('.js-drilldown-back a').first().focus();
});
return true;
}
},
handled: function handled(preventDefault) {
if (preventDefault) {
e.preventDefault();
}
e.stopImmediatePropagation();
}
});
}); // end keyboardAccess
}
/**
* Closes all open elements, and returns to root menu.
* @function
* @fires Drilldown#closed
*/
}, {
key: "_hideAll",
value: function _hideAll() {
var $elem = this.$element.find('.is-drilldown-submenu.is-active').addClass('is-closing');
if (this.options.autoHeight) this.$wrapper.css({
height: $elem.parent().closest('ul').data('calcHeight')
});
$elem.one(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["transitionend"])($elem), function(e) {
$elem.removeClass('is-active is-closing');
});
/**
* Fires when the menu is fully closed.
* @event Drilldown#closed
*/
this.$element.trigger('closed.zf.drilldown');
}
/**
* Adds event listener for each `back` button, and closes open menus.
* @function
* @fires Drilldown#back
* @param {jQuery} $elem - the current sub-menu to add `back` event.
*/
}, {
key: "_back",
value: function _back($elem) {
var _this = this;
$elem.off('click.zf.drilldown');
$elem.children('.js-drilldown-back').on('click.zf.drilldown', function(e) {
e.stopImmediatePropagation(); // console.log('mouseup on back');
_this._hide($elem); // If there is a parent submenu, call show
var parentSubMenu = $elem.parent('li').parent('ul').parent('li');
if (parentSubMenu.length) {
_this._show(parentSubMenu);
}
});
}
/**
* Adds event listener to menu items w/o submenus to close open menus on click.
* @function
* @private
*/
}, {
key: "_menuLinkEvents",
value: function _menuLinkEvents() {
var _this = this;
this.$menuItems.not('.is-drilldown-submenu-parent').off('click.zf.drilldown').on('click.zf.drilldown', function(e) {
// e.stopImmediatePropagation();
setTimeout(function() {
_this._hideAll();
}, 0);
});
}
/**
* Sets the CSS classes for submenu to show it.
* @function
* @private
* @param {jQuery} $elem - the target submenu (`ul` tag)
* @param {boolean} trigger - trigger drilldown event
*/
}, {
key: "_setShowSubMenuClasses",
value: function _setShowSubMenuClasses($elem, trigger) {
$elem.addClass('is-active').removeClass('invisible').attr('aria-hidden', false);
$elem.parent('li').attr('aria-expanded', true);
if (trigger === true) {
this.$element.trigger('open.zf.drilldown', [$elem]);
}
}
/**
* Sets the CSS classes for submenu to hide it.
* @function
* @private
* @param {jQuery} $elem - the target submenu (`ul` tag)
* @param {boolean} trigger - trigger drilldown event
*/
}, {
key: "_setHideSubMenuClasses",
value: function _setHideSubMenuClasses($elem, trigger) {
$elem.removeClass('is-active').addClass('invisible').attr('aria-hidden', true);
$elem.parent('li').attr('aria-expanded', false);
if (trigger === true) {
$elem.trigger('hide.zf.drilldown', [$elem]);
}
}
/**
* Opens a specific drilldown (sub)menu no matter which (sub)menu in it is currently visible.
* Compared to _show() this lets you jump into any submenu without clicking through every submenu on the way to it.
* @function
* @fires Drilldown#open
* @param {jQuery} $elem - the target (sub)menu (`ul` tag)
* @param {boolean} autoFocus - if true the first link in the target (sub)menu gets auto focused
*/
}, {
key: "_showMenu",
value: function _showMenu($elem, autoFocus) {
var _this = this; // Reset drilldown
var $expandedSubmenus = this.$element.find('li[aria-expanded="true"] > ul[data-submenu]');
$expandedSubmenus.each(function(index) {
_this._setHideSubMenuClasses(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this));
}); // Save the menu as the currently displayed one.
this.$currentMenu = $elem; // If target menu is root, focus first link & exit
if ($elem.is('[data-drilldown]')) {
if (autoFocus === true) $elem.find('li[role="treeitem"] > a').first().focus();
if (this.options.autoHeight) this.$wrapper.css('height', $elem.data('calcHeight'));
return;
} // Find all submenus on way to root incl. the element itself
var $submenus = $elem.children().first().parentsUntil('[data-drilldown]', '[data-submenu]'); // Open target menu and all submenus on its way to root
$submenus.each(function(index) {
// Update height of first child (target menu) if autoHeight option true
if (index === 0 && _this.options.autoHeight) {
_this.$wrapper.css('height', jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('calcHeight'));
}
var isLastChild = index == $submenus.length - 1; // Add transitionsend listener to last child (root due to reverse order) to open target menu's first link
// Last child makes sure the event gets always triggered even if going through several menus
if (isLastChild === true) {
jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).one(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["transitionend"])(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this)), function() {
if (autoFocus === true) {
$elem.find('li[role="treeitem"] > a').first().focus();
}
});
}
_this._setShowSubMenuClasses(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), isLastChild);
});
}
/**
* Opens a submenu.
* @function
* @fires Drilldown#open
* @param {jQuery} $elem - the current element with a submenu to open, i.e. the `li` tag.
*/
}, {
key: "_show",
value: function _show($elem) {
var $submenu = $elem.children('[data-submenu]');
$elem.attr('aria-expanded', true);
this.$currentMenu = $submenu;
$submenu.addClass('is-active').removeClass('invisible').attr('aria-hidden', false);
if (this.options.autoHeight) {
this.$wrapper.css({
height: $submenu.data('calcHeight')
});
}
/**
* Fires when the submenu has opened.
* @event Drilldown#open
*/
this.$element.trigger('open.zf.drilldown', [$elem]);
}
/**
* Hides a submenu
* @function
* @fires Drilldown#hide
* @param {jQuery} $elem - the current sub-menu to hide, i.e. the `ul` tag.
*/
}, {
key: "_hide",
value: function _hide($elem) {
if (this.options.autoHeight) this.$wrapper.css({
height: $elem.parent().closest('ul').data('calcHeight')
});
var _this = this;
$elem.parent('li').attr('aria-expanded', false);
$elem.attr('aria-hidden', true);
$elem.addClass('is-closing').one(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["transitionend"])($elem), function() {
$elem.removeClass('is-active is-closing');
$elem.blur().addClass('invisible');
});
/**
* Fires when the submenu has closed.
* @event Drilldown#hide
*/
$elem.trigger('hide.zf.drilldown', [$elem]);
}
/**
* Iterates through the nested menus to calculate the min-height, and max-width for the menu.
* Prevents content jumping.
* @function
* @private
*/
}, {
key: "_getMaxDims",
value: function _getMaxDims() {
var maxHeight = 0,
result = {},
_this = this; // Recalculate menu heights and total max height
this.$submenus.add(this.$element).each(function() {
var numOfElems = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).children('li').length;
var height = _foundation_util_box__WEBPACK_IMPORTED_MODULE_4__["Box"].GetDimensions(this).height;
maxHeight = height > maxHeight ? height : maxHeight;
if (_this.options.autoHeight) {
jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('calcHeight', height);
}
});
if (this.options.autoHeight) result['height'] = this.$currentMenu.data('calcHeight');
else result['min-height'] = "".concat(maxHeight, "px");
result['max-width'] = "".concat(this.$element[0].getBoundingClientRect().width, "px");
return result;
}
/**
* Destroys the Drilldown Menu
* @function
*/
}, {
key: "_destroy",
value: function _destroy() {
if (this.options.scrollTop) this.$element.off('.zf.drilldown', this._bindHandler);
this._hideAll();
this.$element.off('mutateme.zf.trigger');
_foundation_util_nest__WEBPACK_IMPORTED_MODULE_2__["Nest"].Burn(this.$element, 'drilldown');
this.$element.unwrap().find('.js-drilldown-back, .is-submenu-parent-item').remove().end().find('.is-active, .is-closing, .is-drilldown-submenu').removeClass('is-active is-closing is-drilldown-submenu').end().find('[data-submenu]').removeAttr('aria-hidden tabindex role');
this.$submenuAnchors.each(function() {
jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).off('.zf.drilldown');
});
this.$element.find('[data-is-parent-link]').detach();
this.$submenus.removeClass('drilldown-submenu-cover-previous invisible');
this.$element.find('a').each(function() {
var $link = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this);
$link.removeAttr('tabindex');
if ($link.data('savedHref')) {
$link.attr('href', $link.data('savedHref')).removeData('savedHref');
} else {
return;
}
});
}
}]);
return Drilldown;
}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_5__["Plugin"]);
Drilldown.defaults = {
/**
* Drilldowns depend on styles in order to function properly; in the default build of Foundation these are
* on the `drilldown` class. This option auto-applies this class to the drilldown upon initialization.
* @option
* @type {boolian}
* @default true
*/
autoApplyClass: true,
/**
* Markup used for JS generated back button. Prepended or appended (see backButtonPosition) to submenu lists and deleted on `destroy` method, 'js-drilldown-back' class required. Remove the backslash (`\`) if copy and pasting.
* @option
* @type {string}
* @default '<li class="js-drilldown-back"><a tabindex="0">Back</a></li>'
*/
backButton: '<li class="js-drilldown-back"><a tabindex="0">Back</a></li>',
/**
* Position the back button either at the top or bottom of drilldown submenus. Can be `'left'` or `'bottom'`.
* @option
* @type {string}
* @default top
*/
backButtonPosition: 'top',
/**
* Markup used to wrap drilldown menu. Use a class name for independent styling; the JS applied class: `is-drilldown` is required. Remove the backslash (`\`) if copy and pasting.
* @option
* @type {string}
* @default '<div></div>'
*/
wrapper: '<div></div>',
/**
* Adds the parent link to the submenu.
* @option
* @type {boolean}
* @default false
*/
parentLink: false,
/**
* Allow the menu to return to root list on body click.
* @option
* @type {boolean}
* @default false
*/
closeOnClick: false,
/**
* Allow the menu to auto adjust height.
* @option
* @type {boolean}
* @default false
*/
autoHeight: false,
/**
* Animate the auto adjust height.
* @option
* @type {boolean}
* @default false
*/
animateHeight: false,
/**
* Scroll to the top of the menu after opening a submenu or navigating back using the menu back button
* @option
* @type {boolean}
* @default false
*/
scrollTop: false,
/**
* String jquery selector (for example 'body') of element to take offset().top from, if empty string the drilldown menu offset().top is taken
* @option
* @type {string}
* @default ''
*/
scrollTopElement: '',
/**
* ScrollTop offset
* @option
* @type {number}
* @default 0
*/
scrollTopOffset: 0,
/**
* Scroll animation duration
* @option
* @type {number}
* @default 500
*/
animationDuration: 500,
/**
* Scroll animation easing. Can be `'swing'` or `'linear'`.
* @option
* @type {string}
* @see {@link https://api.jquery.com/animate|JQuery animate}
* @default 'swing'
*/
animationEasing: 'swing' // holdOpen: false
};
//# sourceURL=webpack:///./js/foundation.drilldown.js?
|
#17 JavaScript::Eval (size: 9175, repeated: 1) - SHA256: d0bcf18b20ba31a2a99b935fff4b86830d810d779016c9e3383bcf54b8cfd051
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */
__webpack_require__.d(__webpack_exports__, "Box", function() {
return Box;
});
/* harmony import */
var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
var Box = {
ImNotTouchingYou: ImNotTouchingYou,
OverlapArea: OverlapArea,
GetDimensions: GetDimensions,
GetOffsets: GetOffsets,
GetExplicitOffsets: GetExplicitOffsets
/**
* Compares the dimensions of an element to a container and determines collision events with container.
* @function
* @param {jQuery} element - jQuery object to test for collisions.
* @param {jQuery} parent - jQuery object to use as bounding container.
* @param {Boolean} lrOnly - set to true to check left and right values only.
* @param {Boolean} tbOnly - set to true to check top and bottom values only.
* @default if no parent object passed, detects collisions with `window`.
* @returns {Boolean} - true if collision free, false if a collision in any direction.
*/
};
function ImNotTouchingYou(element, parent, lrOnly, tbOnly, ignoreBottom) {
return OverlapArea(element, parent, lrOnly, tbOnly, ignoreBottom) === 0;
}
;
function OverlapArea(element, parent, lrOnly, tbOnly, ignoreBottom) {
var eleDims = GetDimensions(element),
topOver,
bottomOver,
leftOver,
rightOver;
if (parent) {
var parDims = GetDimensions(parent);
bottomOver = parDims.height + parDims.offset.top - (eleDims.offset.top + eleDims.height);
topOver = eleDims.offset.top - parDims.offset.top;
leftOver = eleDims.offset.left - parDims.offset.left;
rightOver = parDims.width + parDims.offset.left - (eleDims.offset.left + eleDims.width);
} else {
bottomOver = eleDims.windowDims.height + eleDims.windowDims.offset.top - (eleDims.offset.top + eleDims.height);
topOver = eleDims.offset.top - eleDims.windowDims.offset.top;
leftOver = eleDims.offset.left - eleDims.windowDims.offset.left;
rightOver = eleDims.windowDims.width - (eleDims.offset.left + eleDims.width);
}
bottomOver = ignoreBottom ? 0 : Math.min(bottomOver, 0);
topOver = Math.min(topOver, 0);
leftOver = Math.min(leftOver, 0);
rightOver = Math.min(rightOver, 0);
if (lrOnly) {
return leftOver + rightOver;
}
if (tbOnly) {
return topOver + bottomOver;
} // use sum of squares b/c we care about overlap area.
return Math.sqrt(topOver * topOver + bottomOver * bottomOver + leftOver * leftOver + rightOver * rightOver);
}
/**
* Uses native methods to return an object of dimension values.
* @function
* @param {jQuery || HTML} element - jQuery object or DOM element for which to get the dimensions. Can be any element other that document or window.
* @returns {Object} - nested object of integer pixel values
* TODO - if element is window, return only those values.
*/
function GetDimensions(elem) {
elem = elem.length ? elem[0] : elem;
if (elem === window || elem === document) {
throw new Error("I'm sorry, Dave. I'm afraid I can't do that.");
}
var rect = elem.getBoundingClientRect(),
parRect = elem.parentNode.getBoundingClientRect(),
winRect = document.body.getBoundingClientRect(),
winY = window.pageYOffset,
winX = window.pageXOffset;
return {
width: rect.width,
height: rect.height,
offset: {
top: rect.top + winY,
left: rect.left + winX
},
parentDims: {
width: parRect.width,
height: parRect.height,
offset: {
top: parRect.top + winY,
left: parRect.left + winX
}
},
windowDims: {
width: winRect.width,
height: winRect.height,
offset: {
top: winY,
left: winX
}
}
};
}
/**
* Returns an object of top and left integer pixel values for dynamically rendered elements,
* such as: Tooltip, Reveal, and Dropdown. Maintained for backwards compatibility, and where
* you don't know alignment, but generally from
* 6.4 forward you should use GetExplicitOffsets, as GetOffsets conflates position and alignment.
* @function
* @param {jQuery} element - jQuery object for the element being positioned.
* @param {jQuery} anchor - jQuery object for the element's anchor point.
* @param {String} position - a string relating to the desired position of the element, relative to it's anchor
* @param {Number} vOffset - integer pixel value of desired vertical separation between anchor and element.
* @param {Number} hOffset - integer pixel value of desired horizontal separation between anchor and element.
* @param {Boolean} isOverflow - if a collision event is detected, sets to true to default the element to full width - any desired offset.
* TODO alter/rewrite to work with `em` values as well/instead of pixels
*/
function GetOffsets(element, anchor, position, vOffset, hOffset, isOverflow) {
console.log("NOTE: GetOffsets is deprecated in favor of GetExplicitOffsets and will be removed in 6.5");
switch (position) {
case 'top':
return Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_0__["rtl"])() ? GetExplicitOffsets(element, anchor, 'top', 'left', vOffset, hOffset, isOverflow) : GetExplicitOffsets(element, anchor, 'top', 'right', vOffset, hOffset, isOverflow);
case 'bottom':
return Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_0__["rtl"])() ? GetExplicitOffsets(element, anchor, 'bottom', 'left', vOffset, hOffset, isOverflow) : GetExplicitOffsets(element, anchor, 'bottom', 'right', vOffset, hOffset, isOverflow);
case 'center top':
return GetExplicitOffsets(element, anchor, 'top', 'center', vOffset, hOffset, isOverflow);
case 'center bottom':
return GetExplicitOffsets(element, anchor, 'bottom', 'center', vOffset, hOffset, isOverflow);
case 'center left':
return GetExplicitOffsets(element, anchor, 'left', 'center', vOffset, hOffset, isOverflow);
case 'center right':
return GetExplicitOffsets(element, anchor, 'right', 'center', vOffset, hOffset, isOverflow);
case 'left bottom':
return GetExplicitOffsets(element, anchor, 'bottom', 'left', vOffset, hOffset, isOverflow);
case 'right bottom':
return GetExplicitOffsets(element, anchor, 'bottom', 'right', vOffset, hOffset, isOverflow);
// Backwards compatibility... this along with the reveal and reveal full
// classes are the only ones that didn't reference anchor
case 'center':
return {
left: $eleDims.windowDims.offset.left + $eleDims.windowDims.width / 2 - $eleDims.width / 2 + hOffset,
top: $eleDims.windowDims.offset.top + $eleDims.windowDims.height / 2 - ($eleDims.height / 2 + vOffset)
};
case 'reveal':
return {
left: ($eleDims.windowDims.width - $eleDims.width) / 2 + hOffset,
top: $eleDims.windowDims.offset.top + vOffset
};
case 'reveal full':
return {
left: $eleDims.windowDims.offset.left,
top: $eleDims.windowDims.offset.top
};
break;
default:
return {
left: Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_0__["rtl"])() ? $anchorDims.offset.left - $eleDims.width + $anchorDims.width - hOffset : $anchorDims.offset.left + hOffset,
top: $anchorDims.offset.top + $anchorDims.height + vOffset
};
}
}
function GetExplicitOffsets(element, anchor, position, alignment, vOffset, hOffset, isOverflow) {
var $eleDims = GetDimensions(element),
$anchorDims = anchor ? GetDimensions(anchor) : null;
var topVal, leftVal; // set position related attribute
switch (position) {
case 'top':
topVal = $anchorDims.offset.top - ($eleDims.height + vOffset);
break;
case 'bottom':
topVal = $anchorDims.offset.top + $anchorDims.height + vOffset;
break;
case 'left':
leftVal = $anchorDims.offset.left - ($eleDims.width + hOffset);
break;
case 'right':
leftVal = $anchorDims.offset.left + $anchorDims.width + hOffset;
break;
} // set alignment related attribute
switch (position) {
case 'top':
case 'bottom':
switch (alignment) {
case 'left':
leftVal = $anchorDims.offset.left + hOffset;
break;
case 'right':
leftVal = $anchorDims.offset.left - $eleDims.width + $anchorDims.width - hOffset;
break;
case 'center':
leftVal = isOverflow ? hOffset : $anchorDims.offset.left + $anchorDims.width / 2 - $eleDims.width / 2 + hOffset;
break;
}
break;
case 'right':
case 'left':
switch (alignment) {
case 'bottom':
topVal = $anchorDims.offset.top - vOffset + $anchorDims.height - $eleDims.height;
break;
case 'top':
topVal = $anchorDims.offset.top + vOffset;
break;
case 'center':
topVal = $anchorDims.offset.top + vOffset + $anchorDims.height / 2 - $eleDims.height / 2;
break;
}
break;
}
return {
top: topVal,
left: leftVal
};
}
//# sourceURL=webpack:///./js/foundation.util.box.js?
|
#18 JavaScript::Eval (size: 20659, repeated: 1) - SHA256: c762788e2ca560f2abda0fad233b7de1d26b001a47c48e5f16a145041b0a99d4
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */
__webpack_require__.d(__webpack_exports__, "Sticky", function() {
return Sticky;
});
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! jquery */ "jquery");
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */
var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
/* harmony import */
var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! ./foundation.util.mediaQuery */ "./js/foundation.util.mediaQuery.js");
/* harmony import */
var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! ./foundation.core.plugin */ "./js/foundation.core.plugin.js");
/* harmony import */
var _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( /*! ./foundation.util.triggers */ "./js/foundation.util.triggers.js");
function _typeof(obj) {
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function _typeof(obj) {
return typeof obj;
};
} else {
_typeof = function _typeof(obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
return _typeof(obj);
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a 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);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
function _possibleConstructorReturn(self, call) {
if (call && (_typeof(call) === "object" || typeof call === "function")) {
return call;
}
return _assertThisInitialized(self);
}
function _assertThisInitialized(self) {
if (self === void 0) {
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}
return self;
}
function _getPrototypeOf(o) {
_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
return o.__proto__ || Object.getPrototypeOf(o);
};
return _getPrototypeOf(o);
}
function _inherits(subClass, superClass) {
if (typeof superClass !== "function" && superClass !== null) {
throw new TypeError("Super expression must either be null or a function");
}
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
writable: true,
configurable: true
}
});
if (superClass) _setPrototypeOf(subClass, superClass);
}
function _setPrototypeOf(o, p) {
_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
o.__proto__ = p;
return o;
};
return _setPrototypeOf(o, p);
}
/**
* Sticky module.
* @module foundation.sticky
* @requires foundation.util.triggers
* @requires foundation.util.mediaQuery
*/
var Sticky =
/*#__PURE__*/
function(_Plugin) {
_inherits(Sticky, _Plugin);
function Sticky() {
_classCallCheck(this, Sticky);
return _possibleConstructorReturn(this, _getPrototypeOf(Sticky).apply(this, arguments));
}
_createClass(Sticky, [{
key: "_setup",
/**
* Creates a new instance of a sticky thing.
* @class
* @name Sticky
* @param {jQuery} element - jQuery object to make sticky.
* @param {Object} options - options object passed when creating the element programmatically.
*/
value: function _setup(element, options) {
this.$element = element;
this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, Sticky.defaults, this.$element.data(), options);
this.className = 'Sticky'; // ie9 back compat
// Triggers init is idempotent, just need to make sure it is initialized
_foundation_util_triggers__WEBPACK_IMPORTED_MODULE_4__["Triggers"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a);
this._init();
}
/**
* Initializes the sticky element by adding classes, getting/setting dimensions, breakpoints and attributes
* @function
* @private
*/
}, {
key: "_init",
value: function _init() {
_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_2__["MediaQuery"]._init();
var $parent = this.$element.parent('[data-sticky-container]'),
id = this.$element[0].id || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["GetYoDigits"])(6, 'sticky'),
_this = this;
if ($parent.length) {
this.$container = $parent;
} else {
this.wasWrapped = true;
this.$element.wrap(this.options.container);
this.$container = this.$element.parent();
}
this.$container.addClass(this.options.containerClass);
this.$element.addClass(this.options.stickyClass).attr({
'data-resize': id,
'data-mutate': id
});
if (this.options.anchor !== '') {
jquery__WEBPACK_IMPORTED_MODULE_0___default()('#' + _this.options.anchor).attr({
'data-mutate': id
});
}
this.scrollCount = this.options.checkEvery;
this.isStuck = false;
this.onLoadListener = Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["onLoad"])(jquery__WEBPACK_IMPORTED_MODULE_0___default()(window), function() {
//We calculate the container height to have correct values for anchor points offset calculation.
_this.containerHeight = _this.$element.css("display") == "none" ? 0 : _this.$element[0].getBoundingClientRect().height;
_this.$container.css('height', _this.containerHeight);
_this.elemHeight = _this.containerHeight;
if (_this.options.anchor !== '') {
_this.$anchor = jquery__WEBPACK_IMPORTED_MODULE_0___default()('#' + _this.options.anchor);
} else {
_this._parsePoints();
}
_this._setSizes(function() {
var scroll = window.pageYOffset;
_this._calc(false, scroll); //Unstick the element will ensure that proper classes are set.
if (!_this.isStuck) {
_this._removeSticky(scroll >= _this.topPoint ? false : true);
}
});
_this._events(id.split('-').reverse().join('-'));
});
}
/**
* If using multiple elements as anchors, calculates the top and bottom pixel values the sticky thing should stick and unstick on.
* @function
* @private
*/
}, {
key: "_parsePoints",
value: function _parsePoints() {
var top = this.options.topAnchor == "" ? 1 : this.options.topAnchor,
btm = this.options.btmAnchor == "" ? document.documentElement.scrollHeight : this.options.btmAnchor,
pts = [top, btm],
breaks = {};
for (var i = 0, len = pts.length; i < len && pts[i]; i++) {
var pt;
if (typeof pts[i] === 'number') {
pt = pts[i];
} else {
var place = pts[i].split(':'),
anchor = jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(place[0]));
pt = anchor.offset().top;
if (place[1] && place[1].toLowerCase() === 'bottom') {
pt += anchor[0].getBoundingClientRect().height;
}
}
breaks[i] = pt;
}
this.points = breaks;
return;
}
/**
* Adds event handlers for the scrolling element.
* @private
* @param {String} id - pseudo-random id for unique scroll event listener.
*/
}, {
key: "_events",
value: function _events(id) {
var _this = this,
scrollListener = this.scrollListener = "scroll.zf.".concat(id);
if (this.isOn) {
return;
}
if (this.canStick) {
this.isOn = true;
jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(scrollListener).on(scrollListener, function(e) {
if (_this.scrollCount === 0) {
_this.scrollCount = _this.options.checkEvery;
_this._setSizes(function() {
_this._calc(false, window.pageYOffset);
});
} else {
_this.scrollCount--;
_this._calc(false, window.pageYOffset);
}
});
}
this.$element.off('resizeme.zf.trigger').on('resizeme.zf.trigger', function(e, el) {
_this._eventsHandler(id);
});
this.$element.on('mutateme.zf.trigger', function(e, el) {
_this._eventsHandler(id);
});
if (this.$anchor) {
this.$anchor.on('mutateme.zf.trigger', function(e, el) {
_this._eventsHandler(id);
});
}
}
/**
* Handler for events.
* @private
* @param {String} id - pseudo-random id for unique scroll event listener.
*/
}, {
key: "_eventsHandler",
value: function _eventsHandler(id) {
var _this = this,
scrollListener = this.scrollListener = "scroll.zf.".concat(id);
_this._setSizes(function() {
_this._calc(false);
if (_this.canStick) {
if (!_this.isOn) {
_this._events(id);
}
} else if (_this.isOn) {
_this._pauseListeners(scrollListener);
}
});
}
/**
* Removes event handlers for scroll and change events on anchor.
* @fires Sticky#pause
* @param {String} scrollListener - unique, namespaced scroll listener attached to `window`
*/
}, {
key: "_pauseListeners",
value: function _pauseListeners(scrollListener) {
this.isOn = false;
jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(scrollListener);
/**
* Fires when the plugin is paused due to resize event shrinking the view.
* @event Sticky#pause
* @private
*/
this.$element.trigger('pause.zf.sticky');
}
/**
* Called on every `scroll` event and on `_init`
* fires functions based on booleans and cached values
* @param {Boolean} checkSizes - true if plugin should recalculate sizes and breakpoints.
* @param {Number} scroll - current scroll position passed from scroll event cb function. If not passed, defaults to `window.pageYOffset`.
*/
}, {
key: "_calc",
value: function _calc(checkSizes, scroll) {
if (checkSizes) {
this._setSizes();
}
if (!this.canStick) {
if (this.isStuck) {
this._removeSticky(true);
}
return false;
}
if (!scroll) {
scroll = window.pageYOffset;
}
if (scroll >= this.topPoint) {
if (scroll <= this.bottomPoint) {
if (!this.isStuck) {
this._setSticky();
}
} else {
if (this.isStuck) {
this._removeSticky(false);
}
}
} else {
if (this.isStuck) {
this._removeSticky(true);
}
}
}
/**
* Causes the $element to become stuck.
* Adds `position: fixed;`, and helper classes.
* @fires Sticky#stuckto
* @function
* @private
*/
}, {
key: "_setSticky",
value: function _setSticky() {
var _this = this,
stickTo = this.options.stickTo,
mrgn = stickTo === 'top' ? 'marginTop' : 'marginBottom',
notStuckTo = stickTo === 'top' ? 'bottom' : 'top',
css = {};
css[mrgn] = "".concat(this.options[mrgn], "em");
css[stickTo] = 0;
css[notStuckTo] = 'auto';
this.isStuck = true;
this.$element.removeClass("is-anchored is-at-".concat(notStuckTo)).addClass("is-stuck is-at-".concat(stickTo)).css(css)
/**
* Fires when the $element has become `position: fixed;`
* Namespaced to `top` or `bottom`, e.g. `sticky.zf.stuckto:top`
* @event Sticky#stuckto
*/
.trigger("sticky.zf.stuckto:".concat(stickTo));
this.$element.on("transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd", function() {
_this._setSizes();
});
}
/**
* Causes the $element to become unstuck.
* Removes `position: fixed;`, and helper classes.
* Adds other helper classes.
* @param {Boolean} isTop - tells the function if the $element should anchor to the top or bottom of its $anchor element.
* @fires Sticky#unstuckfrom
* @private
*/
}, {
key: "_removeSticky",
value: function _removeSticky(isTop) {
var stickTo = this.options.stickTo,
stickToTop = stickTo === 'top',
css = {},
anchorPt = (this.points ? this.points[1] - this.points[0] : this.anchorHeight) - this.elemHeight,
mrgn = stickToTop ? 'marginTop' : 'marginBottom',
notStuckTo = stickToTop ? 'bottom' : 'top',
topOrBottom = isTop ? 'top' : 'bottom';
css[mrgn] = 0;
css['bottom'] = 'auto';
if (isTop) {
css['top'] = 0;
} else {
css['top'] = anchorPt;
}
this.isStuck = false;
this.$element.removeClass("is-stuck is-at-".concat(stickTo)).addClass("is-anchored is-at-".concat(topOrBottom)).css(css)
/**
* Fires when the $element has become anchored.
* Namespaced to `top` or `bottom`, e.g. `sticky.zf.unstuckfrom:bottom`
* @event Sticky#unstuckfrom
*/
.trigger("sticky.zf.unstuckfrom:".concat(topOrBottom));
}
/**
* Sets the $element and $container sizes for plugin.
* Calls `_setBreakPoints`.
* @param {Function} cb - optional callback function to fire on completion of `_setBreakPoints`.
* @private
*/
}, {
key: "_setSizes",
value: function _setSizes(cb) {
this.canStick = _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_2__["MediaQuery"].is(this.options.stickyOn);
if (!this.canStick) {
if (cb && typeof cb === 'function') {
cb();
}
}
var _this = this,
newElemWidth = this.$container[0].getBoundingClientRect().width,
comp = window.getComputedStyle(this.$container[0]),
pdngl = parseInt(comp['padding-left'], 10),
pdngr = parseInt(comp['padding-right'], 10);
if (this.$anchor && this.$anchor.length) {
this.anchorHeight = this.$anchor[0].getBoundingClientRect().height;
} else {
this._parsePoints();
}
this.$element.css({
'max-width': "".concat(newElemWidth - pdngl - pdngr, "px")
});
var newContainerHeight = this.$element[0].getBoundingClientRect().height || this.containerHeight;
if (this.$element.css("display") == "none") {
newContainerHeight = 0;
}
this.containerHeight = newContainerHeight;
this.$container.css({
height: newContainerHeight
});
this.elemHeight = newContainerHeight;
if (!this.isStuck) {
if (this.$element.hasClass('is-at-bottom')) {
var anchorPt = (this.points ? this.points[1] - this.$container.offset().top : this.anchorHeight) - this.elemHeight;
this.$element.css('top', anchorPt);
}
}
this._setBreakPoints(newContainerHeight, function() {
if (cb && typeof cb === 'function') {
cb();
}
});
}
/**
* Sets the upper and lower breakpoints for the element to become sticky/unsticky.
* @param {Number} elemHeight - px value for sticky.$element height, calculated by `_setSizes`.
* @param {Function} cb - optional callback function to be called on completion.
* @private
*/
}, {
key: "_setBreakPoints",
value: function _setBreakPoints(elemHeight, cb) {
if (!this.canStick) {
if (cb && typeof cb === 'function') {
cb();
} else {
return false;
}
}
var mTop = emCalc(this.options.marginTop),
mBtm = emCalc(this.options.marginBottom),
topPoint = this.points ? this.points[0] : this.$anchor.offset().top,
bottomPoint = this.points ? this.points[1] : topPoint + this.anchorHeight,
// topPoint = this.$anchor.offset().top || this.points[0],
// bottomPoint = topPoint + this.anchorHeight || this.points[1],
winHeight = window.innerHeight;
if (this.options.stickTo === 'top') {
topPoint -= mTop;
bottomPoint -= elemHeight + mTop;
} else if (this.options.stickTo === 'bottom') {
topPoint -= winHeight - (elemHeight + mBtm);
bottomPoint -= winHeight - mBtm;
} else { //this would be the stickTo: both option... tricky
}
this.topPoint = topPoint;
this.bottomPoint = bottomPoint;
if (cb && typeof cb === 'function') {
cb();
}
}
/**
* Destroys the current sticky element.
* Resets the element to the top position first.
* Removes event listeners, JS-added css properties and classes, and unwraps the $element if the JS added the $container.
* @function
*/
}, {
key: "_destroy",
value: function _destroy() {
this._removeSticky(true);
this.$element.removeClass("".concat(this.options.stickyClass, " is-anchored is-at-top")).css({
height: '',
top: '',
bottom: '',
'max-width': ''
}).off('resizeme.zf.trigger').off('mutateme.zf.trigger');
if (this.$anchor && this.$anchor.length) {
this.$anchor.off('change.zf.sticky');
}
if (this.scrollListener) jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(this.scrollListener);
if (this.onLoadListener) jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(this.onLoadListener);
if (this.wasWrapped) {
this.$element.unwrap();
} else {
this.$container.removeClass(this.options.containerClass).css({
height: ''
});
}
}
}]);
return Sticky;
}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_3__["Plugin"]);
Sticky.defaults = {
/**
* Customizable container template. Add your own classes for styling and sizing.
* @option
* @type {string}
* @default '<div data-sticky-container></div>'
*/
container: '<div data-sticky-container></div>',
/**
* Location in the view the element sticks to. Can be `'top'` or `'bottom'`.
* @option
* @type {string}
* @default 'top'
*/
stickTo: 'top',
/**
* If anchored to a single element, the id of that element.
* @option
* @type {string}
* @default ''
*/
anchor: '',
/**
* If using more than one element as anchor points, the id of the top anchor.
* @option
* @type {string}
* @default ''
*/
topAnchor: '',
/**
* If using more than one element as anchor points, the id of the bottom anchor.
* @option
* @type {string}
* @default ''
*/
btmAnchor: '',
/**
* Margin, in `em`'s to apply to the top of the element when it becomes sticky.
* @option
* @type {number}
* @default 1
*/
marginTop: 1,
/**
* Margin, in `em`'s to apply to the bottom of the element when it becomes sticky.
* @option
* @type {number}
* @default 1
*/
marginBottom: 1,
/**
* Breakpoint string that is the minimum screen size an element should become sticky.
* @option
* @type {string}
* @default 'medium'
*/
stickyOn: 'medium',
/**
* Class applied to sticky element, and removed on destruction. Foundation defaults to `sticky`.
* @option
* @type {string}
* @default 'sticky'
*/
stickyClass: 'sticky',
/**
* Class applied to sticky container. Foundation defaults to `sticky-container`.
* @option
* @type {string}
* @default 'sticky-container'
*/
containerClass: 'sticky-container',
/**
* Number of scroll events between the plugin's recalculating sticky points. Setting it to `0` will cause it to recalc every scroll event, setting it to `-1` will prevent recalc on scroll.
* @option
* @type {number}
* @default -1
*/
checkEvery: -1
};
/**
* Helper function to calculate em values
* @param Number {em} - number of em's to calculate into pixels
*/
function emCalc(em) {
return parseInt(window.getComputedStyle(document.body, null).fontSize, 10) * em;
}
//# sourceURL=webpack:///./js/foundation.sticky.js?
|
#19 JavaScript::Eval (size: 14646, repeated: 1) - SHA256: 957c7e845499d1b297f5edd6bd86065f15ade90182c8ef30a54eeb679929e173
__webpack_require__.r(__webpack_exports__);
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! jquery */ "jquery");
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */
var _home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! ./js/foundation.core */ "./js/foundation.core.js");
/* harmony import */
var _home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! ./js/foundation.util.mediaQuery */ "./js/foundation.util.mediaQuery.js");
/* harmony import */
var _home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_util_triggers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! ./js/foundation.util.triggers */ "./js/foundation.util.triggers.js");
/* harmony import */
var _home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_slider__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( /*! ./js/foundation.slider */ "./js/foundation.slider.js");
/* harmony import */
var _home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_drilldown__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__( /*! ./js/foundation.drilldown */ "./js/foundation.drilldown.js");
/* harmony import */
var _home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_accordionMenu__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__( /*! ./js/foundation.accordionMenu */ "./js/foundation.accordionMenu.js");
/* harmony import */
var _home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_dropdownMenu__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__( /*! ./js/foundation.dropdownMenu */ "./js/foundation.dropdownMenu.js");
/* harmony import */
var _home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_magellan__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__( /*! ./js/foundation.magellan */ "./js/foundation.magellan.js");
/* harmony import */
var _home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_responsiveMenu__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__( /*! ./js/foundation.responsiveMenu */ "./js/foundation.responsiveMenu.js");
/* harmony import */
var _home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_accordion__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__( /*! ./js/foundation.accordion */ "./js/foundation.accordion.js");
/* harmony import */
var _home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_dropdown__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__( /*! ./js/foundation.dropdown */ "./js/foundation.dropdown.js");
/* harmony import */
var _home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_offcanvas__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__( /*! ./js/foundation.offcanvas */ "./js/foundation.offcanvas.js");
/* harmony import */
var _home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_tabs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__( /*! ./js/foundation.tabs */ "./js/foundation.tabs.js");
/* harmony import */
var _home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_reveal__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__( /*! ./js/foundation.reveal */ "./js/foundation.reveal.js");
/* harmony import */
var _home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_responsiveAccordionTabs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__( /*! ./js/foundation.responsiveAccordionTabs */ "./js/foundation.responsiveAccordionTabs.js");
/* harmony import */
var _home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_tooltip__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__( /*! ./js/foundation.tooltip */ "./js/foundation.tooltip.js");
/* harmony import */
var _home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_orbit__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__( /*! ./js/foundation.orbit */ "./js/foundation.orbit.js");
/* harmony import */
var _home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_sticky__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__( /*! ./js/foundation.sticky */ "./js/foundation.sticky.js");
/* harmony import */
var _home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_interchange__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__( /*! ./js/foundation.interchange */ "./js/foundation.interchange.js");
/* harmony import */
var _home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_responsiveToggle__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__( /*! ./js/foundation.responsiveToggle */ "./js/foundation.responsiveToggle.js");
/* harmony import */
var _home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_toggler__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__( /*! ./js/foundation.toggler */ "./js/foundation.toggler.js");
/* harmony import */
var _home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_abide__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__( /*! ./js/foundation.abide */ "./js/foundation.abide.js");
/* harmony import */
var _home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_equalizer__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__( /*! ./js/foundation.equalizer */ "./js/foundation.equalizer.js");
/* harmony import */
var _home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_smoothScroll__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__( /*! ./js/foundation.smoothScroll */ "./js/foundation.smoothScroll.js");
_home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].addToJquery(jquery__WEBPACK_IMPORTED_MODULE_0___default.a);
_home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].MediaQuery = _home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_2__["MediaQuery"];
_home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_util_triggers__WEBPACK_IMPORTED_MODULE_3__["Triggers"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a, _home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"]);
_home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].plugin(_home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_slider__WEBPACK_IMPORTED_MODULE_4__["Slider"], 'Slider');
_home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].plugin(_home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_drilldown__WEBPACK_IMPORTED_MODULE_5__["Drilldown"], 'Drilldown');
_home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].plugin(_home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_accordionMenu__WEBPACK_IMPORTED_MODULE_6__["AccordionMenu"], 'AccordionMenu');
_home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].plugin(_home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_dropdownMenu__WEBPACK_IMPORTED_MODULE_7__["DropdownMenu"], 'DropdownMenu');
_home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].plugin(_home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_magellan__WEBPACK_IMPORTED_MODULE_8__["Magellan"], 'Magellan');
_home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].plugin(_home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_responsiveMenu__WEBPACK_IMPORTED_MODULE_9__["ResponsiveMenu"], 'ResponsiveMenu');
_home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].plugin(_home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_accordion__WEBPACK_IMPORTED_MODULE_10__["Accordion"], 'Accordion');
_home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].plugin(_home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_dropdown__WEBPACK_IMPORTED_MODULE_11__["Dropdown"], 'Dropdown');
_home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].plugin(_home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_offcanvas__WEBPACK_IMPORTED_MODULE_12__["OffCanvas"], 'OffCanvas');
_home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].plugin(_home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_tabs__WEBPACK_IMPORTED_MODULE_13__["Tabs"], 'Tabs');
_home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].plugin(_home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_reveal__WEBPACK_IMPORTED_MODULE_14__["Reveal"], 'Reveal');
_home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].plugin(_home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_responsiveAccordionTabs__WEBPACK_IMPORTED_MODULE_15__["ResponsiveAccordionTabs"], 'ResponsiveAccordionTabs');
_home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].plugin(_home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_tooltip__WEBPACK_IMPORTED_MODULE_16__["Tooltip"], 'Tooltip');
_home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].plugin(_home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_orbit__WEBPACK_IMPORTED_MODULE_17__["Orbit"], 'Orbit');
_home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].plugin(_home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_sticky__WEBPACK_IMPORTED_MODULE_18__["Sticky"], 'Sticky');
_home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].plugin(_home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_interchange__WEBPACK_IMPORTED_MODULE_19__["Interchange"], 'Interchange');
_home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].plugin(_home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_responsiveToggle__WEBPACK_IMPORTED_MODULE_20__["ResponsiveToggle"], 'ResponsiveToggle');
_home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].plugin(_home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_toggler__WEBPACK_IMPORTED_MODULE_21__["Toggler"], 'Toggler');
_home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].plugin(_home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_abide__WEBPACK_IMPORTED_MODULE_22__["Abide"], 'Abide');
_home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].plugin(_home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_equalizer__WEBPACK_IMPORTED_MODULE_23__["Equalizer"], 'Equalizer');
_home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].plugin(_home_deployer_sites_node_foundation_customizer_node_foundation_customizer_foundation_sites_js_foundation_smoothScroll__WEBPACK_IMPORTED_MODULE_24__["SmoothScroll"], 'SmoothScroll');
//# sourceURL=webpack:////tmp/tmp.6.5.1.ef88c3c98edc2e3a4af9c4e948e95ffd/js/vendor/foundation.js?
|
#20 JavaScript::Eval (size: 29943, repeated: 1) - SHA256: b0641705d470d8f73d933e97488a3c7727056db1e42e84538cdd036e225612ed
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */
__webpack_require__.d(__webpack_exports__, "Slider", function() {
return Slider;
});
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! jquery */ "jquery");
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */
var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! ./foundation.util.keyboard */ "./js/foundation.util.keyboard.js");
/* harmony import */
var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! ./foundation.util.motion */ "./js/foundation.util.motion.js");
/* harmony import */
var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
/* harmony import */
var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( /*! ./foundation.core.plugin */ "./js/foundation.core.plugin.js");
/* harmony import */
var _foundation_util_touch__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__( /*! ./foundation.util.touch */ "./js/foundation.util.touch.js");
/* harmony import */
var _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__( /*! ./foundation.util.triggers */ "./js/foundation.util.triggers.js");
function _typeof(obj) {
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function _typeof(obj) {
return typeof obj;
};
} else {
_typeof = function _typeof(obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
return _typeof(obj);
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a 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);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
function _possibleConstructorReturn(self, call) {
if (call && (_typeof(call) === "object" || typeof call === "function")) {
return call;
}
return _assertThisInitialized(self);
}
function _assertThisInitialized(self) {
if (self === void 0) {
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}
return self;
}
function _getPrototypeOf(o) {
_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
return o.__proto__ || Object.getPrototypeOf(o);
};
return _getPrototypeOf(o);
}
function _inherits(subClass, superClass) {
if (typeof superClass !== "function" && superClass !== null) {
throw new TypeError("Super expression must either be null or a function");
}
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
writable: true,
configurable: true
}
});
if (superClass) _setPrototypeOf(subClass, superClass);
}
function _setPrototypeOf(o, p) {
_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
o.__proto__ = p;
return o;
};
return _setPrototypeOf(o, p);
}
/**
* Slider module.
* @module foundation.slider
* @requires foundation.util.motion
* @requires foundation.util.triggers
* @requires foundation.util.keyboard
* @requires foundation.util.touch
*/
var Slider =
/*#__PURE__*/
function(_Plugin) {
_inherits(Slider, _Plugin);
function Slider() {
_classCallCheck(this, Slider);
return _possibleConstructorReturn(this, _getPrototypeOf(Slider).apply(this, arguments));
}
_createClass(Slider, [{
key: "_setup",
/**
* Creates a new instance of a slider control.
* @class
* @name Slider
* @param {jQuery} element - jQuery object to make into a slider control.
* @param {Object} options - Overrides to the default plugin settings.
*/
value: function _setup(element, options) {
this.$element = element;
this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, Slider.defaults, this.$element.data(), options);
this.className = 'Slider'; // ie9 back compat
// Touch and Triggers inits are idempotent, we just need to make sure it's initialied.
_foundation_util_touch__WEBPACK_IMPORTED_MODULE_5__["Touch"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a);
_foundation_util_triggers__WEBPACK_IMPORTED_MODULE_6__["Triggers"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a);
this._init();
_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].register('Slider', {
'ltr': {
'ARROW_RIGHT': 'increase',
'ARROW_UP': 'increase',
'ARROW_DOWN': 'decrease',
'ARROW_LEFT': 'decrease',
'SHIFT_ARROW_RIGHT': 'increase_fast',
'SHIFT_ARROW_UP': 'increase_fast',
'SHIFT_ARROW_DOWN': 'decrease_fast',
'SHIFT_ARROW_LEFT': 'decrease_fast',
'HOME': 'min',
'END': 'max'
},
'rtl': {
'ARROW_LEFT': 'increase',
'ARROW_RIGHT': 'decrease',
'SHIFT_ARROW_LEFT': 'increase_fast',
'SHIFT_ARROW_RIGHT': 'decrease_fast'
}
});
}
/**
* Initilizes the plugin by reading/setting attributes, creating collections and setting the initial position of the handle(s).
* @function
* @private
*/
}, {
key: "_init",
value: function _init() {
this.inputs = this.$element.find('input');
this.handles = this.$element.find('[data-slider-handle]');
this.$handle = this.handles.eq(0);
this.$input = this.inputs.length ? this.inputs.eq(0) : jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(this.$handle.attr('aria-controls')));
this.$fill = this.$element.find('[data-slider-fill]').css(this.options.vertical ? 'height' : 'width', 0);
var isDbl = false,
_this = this;
if (this.options.disabled || this.$element.hasClass(this.options.disabledClass)) {
this.options.disabled = true;
this.$element.addClass(this.options.disabledClass);
}
if (!this.inputs.length) {
this.inputs = jquery__WEBPACK_IMPORTED_MODULE_0___default()().add(this.$input);
this.options.binding = true;
}
this._setInitAttr(0);
if (this.handles[1]) {
this.options.doubleSided = true;
this.$handle2 = this.handles.eq(1);
this.$input2 = this.inputs.length > 1 ? this.inputs.eq(1) : jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(this.$handle2.attr('aria-controls')));
if (!this.inputs[1]) {
this.inputs = this.inputs.add(this.$input2);
}
isDbl = true; // this.$handle.triggerHandler('click.zf.slider');
this._setInitAttr(1);
} // Set handle positions
this.setHandles();
this._events();
}
}, {
key: "setHandles",
value: function setHandles() {
var _this2 = this;
if (this.handles[1]) {
this._setHandlePos(this.$handle, this.inputs.eq(0).val(), true, function() {
_this2._setHandlePos(_this2.$handle2, _this2.inputs.eq(1).val(), true);
});
} else {
this._setHandlePos(this.$handle, this.inputs.eq(0).val(), true);
}
}
}, {
key: "_reflow",
value: function _reflow() {
this.setHandles();
}
/**
* @function
* @private
* @param {Number} value - floating point (the value) to be transformed using to a relative position on the slider (the inverse of _value)
*/
}, {
key: "_pctOfBar",
value: function _pctOfBar(value) {
var pctOfBar = percent(value - this.options.start, this.options.end - this.options.start);
switch (this.options.positionValueFunction) {
case "pow":
pctOfBar = this._logTransform(pctOfBar);
break;
case "log":
pctOfBar = this._powTransform(pctOfBar);
break;
}
return pctOfBar.toFixed(2);
}
/**
* @function
* @private
* @param {Number} pctOfBar - floating point, the relative position of the slider (typically between 0-1) to be transformed to a value
*/
}, {
key: "_value",
value: function _value(pctOfBar) {
switch (this.options.positionValueFunction) {
case "pow":
pctOfBar = this._powTransform(pctOfBar);
break;
case "log":
pctOfBar = this._logTransform(pctOfBar);
break;
}
var value = (this.options.end - this.options.start) * pctOfBar + parseFloat(this.options.start);
return value;
}
/**
* @function
* @private
* @param {Number} value - floating point (typically between 0-1) to be transformed using the log function
*/
}, {
key: "_logTransform",
value: function _logTransform(value) {
return baseLog(this.options.nonLinearBase, value * (this.options.nonLinearBase - 1) + 1);
}
/**
* @function
* @private
* @param {Number} value - floating point (typically between 0-1) to be transformed using the power function
*/
}, {
key: "_powTransform",
value: function _powTransform(value) {
return (Math.pow(this.options.nonLinearBase, value) - 1) / (this.options.nonLinearBase - 1);
}
/**
* Sets the position of the selected handle and fill bar.
* @function
* @private
* @param {jQuery} $hndl - the selected handle to move.
* @param {Number} location - floating point between the start and end values of the slider bar.
* @param {Function} cb - callback function to fire on completion.
* @fires Slider#moved
* @fires Slider#changed
*/
}, {
key: "_setHandlePos",
value: function _setHandlePos($hndl, location, noInvert, cb) {
// don't move if the slider has been disabled since its initialization
if (this.$element.hasClass(this.options.disabledClass)) {
return;
} //might need to alter that slightly for bars that will have odd number selections.
location = parseFloat(location); //on input change events, convert string to number...grumble.
// prevent slider from running out of bounds, if value exceeds the limits set through options, override the value to min/max
if (location < this.options.start) {
location = this.options.start;
} else if (location > this.options.end) {
location = this.options.end;
}
var isDbl = this.options.doubleSided; //this is for single-handled vertical sliders, it adjusts the value to account for the slider being "upside-down"
//for click and drag events, it's weird due to the scale(-1, 1) css property
if (this.options.vertical && !noInvert) {
location = this.options.end - location;
}
if (isDbl) {
//this block is to prevent 2 handles from crossing eachother. Could/should be improved.
if (this.handles.index($hndl) === 0) {
var h2Val = parseFloat(this.$handle2.attr('aria-valuenow'));
location = location >= h2Val ? h2Val - this.options.step : location;
} else {
var h1Val = parseFloat(this.$handle.attr('aria-valuenow'));
location = location <= h1Val ? h1Val + this.options.step : location;
}
}
var _this = this,
vert = this.options.vertical,
hOrW = vert ? 'height' : 'width',
lOrT = vert ? 'top' : 'left',
handleDim = $hndl[0].getBoundingClientRect()[hOrW],
elemDim = this.$element[0].getBoundingClientRect()[hOrW],
//percentage of bar min/max value based on click or drag point
pctOfBar = this._pctOfBar(location),
//number of actual pixels to shift the handle, based on the percentage obtained above
pxToMove = (elemDim - handleDim) * pctOfBar,
//percentage of bar to shift the handle
movement = (percent(pxToMove, elemDim) * 100).toFixed(this.options.decimal); //fixing the decimal value for the location number, is passed to other methods as a fixed floating-point value
location = parseFloat(location.toFixed(this.options.decimal)); // declare empty object for css adjustments, only used with 2 handled-sliders
var css = {};
this._setValues($hndl, location); // TODO update to calculate based on values set to respective inputs??
if (isDbl) {
var isLeftHndl = this.handles.index($hndl) === 0,
//empty variable, will be used for min-height/width for fill bar
dim,
//percentage w/h of the handle compared to the slider bar
handlePct = ~~(percent(handleDim, elemDim) * 100); //if left handle, the math is slightly different than if it's the right handle, and the left/top property needs to be changed for the fill bar
if (isLeftHndl) {
//left or top percentage value to apply to the fill bar.
css[lOrT] = "".concat(movement, "%"); //calculate the new min-height/width for the fill bar.
dim = parseFloat(this.$handle2[0].style[lOrT]) - movement + handlePct; //this callback is necessary to prevent errors and allow the proper placement and initialization of a 2-handled slider
//plus, it means we don't care if 'dim' isNaN on init, it won't be in the future.
if (cb && typeof cb === 'function') {
cb();
} //this is only needed for the initialization of 2 handled sliders
} else {
//just caching the value of the left/bottom handle's left/top property
var handlePos = parseFloat(this.$handle[0].style[lOrT]); //calculate the new min-height/width for the fill bar. Use isNaN to prevent false positives for numbers <= 0
//based on the percentage of movement of the handle being manipulated, less the opposing handle's left/top position, plus the percentage w/h of the handle itself
dim = movement - (isNaN(handlePos) ? (this.options.initialStart - this.options.start) / ((this.options.end - this.options.start) / 100) : handlePos) + handlePct;
} // assign the min-height/width to our css object
css["min-".concat(hOrW)] = "".concat(dim, "%");
}
this.$element.one('finished.zf.animate', function() {
/**
* Fires when the handle is done moving.
* @event Slider#moved
*/
_this.$element.trigger('moved.zf.slider', [$hndl]);
}); //because we don't know exactly how the handle will be moved, check the amount of time it should take to move.
var moveTime = this.$element.data('dragging') ? 1000 / 60 : this.options.moveTime;
Object(_foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__["Move"])(moveTime, $hndl, function() {
// adjusting the left/top property of the handle, based on the percentage calculated above
// if movement isNaN, that is because the slider is hidden and we cannot determine handle width,
// fall back to next best guess.
if (isNaN(movement)) {
$hndl.css(lOrT, "".concat(pctOfBar * 100, "%"));
} else {
$hndl.css(lOrT, "".concat(movement, "%"));
}
if (!_this.options.doubleSided) {
//if single-handled, a simple method to expand the fill bar
_this.$fill.css(hOrW, "".concat(pctOfBar * 100, "%"));
} else {
//otherwise, use the css object we created above
_this.$fill.css(css);
}
});
/**
* Fires when the value has not been change for a given time.
* @event Slider#changed
*/
clearTimeout(_this.timeout);
_this.timeout = setTimeout(function() {
_this.$element.trigger('changed.zf.slider', [$hndl]);
}, _this.options.changedDelay);
}
/**
* Sets the initial attribute for the slider element.
* @function
* @private
* @param {Number} idx - index of the current handle/input to use.
*/
}, {
key: "_setInitAttr",
value: function _setInitAttr(idx) {
var initVal = idx === 0 ? this.options.initialStart : this.options.initialEnd;
var id = this.inputs.eq(idx).attr('id') || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["GetYoDigits"])(6, 'slider');
this.inputs.eq(idx).attr({
'id': id,
'max': this.options.end,
'min': this.options.start,
'step': this.options.step
});
this.inputs.eq(idx).val(initVal);
this.handles.eq(idx).attr({
'role': 'slider',
'aria-controls': id,
'aria-valuemax': this.options.end,
'aria-valuemin': this.options.start,
'aria-valuenow': initVal,
'aria-orientation': this.options.vertical ? 'vertical' : 'horizontal',
'tabindex': 0
});
}
/**
* Sets the input and `aria-valuenow` values for the slider element.
* @function
* @private
* @param {jQuery} $handle - the currently selected handle.
* @param {Number} val - floating point of the new value.
*/
}, {
key: "_setValues",
value: function _setValues($handle, val) {
var idx = this.options.doubleSided ? this.handles.index($handle) : 0;
this.inputs.eq(idx).val(val);
$handle.attr('aria-valuenow', val);
}
/**
* Handles events on the slider element.
* Calculates the new location of the current handle.
* If there are two handles and the bar was clicked, it determines which handle to move.
* @function
* @private
* @param {Object} e - the `event` object passed from the listener.
* @param {jQuery} $handle - the current handle to calculate for, if selected.
* @param {Number} val - floating point number for the new value of the slider.
* TODO clean this up, there's a lot of repeated code between this and the _setHandlePos fn.
*/
}, {
key: "_handleEvent",
value: function _handleEvent(e, $handle, val) {
var value, hasVal;
if (!val) {
//click or drag events
e.preventDefault();
var _this = this,
vertical = this.options.vertical,
param = vertical ? 'height' : 'width',
direction = vertical ? 'top' : 'left',
eventOffset = vertical ? e.pageY : e.pageX,
halfOfHandle = this.$handle[0].getBoundingClientRect()[param] / 2,
barDim = this.$element[0].getBoundingClientRect()[param],
windowScroll = vertical ? jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).scrollTop() : jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).scrollLeft();
var elemOffset = this.$element.offset()[direction]; // touch events emulated by the touch util give position relative to screen, add window.scroll to event coordinates...
// best way to guess this is simulated is if clientY == pageY
if (e.clientY === e.pageY) {
eventOffset = eventOffset + windowScroll;
}
var eventFromBar = eventOffset - elemOffset;
var barXY;
if (eventFromBar < 0) {
barXY = 0;
} else if (eventFromBar > barDim) {
barXY = barDim;
} else {
barXY = eventFromBar;
}
var offsetPct = percent(barXY, barDim);
value = this._value(offsetPct); // turn everything around for RTL, yay math!
if (Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["rtl"])() && !this.options.vertical) {
value = this.options.end - value;
}
value = _this._adjustValue(null, value); //boolean flag for the setHandlePos fn, specifically for vertical sliders
hasVal = false;
if (!$handle) {
//figure out which handle it is, pass it to the next function.
var firstHndlPos = absPosition(this.$handle, direction, barXY, param),
secndHndlPos = absPosition(this.$handle2, direction, barXY, param);
$handle = firstHndlPos <= secndHndlPos ? this.$handle : this.$handle2;
}
} else {
//change event on input
value = this._adjustValue(null, val);
hasVal = true;
}
this._setHandlePos($handle, value, hasVal);
}
/**
* Adjustes value for handle in regard to step value. returns adjusted value
* @function
* @private
* @param {jQuery} $handle - the selected handle.
* @param {Number} value - value to adjust. used if $handle is falsy
*/
}, {
key: "_adjustValue",
value: function _adjustValue($handle, value) {
var val,
step = this.options.step,
div = parseFloat(step / 2),
left,
prev_val,
next_val;
if (!!$handle) {
val = parseFloat($handle.attr('aria-valuenow'));
} else {
val = value;
}
if (val >= 0) {
left = val % step;
} else {
left = step + val % step;
}
prev_val = val - left;
next_val = prev_val + step;
if (left === 0) {
return val;
}
val = val >= prev_val + div ? next_val : prev_val;
return val;
}
/**
* Adds event listeners to the slider elements.
* @function
* @private
*/
}, {
key: "_events",
value: function _events() {
this._eventsForHandle(this.$handle);
if (this.handles[1]) {
this._eventsForHandle(this.$handle2);
}
}
/**
* Adds event listeners a particular handle
* @function
* @private
* @param {jQuery} $handle - the current handle to apply listeners to.
*/
}, {
key: "_eventsForHandle",
value: function _eventsForHandle($handle) {
var _this = this,
curHandle,
timer;
var handleChangeEvent = function handleChangeEvent(e) {
var idx = _this.inputs.index(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this));
_this._handleEvent(e, _this.handles.eq(idx), jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).val());
}; // IE only triggers the change event when the input loses focus which strictly follows the HTML specification
// listen for the enter key and trigger a change
// @see https://html.spec.whatwg.org/multipage/input.html#common-input-element-events
this.inputs.off('keyup.zf.slider').on('keyup.zf.slider', function(e) {
if (e.keyCode == 13) handleChangeEvent.call(this, e);
});
this.inputs.off('change.zf.slider').on('change.zf.slider', handleChangeEvent);
if (this.options.clickSelect) {
this.$element.off('click.zf.slider').on('click.zf.slider', function(e) {
if (_this.$element.data('dragging')) {
return false;
}
if (!jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.target).is('[data-slider-handle]')) {
if (_this.options.doubleSided) {
_this._handleEvent(e);
} else {
_this._handleEvent(e, _this.$handle);
}
}
});
}
if (this.options.draggable) {
this.handles.addTouch();
var $body = jquery__WEBPACK_IMPORTED_MODULE_0___default()('body');
$handle.off('mousedown.zf.slider').on('mousedown.zf.slider', function(e) {
$handle.addClass('is-dragging');
_this.$fill.addClass('is-dragging'); //
_this.$element.data('dragging', true);
curHandle = jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.currentTarget);
$body.on('mousemove.zf.slider', function(e) {
e.preventDefault();
_this._handleEvent(e, curHandle);
}).on('mouseup.zf.slider', function(e) {
_this._handleEvent(e, curHandle);
$handle.removeClass('is-dragging');
_this.$fill.removeClass('is-dragging');
_this.$element.data('dragging', false);
$body.off('mousemove.zf.slider mouseup.zf.slider');
});
}) // prevent events triggered by touch
.on('selectstart.zf.slider touchmove.zf.slider', function(e) {
e.preventDefault();
});
}
$handle.off('keydown.zf.slider').on('keydown.zf.slider', function(e) {
var _$handle = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),
idx = _this.options.doubleSided ? _this.handles.index(_$handle) : 0,
oldValue = parseFloat(_this.inputs.eq(idx).val()),
newValue; // handle keyboard event with keyboard util
_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].handleKey(e, 'Slider', {
decrease: function decrease() {
newValue = oldValue - _this.options.step;
},
increase: function increase() {
newValue = oldValue + _this.options.step;
},
decrease_fast: function decrease_fast() {
newValue = oldValue - _this.options.step * 10;
},
increase_fast: function increase_fast() {
newValue = oldValue + _this.options.step * 10;
},
min: function min() {
newValue = _this.options.start;
},
max: function max() {
newValue = _this.options.end;
},
handled: function handled() {
// only set handle pos when event was handled specially
e.preventDefault();
_this._setHandlePos(_$handle, newValue, true);
}
});
/*if (newValue) { // if pressed key has special function, update value
e.preventDefault();
_this._setHandlePos(_$handle, newValue);
}*/
});
}
/**
* Destroys the slider plugin.
*/
}, {
key: "_destroy",
value: function _destroy() {
this.handles.off('.zf.slider');
this.inputs.off('.zf.slider');
this.$element.off('.zf.slider');
clearTimeout(this.timeout);
}
}]);
return Slider;
}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_4__["Plugin"]);
Slider.defaults = {
/**
* Minimum value for the slider scale.
* @option
* @type {number}
* @default 0
*/
start: 0,
/**
* Maximum value for the slider scale.
* @option
* @type {number}
* @default 100
*/
end: 100,
/**
* Minimum value change per change event.
* @option
* @type {number}
* @default 1
*/
step: 1,
/**
* Value at which the handle/input *(left handle/first input)* should be set to on initialization.
* @option
* @type {number}
* @default 0
*/
initialStart: 0,
/**
* Value at which the right handle/second input should be set to on initialization.
* @option
* @type {number}
* @default 100
*/
initialEnd: 100,
/**
* Allows the input to be located outside the container and visible. Set to by the JS
* @option
* @type {boolean}
* @default false
*/
binding: false,
/**
* Allows the user to click/tap on the slider bar to select a value.
* @option
* @type {boolean}
* @default true
*/
clickSelect: true,
/**
* Set to true and use the `vertical` class to change alignment to vertical.
* @option
* @type {boolean}
* @default false
*/
vertical: false,
/**
* Allows the user to drag the slider handle(s) to select a value.
* @option
* @type {boolean}
* @default true
*/
draggable: true,
/**
* Disables the slider and prevents event listeners from being applied. Double checked by JS with `disabledClass`.
* @option
* @type {boolean}
* @default false
*/
disabled: false,
/**
* Allows the use of two handles. Double checked by the JS. Changes some logic handling.
* @option
* @type {boolean}
* @default false
*/
doubleSided: false,
/**
* Potential future feature.
*/
// steps: 100,
/**
* Number of decimal places the plugin should go to for floating point precision.
* @option
* @type {number}
* @default 2
*/
decimal: 2,
/**
* Time delay for dragged elements.
*/
// dragDelay: 0,
/**
* Time, in ms, to animate the movement of a slider handle if user clicks/taps on the bar. Needs to be manually set if updating the transition time in the Sass settings.
* @option
* @type {number}
* @default 200
*/
moveTime: 200,
//update this if changing the transition time in the sass
/**
* Class applied to disabled sliders.
* @option
* @type {string}
* @default 'disabled'
*/
disabledClass: 'disabled',
/**
* Will invert the default layout for a vertical<span data-tooltip title="who would do this???"> </span>slider.
* @option
* @type {boolean}
* @default false
*/
invertVertical: false,
/**
* Milliseconds before the `changed.zf-slider` event is triggered after value change.
* @option
* @type {number}
* @default 500
*/
changedDelay: 500,
/**
* Basevalue for non-linear sliders
* @option
* @type {number}
* @default 5
*/
nonLinearBase: 5,
/**
* Basevalue for non-linear sliders, possible values are: `'linear'`, `'pow'` & `'log'`. Pow and Log use the nonLinearBase setting.
* @option
* @type {string}
* @default 'linear'
*/
positionValueFunction: 'linear'
};
function percent(frac, num) {
return frac / num;
}
function absPosition($handle, dir, clickPos, param) {
return Math.abs($handle.position()[dir] + $handle[param]() / 2 - clickPos);
}
function baseLog(base, value) {
return Math.log(value) / Math.log(base);
}
//# sourceURL=webpack:///./js/foundation.slider.js?
|
#21 JavaScript::Eval (size: 25833, repeated: 1) - SHA256: 29df41c4ea7bfc4d1756ce5f56b8237095dabd316d6683560f8f97166ef93afd
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */
__webpack_require__.d(__webpack_exports__, "Reveal", function() {
return Reveal;
});
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! jquery */ "jquery");
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */
var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
/* harmony import */
var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! ./foundation.util.keyboard */ "./js/foundation.util.keyboard.js");
/* harmony import */
var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! ./foundation.util.mediaQuery */ "./js/foundation.util.mediaQuery.js");
/* harmony import */
var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( /*! ./foundation.util.motion */ "./js/foundation.util.motion.js");
/* harmony import */
var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__( /*! ./foundation.core.plugin */ "./js/foundation.core.plugin.js");
/* harmony import */
var _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__( /*! ./foundation.util.triggers */ "./js/foundation.util.triggers.js");
function _typeof(obj) {
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function _typeof(obj) {
return typeof obj;
};
} else {
_typeof = function _typeof(obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
return _typeof(obj);
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a 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);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
function _possibleConstructorReturn(self, call) {
if (call && (_typeof(call) === "object" || typeof call === "function")) {
return call;
}
return _assertThisInitialized(self);
}
function _assertThisInitialized(self) {
if (self === void 0) {
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}
return self;
}
function _getPrototypeOf(o) {
_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
return o.__proto__ || Object.getPrototypeOf(o);
};
return _getPrototypeOf(o);
}
function _inherits(subClass, superClass) {
if (typeof superClass !== "function" && superClass !== null) {
throw new TypeError("Super expression must either be null or a function");
}
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
writable: true,
configurable: true
}
});
if (superClass) _setPrototypeOf(subClass, superClass);
}
function _setPrototypeOf(o, p) {
_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
o.__proto__ = p;
return o;
};
return _setPrototypeOf(o, p);
}
/**
* Reveal module.
* @module foundation.reveal
* @requires foundation.util.keyboard
* @requires foundation.util.triggers
* @requires foundation.util.mediaQuery
* @requires foundation.util.motion if using animations
*/
var Reveal =
/*#__PURE__*/
function(_Plugin) {
_inherits(Reveal, _Plugin);
function Reveal() {
_classCallCheck(this, Reveal);
return _possibleConstructorReturn(this, _getPrototypeOf(Reveal).apply(this, arguments));
}
_createClass(Reveal, [{
key: "_setup",
/**
* Creates a new instance of Reveal.
* @class
* @name Reveal
* @param {jQuery} element - jQuery object to use for the modal.
* @param {Object} options - optional parameters.
*/
value: function _setup(element, options) {
this.$element = element;
this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, Reveal.defaults, this.$element.data(), options);
this.className = 'Reveal'; // ie9 back compat
this._init(); // Triggers init is idempotent, just need to make sure it is initialized
_foundation_util_triggers__WEBPACK_IMPORTED_MODULE_6__["Triggers"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a);
_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].register('Reveal', {
'ESCAPE': 'close'
});
}
/**
* Initializes the modal by adding the overlay and close buttons, (if selected).
* @private
*/
}, {
key: "_init",
value: function _init() {
var _this2 = this;
_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_3__["MediaQuery"]._init();
this.id = this.$element.attr('id');
this.isActive = false;
this.cached = {
mq: _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_3__["MediaQuery"].current
};
this.$anchor = jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-open=\"".concat(this.id, "\"]")).length ? jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-open=\"".concat(this.id, "\"]")) : jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-toggle=\"".concat(this.id, "\"]"));
this.$anchor.attr({
'aria-controls': this.id,
'aria-haspopup': true,
'tabindex': 0
});
if (this.options.fullScreen || this.$element.hasClass('full')) {
this.options.fullScreen = true;
this.options.overlay = false;
}
if (this.options.overlay && !this.$overlay) {
this.$overlay = this._makeOverlay(this.id);
}
this.$element.attr({
'role': 'dialog',
'aria-hidden': true,
'data-yeti-box': this.id,
'data-resize': this.id
});
if (this.$overlay) {
this.$element.detach().appendTo(this.$overlay);
} else {
this.$element.detach().appendTo(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this.options.appendTo));
this.$element.addClass('without-overlay');
}
this._events();
if (this.options.deepLink && window.location.hash === "#".concat(this.id)) {
this.onLoadListener = Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["onLoad"])(jquery__WEBPACK_IMPORTED_MODULE_0___default()(window), function() {
return _this2.open();
});
}
}
/**
* Creates an overlay div to display behind the modal.
* @private
*/
}, {
key: "_makeOverlay",
value: function _makeOverlay() {
var additionalOverlayClasses = '';
if (this.options.additionalOverlayClasses) {
additionalOverlayClasses = ' ' + this.options.additionalOverlayClasses;
}
return jquery__WEBPACK_IMPORTED_MODULE_0___default()('<div></div>').addClass('reveal-overlay' + additionalOverlayClasses).appendTo(this.options.appendTo);
}
/**
* Updates position of modal
* TODO: Figure out if we actually need to cache these values or if it doesn't matter
* @private
*/
}, {
key: "_updatePosition",
value: function _updatePosition() {
var width = this.$element.outerWidth();
var outerWidth = jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).width();
var height = this.$element.outerHeight();
var outerHeight = jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).height();
var left,
top = null;
if (this.options.hOffset === 'auto') {
left = parseInt((outerWidth - width) / 2, 10);
} else {
left = parseInt(this.options.hOffset, 10);
}
if (this.options.vOffset === 'auto') {
if (height > outerHeight) {
top = parseInt(Math.min(100, outerHeight / 10), 10);
} else {
top = parseInt((outerHeight - height) / 4, 10);
}
} else if (this.options.vOffset !== null) {
top = parseInt(this.options.vOffset, 10);
}
if (top !== null) {
this.$element.css({
top: top + 'px'
});
} // only worry about left if we don't have an overlay or we have a horizontal offset,
// otherwise we're perfectly in the middle
if (!this.$overlay || this.options.hOffset !== 'auto') {
this.$element.css({
left: left + 'px'
});
this.$element.css({
margin: '0px'
});
}
}
/**
* Adds event handlers for the modal.
* @private
*/
}, {
key: "_events",
value: function _events() {
var _this3 = this;
var _this = this;
this.$element.on({
'open.zf.trigger': this.open.bind(this),
'close.zf.trigger': function closeZfTrigger(event, $element) {
if (event.target === _this.$element[0] || jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.target).parents('[data-closable]')[0] === $element) {
// only close reveal when it's explicitly called
return _this3.close.apply(_this3);
}
},
'toggle.zf.trigger': this.toggle.bind(this),
'resizeme.zf.trigger': function resizemeZfTrigger() {
_this._updatePosition();
}
});
if (this.options.closeOnClick && this.options.overlay) {
this.$overlay.off('.zf.reveal').on('click.zf.reveal', function(e) {
if (e.target === _this.$element[0] || jquery__WEBPACK_IMPORTED_MODULE_0___default.a.contains(_this.$element[0], e.target) || !jquery__WEBPACK_IMPORTED_MODULE_0___default.a.contains(document, e.target)) {
return;
}
_this.close();
});
}
if (this.options.deepLink) {
jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on("hashchange.zf.reveal:".concat(this.id), this._handleState.bind(this));
}
}
/**
* Handles modal methods on back/forward button clicks or any other event that triggers hashchange.
* @private
*/
}, {
key: "_handleState",
value: function _handleState(e) {
if (window.location.hash === '#' + this.id && !this.isActive) {
this.open();
} else {
this.close();
}
}
/**
* Disables the scroll when Reveal is shown to prevent the background from shifting
* @param {number} scrollTop - Scroll to visually apply, window current scroll by default
*/
}, {
key: "_disableScroll",
value: function _disableScroll(scrollTop) {
scrollTop = scrollTop || jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).scrollTop();
if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).height() > jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).height()) {
jquery__WEBPACK_IMPORTED_MODULE_0___default()("html").css("top", -scrollTop);
}
}
/**
* Reenables the scroll when Reveal closes
* @param {number} scrollTop - Scroll to restore, html "top" property by default (as set by `_disableScroll`)
*/
}, {
key: "_enableScroll",
value: function _enableScroll(scrollTop) {
scrollTop = scrollTop || parseInt(jquery__WEBPACK_IMPORTED_MODULE_0___default()("html").css("top"));
if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).height() > jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).height()) {
jquery__WEBPACK_IMPORTED_MODULE_0___default()("html").css("top", "");
jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).scrollTop(-scrollTop);
}
}
/**
* Opens the modal controlled by `this.$anchor`, and closes all others by default.
* @function
* @fires Reveal#closeme
* @fires Reveal#open
*/
}, {
key: "open",
value: function open() {
var _this4 = this;
// either update or replace browser history
var hash = "#".concat(this.id);
if (this.options.deepLink && window.location.hash !== hash) {
if (window.history.pushState) {
if (this.options.updateHistory) {
window.history.pushState({}, '', hash);
} else {
window.history.replaceState({}, '', hash);
}
} else {
window.location.hash = hash;
}
} // Remember anchor that opened it to set focus back later, have general anchors as fallback
this.$activeAnchor = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.activeElement).is(this.$anchor) ? jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.activeElement) : this.$anchor;
this.isActive = true; // Make elements invisible, but remove display: none so we can get size and positioning
this.$element.css({
'visibility': 'hidden'
}).show().scrollTop(0);
if (this.options.overlay) {
this.$overlay.css({
'visibility': 'hidden'
}).show();
}
this._updatePosition();
this.$element.hide().css({
'visibility': ''
});
if (this.$overlay) {
this.$overlay.css({
'visibility': ''
}).hide();
if (this.$element.hasClass('fast')) {
this.$overlay.addClass('fast');
} else if (this.$element.hasClass('slow')) {
this.$overlay.addClass('slow');
}
}
if (!this.options.multipleOpened) {
/**
* Fires immediately before the modal opens.
* Closes any other modals that are currently open
* @event Reveal#closeme
*/
this.$element.trigger('closeme.zf.reveal', this.id);
}
this._disableScroll();
var _this = this; // Motion UI method of reveal
if (this.options.animationIn) {
var afterAnimation = function afterAnimation() {
_this.$element.attr({
'aria-hidden': false,
'tabindex': -1
}).focus();
_this._addGlobalClasses();
_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].trapFocus(_this.$element);
};
if (this.options.overlay) {
_foundation_util_motion__WEBPACK_IMPORTED_MODULE_4__["Motion"].animateIn(this.$overlay, 'fade-in');
}
_foundation_util_motion__WEBPACK_IMPORTED_MODULE_4__["Motion"].animateIn(this.$element, this.options.animationIn, function() {
if (_this4.$element) {
// protect against object having been removed
_this4.focusableElements = _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].findFocusable(_this4.$element);
afterAnimation();
}
});
} // jQuery method of reveal
else {
if (this.options.overlay) {
this.$overlay.show(0);
}
this.$element.show(this.options.showDelay);
} // handle accessibility
this.$element.attr({
'aria-hidden': false,
'tabindex': -1
}).focus();
_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].trapFocus(this.$element);
this._addGlobalClasses();
this._addGlobalListeners();
/**
* Fires when the modal has successfully opened.
* @event Reveal#open
*/
this.$element.trigger('open.zf.reveal');
}
/**
* Adds classes and listeners on document required by open modals.
*
* The following classes are added and updated:
* - `.is-reveal-open` - Prevents the scroll on document
* - `.zf-has-scroll` - Displays a disabled scrollbar on document if required like if the
* scroll was not disabled. This prevent a "shift" of the page content due
* the scrollbar disappearing when the modal opens.
*
* @private
*/
}, {
key: "_addGlobalClasses",
value: function _addGlobalClasses() {
var updateScrollbarClass = function updateScrollbarClass() {
jquery__WEBPACK_IMPORTED_MODULE_0___default()('html').toggleClass('zf-has-scroll', !!(jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).height() > jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).height()));
};
this.$element.on('resizeme.zf.trigger.revealScrollbarListener', function() {
return updateScrollbarClass();
});
updateScrollbarClass();
jquery__WEBPACK_IMPORTED_MODULE_0___default()('html').addClass('is-reveal-open');
}
/**
* Removes classes and listeners on document that were required by open modals.
* @private
*/
}, {
key: "_removeGlobalClasses",
value: function _removeGlobalClasses() {
this.$element.off('resizeme.zf.trigger.revealScrollbarListener');
jquery__WEBPACK_IMPORTED_MODULE_0___default()('html').removeClass('is-reveal-open');
jquery__WEBPACK_IMPORTED_MODULE_0___default()('html').removeClass('zf-has-scroll');
}
/**
* Adds extra event handlers for the body and window if necessary.
* @private
*/
}, {
key: "_addGlobalListeners",
value: function _addGlobalListeners() {
var _this = this;
if (!this.$element) {
return;
} // If we're in the middle of cleanup, don't freak out
this.focusableElements = _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].findFocusable(this.$element);
if (!this.options.overlay && this.options.closeOnClick && !this.options.fullScreen) {
jquery__WEBPACK_IMPORTED_MODULE_0___default()('body').on('click.zf.reveal', function(e) {
if (e.target === _this.$element[0] || jquery__WEBPACK_IMPORTED_MODULE_0___default.a.contains(_this.$element[0], e.target) || !jquery__WEBPACK_IMPORTED_MODULE_0___default.a.contains(document, e.target)) {
return;
}
_this.close();
});
}
if (this.options.closeOnEsc) {
jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('keydown.zf.reveal', function(e) {
_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].handleKey(e, 'Reveal', {
close: function close() {
if (_this.options.closeOnEsc) {
_this.close();
}
}
});
});
}
}
/**
* Closes the modal.
* @function
* @fires Reveal#closed
*/
}, {
key: "close",
value: function close() {
if (!this.isActive || !this.$element.is(':visible')) {
return false;
}
var _this = this; // Motion UI method of hiding
if (this.options.animationOut) {
if (this.options.overlay) {
_foundation_util_motion__WEBPACK_IMPORTED_MODULE_4__["Motion"].animateOut(this.$overlay, 'fade-out');
}
_foundation_util_motion__WEBPACK_IMPORTED_MODULE_4__["Motion"].animateOut(this.$element, this.options.animationOut, finishUp);
} // jQuery method of hiding
else {
this.$element.hide(this.options.hideDelay);
if (this.options.overlay) {
this.$overlay.hide(0, finishUp);
} else {
finishUp();
}
} // Conditionals to remove extra event listeners added on open
if (this.options.closeOnEsc) {
jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off('keydown.zf.reveal');
}
if (!this.options.overlay && this.options.closeOnClick) {
jquery__WEBPACK_IMPORTED_MODULE_0___default()('body').off('click.zf.reveal');
}
this.$element.off('keydown.zf.reveal');
function finishUp() {
// Get the current top before the modal is closed and restore the scroll after.
// TODO: use component properties instead of HTML properties
// See https://github.com/zurb/foundation-sites/pull/10786
var scrollTop = parseInt(jquery__WEBPACK_IMPORTED_MODULE_0___default()("html").css("top"));
if (jquery__WEBPACK_IMPORTED_MODULE_0___default()('.reveal:visible').length === 0) {
_this._removeGlobalClasses(); // also remove .is-reveal-open from the html element when there is no opened reveal
}
_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].releaseFocus(_this.$element);
_this.$element.attr('aria-hidden', true);
_this._enableScroll(scrollTop);
/**
* Fires when the modal is done closing.
* @event Reveal#closed
*/
_this.$element.trigger('closed.zf.reveal');
}
/**
* Resets the modal content
* This prevents a running video to keep going in the background
*/
if (this.options.resetOnClose) {
this.$element.html(this.$element.html());
}
this.isActive = false; // If deepLink and we did not switched to an other modal...
if (_this.options.deepLink && window.location.hash === "#".concat(this.id)) {
// Remove the history hash
if (window.history.replaceState) {
var urlWithoutHash = window.location.pathname + window.location.search;
if (this.options.updateHistory) {
window.history.pushState({}, '', urlWithoutHash); // remove the hash
} else {
window.history.replaceState('', document.title, urlWithoutHash);
}
} else {
window.location.hash = '';
}
}
this.$activeAnchor.focus();
}
/**
* Toggles the open/closed state of a modal.
* @function
*/
}, {
key: "toggle",
value: function toggle() {
if (this.isActive) {
this.close();
} else {
this.open();
}
}
}, {
key: "_destroy",
/**
* Destroys an instance of a modal.
* @function
*/
value: function _destroy() {
if (this.options.overlay) {
this.$element.appendTo(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this.options.appendTo)); // move $element outside of $overlay to prevent error unregisterPlugin()
this.$overlay.hide().off().remove();
}
this.$element.hide().off();
this.$anchor.off('.zf');
jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(".zf.reveal:".concat(this.id));
if (this.onLoadListener) jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(this.onLoadListener);
if (jquery__WEBPACK_IMPORTED_MODULE_0___default()('.reveal:visible').length === 0) {
this._removeGlobalClasses(); // also remove .is-reveal-open from the html element when there is no opened reveal
}
}
}]);
return Reveal;
}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_5__["Plugin"]);
Reveal.defaults = {
/**
* Motion-UI class to use for animated elements. If none used, defaults to simple show/hide.
* @option
* @type {string}
* @default ''
*/
animationIn: '',
/**
* Motion-UI class to use for animated elements. If none used, defaults to simple show/hide.
* @option
* @type {string}
* @default ''
*/
animationOut: '',
/**
* Time, in ms, to delay the opening of a modal after a click if no animation used.
* @option
* @type {number}
* @default 0
*/
showDelay: 0,
/**
* Time, in ms, to delay the closing of a modal after a click if no animation used.
* @option
* @type {number}
* @default 0
*/
hideDelay: 0,
/**
* Allows a click on the body/overlay to close the modal.
* @option
* @type {boolean}
* @default true
*/
closeOnClick: true,
/**
* Allows the modal to close if the user presses the `ESCAPE` key.
* @option
* @type {boolean}
* @default true
*/
closeOnEsc: true,
/**
* If true, allows multiple modals to be displayed at once.
* @option
* @type {boolean}
* @default false
*/
multipleOpened: false,
/**
* Distance, in pixels, the modal should push down from the top of the screen.
* @option
* @type {number|string}
* @default auto
*/
vOffset: 'auto',
/**
* Distance, in pixels, the modal should push in from the side of the screen.
* @option
* @type {number|string}
* @default auto
*/
hOffset: 'auto',
/**
* Allows the modal to be fullscreen, completely blocking out the rest of the view. JS checks for this as well.
* @option
* @type {boolean}
* @default false
*/
fullScreen: false,
/**
* Allows the modal to generate an overlay div, which will cover the view when modal opens.
* @option
* @type {boolean}
* @default true
*/
overlay: true,
/**
* Allows the modal to remove and reinject markup on close. Should be true if using video elements w/o using provider's api, otherwise, videos will continue to play in the background.
* @option
* @type {boolean}
* @default false
*/
resetOnClose: false,
/**
* Link the location hash to the modal.
* Set the location hash when the modal is opened/closed, and open/close the modal when the location changes.
* @option
* @type {boolean}
* @default false
*/
deepLink: false,
/**
* If `deepLink` is enabled, update the browser history with the open modal
* @option
* @default false
*/
updateHistory: false,
/**
* Allows the modal to append to custom div.
* @option
* @type {string}
* @default "body"
*/
appendTo: "body",
/**
* Allows adding additional class names to the reveal overlay.
* @option
* @type {string}
* @default ''
*/
additionalOverlayClasses: ''
};
//# sourceURL=webpack:///./js/foundation.reveal.js?
|
#22 JavaScript::Eval (size: 12718, repeated: 1) - SHA256: 4be7185a4db075b72d4d74af3b381ad9e8a18dc55f064cbd64e3bc931f02961c
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */
__webpack_require__.d(__webpack_exports__, "Magellan", function() {
return Magellan;
});
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! jquery */ "jquery");
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */
var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
/* harmony import */
var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! ./foundation.core.plugin */ "./js/foundation.core.plugin.js");
/* harmony import */
var _foundation_smoothScroll__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! ./foundation.smoothScroll */ "./js/foundation.smoothScroll.js");
function _typeof(obj) {
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function _typeof(obj) {
return typeof obj;
};
} else {
_typeof = function _typeof(obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
return _typeof(obj);
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a 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);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
function _possibleConstructorReturn(self, call) {
if (call && (_typeof(call) === "object" || typeof call === "function")) {
return call;
}
return _assertThisInitialized(self);
}
function _assertThisInitialized(self) {
if (self === void 0) {
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}
return self;
}
function _getPrototypeOf(o) {
_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
return o.__proto__ || Object.getPrototypeOf(o);
};
return _getPrototypeOf(o);
}
function _inherits(subClass, superClass) {
if (typeof superClass !== "function" && superClass !== null) {
throw new TypeError("Super expression must either be null or a function");
}
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
writable: true,
configurable: true
}
});
if (superClass) _setPrototypeOf(subClass, superClass);
}
function _setPrototypeOf(o, p) {
_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
o.__proto__ = p;
return o;
};
return _setPrototypeOf(o, p);
}
/**
* Magellan module.
* @module foundation.magellan
* @requires foundation.smoothScroll
*/
var Magellan =
/*#__PURE__*/
function(_Plugin) {
_inherits(Magellan, _Plugin);
function Magellan() {
_classCallCheck(this, Magellan);
return _possibleConstructorReturn(this, _getPrototypeOf(Magellan).apply(this, arguments));
}
_createClass(Magellan, [{
key: "_setup",
/**
* Creates a new instance of Magellan.
* @class
* @name Magellan
* @fires Magellan#init
* @param {Object} element - jQuery object to add the trigger to.
* @param {Object} options - Overrides to the default plugin settings.
*/
value: function _setup(element, options) {
this.$element = element;
this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, Magellan.defaults, this.$element.data(), options);
this.className = 'Magellan'; // ie9 back compat
this._init();
this.calcPoints();
}
/**
* Initializes the Magellan plugin and calls functions to get equalizer functioning on load.
* @private
*/
}, {
key: "_init",
value: function _init() {
var id = this.$element[0].id || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["GetYoDigits"])(6, 'magellan');
var _this = this;
this.$targets = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-magellan-target]');
this.$links = this.$element.find('a');
this.$element.attr({
'data-resize': id,
'data-scroll': id,
'id': id
});
this.$active = jquery__WEBPACK_IMPORTED_MODULE_0___default()();
this.scrollPos = parseInt(window.pageYOffset, 10);
this._events();
}
/**
* Calculates an array of pixel values that are the demarcation lines between locations on the page.
* Can be invoked if new elements are added or the size of a location changes.
* @function
*/
}, {
key: "calcPoints",
value: function calcPoints() {
var _this = this,
body = document.body,
html = document.documentElement;
this.points = [];
this.winHeight = Math.round(Math.max(window.innerHeight, html.clientHeight));
this.docHeight = Math.round(Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight));
this.$targets.each(function() {
var $tar = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),
pt = Math.round($tar.offset().top - _this.options.threshold);
$tar.targetPoint = pt;
_this.points.push(pt);
});
}
/**
* Initializes events for Magellan.
* @private
*/
}, {
key: "_events",
value: function _events() {
var _this = this,
$body = jquery__WEBPACK_IMPORTED_MODULE_0___default()('html, body'),
opts = {
duration: _this.options.animationDuration,
easing: _this.options.animationEasing
};
jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).one('load', function() {
if (_this.options.deepLinking) {
if (location.hash) {
_this.scrollToLoc(location.hash);
}
}
_this.calcPoints();
_this._updateActive();
});
_this.onLoadListener = Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["onLoad"])(jquery__WEBPACK_IMPORTED_MODULE_0___default()(window), function() {
_this.$element.on({
'resizeme.zf.trigger': _this.reflow.bind(_this),
'scrollme.zf.trigger': _this._updateActive.bind(_this)
}).on('click.zf.magellan', 'a[href^="#"]', function(e) {
e.preventDefault();
var arrival = this.getAttribute('href');
_this.scrollToLoc(arrival);
});
});
this._deepLinkScroll = function(e) {
if (_this.options.deepLinking) {
_this.scrollToLoc(window.location.hash);
}
};
jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('hashchange', this._deepLinkScroll);
}
/**
* Function to scroll to a given location on the page.
* @param {String} loc - a properly formatted jQuery id selector. Example: '#foo'
* @function
*/
}, {
key: "scrollToLoc",
value: function scrollToLoc(loc) {
this._inTransition = true;
var _this = this;
var options = {
animationEasing: this.options.animationEasing,
animationDuration: this.options.animationDuration,
threshold: this.options.threshold,
offset: this.options.offset
};
_foundation_smoothScroll__WEBPACK_IMPORTED_MODULE_3__["SmoothScroll"].scrollToLoc(loc, options, function() {
_this._inTransition = false;
});
}
/**
* Calls necessary functions to update Magellan upon DOM change
* @function
*/
}, {
key: "reflow",
value: function reflow() {
this.calcPoints();
this._updateActive();
}
/**
* Updates the visibility of an active location link, and updates the url hash for the page, if deepLinking enabled.
* @private
* @function
* @fires Magellan#update
*/
}, {
key: "_updateActive",
value: function _updateActive()
/*evt, elem, scrollPos*/
{
var _this2 = this;
if (this._inTransition) return;
var newScrollPos = parseInt(window.pageYOffset, 10);
var isScrollingUp = this.scrollPos > newScrollPos;
this.scrollPos = newScrollPos;
var activeIdx; // Before the first point: no link
if (newScrollPos < this.points[0]) {}
/* do nothing */
// At the bottom of the page: last link
else if (newScrollPos + this.winHeight === this.docHeight) {
activeIdx = this.points.length - 1;
} // Otherwhise, use the last visible link
else {
var visibleLinks = this.points.filter(function(p, i) {
return p - _this2.options.offset - (isScrollingUp ? _this2.options.threshold : 0) <= newScrollPos;
});
activeIdx = visibleLinks.length ? visibleLinks.length - 1 : 0;
} // Get the new active link
var $oldActive = this.$active;
var activeHash = '';
if (typeof activeIdx !== 'undefined') {
this.$active = this.$links.filter('[href="#' + this.$targets.eq(activeIdx).data('magellan-target') + '"]');
if (this.$active.length) activeHash = this.$active[0].getAttribute('href');
} else {
this.$active = jquery__WEBPACK_IMPORTED_MODULE_0___default()();
}
var isNewActive = !(!this.$active.length && !$oldActive.length) && !this.$active.is($oldActive);
var isNewHash = activeHash !== window.location.hash; // Update the active link element
if (isNewActive) {
$oldActive.removeClass(this.options.activeClass);
this.$active.addClass(this.options.activeClass);
} // Update the hash (it may have changed with the same active link)
if (this.options.deepLinking && isNewHash) {
if (window.history.pushState) {
// Set or remove the hash (see: https://stackoverflow.com/a/5298684/4317384
var url = activeHash ? activeHash : window.location.pathname + window.location.search;
window.history.pushState(null, null, url);
} else {
window.location.hash = activeHash;
}
}
if (isNewActive) {
/**
* Fires when magellan is finished updating to the new active element.
* @event Magellan#update
*/
this.$element.trigger('update.zf.magellan', [this.$active]);
}
}
/**
* Destroys an instance of Magellan and resets the url of the window.
* @function
*/
}, {
key: "_destroy",
value: function _destroy() {
this.$element.off('.zf.trigger .zf.magellan').find(".".concat(this.options.activeClass)).removeClass(this.options.activeClass);
if (this.options.deepLinking) {
var hash = this.$active[0].getAttribute('href');
window.location.hash.replace(hash, '');
}
jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off('hashchange', this._deepLinkScroll);
if (this.onLoadListener) jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(this.onLoadListener);
}
}]);
return Magellan;
}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2__["Plugin"]);
/**
* Default settings for plugin
*/
Magellan.defaults = {
/**
* Amount of time, in ms, the animated scrolling should take between locations.
* @option
* @type {number}
* @default 500
*/
animationDuration: 500,
/**
* Animation style to use when scrolling between locations. Can be `'swing'` or `'linear'`.
* @option
* @type {string}
* @default 'linear'
* @see {@link https://api.jquery.com/animate|Jquery animate}
*/
animationEasing: 'linear',
/**
* Number of pixels to use as a marker for location changes.
* @option
* @type {number}
* @default 50
*/
threshold: 50,
/**
* Class applied to the active locations link on the magellan container.
* @option
* @type {string}
* @default 'is-active'
*/
activeClass: 'is-active',
/**
* Allows the script to manipulate the url of the current page, and if supported, alter the history.
* @option
* @type {boolean}
* @default false
*/
deepLinking: false,
/**
* Number of pixels to offset the scroll of the page on item click if using a sticky nav bar.
* @option
* @type {number}
* @default 0
*/
offset: 0
};
//# sourceURL=webpack:///./js/foundation.magellan.js?
|
#23 JavaScript::Eval (size: 7574, repeated: 1) - SHA256: 43449a779a38a5d2e65bdb2a6543119b0aa6d66a74a16a0adefb0e41e37a73bf
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */
__webpack_require__.d(__webpack_exports__, "SmoothScroll", function() {
return SmoothScroll;
});
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! jquery */ "jquery");
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */
var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
/* harmony import */
var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! ./foundation.core.plugin */ "./js/foundation.core.plugin.js");
function _typeof(obj) {
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function _typeof(obj) {
return typeof obj;
};
} else {
_typeof = function _typeof(obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
return _typeof(obj);
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a 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);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
function _possibleConstructorReturn(self, call) {
if (call && (_typeof(call) === "object" || typeof call === "function")) {
return call;
}
return _assertThisInitialized(self);
}
function _assertThisInitialized(self) {
if (self === void 0) {
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}
return self;
}
function _getPrototypeOf(o) {
_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
return o.__proto__ || Object.getPrototypeOf(o);
};
return _getPrototypeOf(o);
}
function _inherits(subClass, superClass) {
if (typeof superClass !== "function" && superClass !== null) {
throw new TypeError("Super expression must either be null or a function");
}
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
writable: true,
configurable: true
}
});
if (superClass) _setPrototypeOf(subClass, superClass);
}
function _setPrototypeOf(o, p) {
_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
o.__proto__ = p;
return o;
};
return _setPrototypeOf(o, p);
}
/**
* SmoothScroll module.
* @module foundation.smooth-scroll
*/
var SmoothScroll =
/*#__PURE__*/
function(_Plugin) {
_inherits(SmoothScroll, _Plugin);
function SmoothScroll() {
_classCallCheck(this, SmoothScroll);
return _possibleConstructorReturn(this, _getPrototypeOf(SmoothScroll).apply(this, arguments));
}
_createClass(SmoothScroll, [{
key: "_setup",
/**
* Creates a new instance of SmoothScroll.
* @class
* @name SmoothScroll
* @fires SmoothScroll#init
* @param {Object} element - jQuery object to add the trigger to.
* @param {Object} options - Overrides to the default plugin settings.
*/
value: function _setup(element, options) {
this.$element = element;
this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, SmoothScroll.defaults, this.$element.data(), options);
this.className = 'SmoothScroll'; // ie9 back compat
this._init();
}
/**
* Initialize the SmoothScroll plugin
* @private
*/
}, {
key: "_init",
value: function _init() {
var id = this.$element[0].id || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["GetYoDigits"])(6, 'smooth-scroll');
this.$element.attr({
id: id
});
this._events();
}
/**
* Initializes events for SmoothScroll.
* @private
*/
}, {
key: "_events",
value: function _events() {
this.$element.on('click.zf.smoothScroll', this._handleLinkClick);
this.$element.on('click.zf.smoothScroll', 'a[href^="#"]', this._handleLinkClick);
}
/**
* Handle the given event to smoothly scroll to the anchor pointed by the event target.
* @param {*} e - event
* @function
* @private
*/
}, {
key: "_handleLinkClick",
value: function _handleLinkClick(e) {
var _this = this;
// Follow the link if it does not point to an anchor.
if (!jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.currentTarget).is('a[href^="#"]')) return;
var arrival = e.currentTarget.getAttribute('href');
this._inTransition = true;
SmoothScroll.scrollToLoc(arrival, this.options, function() {
_this._inTransition = false;
});
e.preventDefault();
}
}, {
key: "_destroy",
/**
* Destroys the SmoothScroll instance.
* @function
*/
value: function _destroy() {
this.$element.off('click.zf.smoothScroll', this._handleLinkClick);
this.$element.off('click.zf.smoothScroll', 'a[href^="#"]', this._handleLinkClick);
}
}], [{
key: "scrollToLoc",
/**
* Function to scroll to a given location on the page.
* @param {String} loc - A properly formatted jQuery id selector. Example: '#foo'
* @param {Object} options - The options to use.
* @param {Function} callback - The callback function.
* @static
* @function
*/
value: function scrollToLoc(loc) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : SmoothScroll.defaults;
var callback = arguments.length > 2 ? arguments[2] : undefined;
var $loc = jquery__WEBPACK_IMPORTED_MODULE_0___default()(loc); // Do nothing if target does not exist to prevent errors
if (!$loc.length) return false;
var scrollPos = Math.round($loc.offset().top - options.threshold / 2 - options.offset);
jquery__WEBPACK_IMPORTED_MODULE_0___default()('html, body').stop(true).animate({
scrollTop: scrollPos
}, options.animationDuration, options.animationEasing, function() {
if (typeof callback === 'function') {
callback();
}
});
}
}]);
return SmoothScroll;
}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2__["Plugin"]);
/**
* Default settings for plugin.
*/
SmoothScroll.defaults = {
/**
* Amount of time, in ms, the animated scrolling should take between locations.
* @option
* @type {number}
* @default 500
*/
animationDuration: 500,
/**
* Animation style to use when scrolling between locations. Can be `'swing'` or `'linear'`.
* @option
* @type {string}
* @default 'linear'
* @see {@link https://api.jquery.com/animate|Jquery animate}
*/
animationEasing: 'linear',
/**
* Number of pixels to use as a marker for location changes.
* @option
* @type {number}
* @default 50
*/
threshold: 50,
/**
* Number of pixels to offset the scroll of the page on item click if using a sticky nav bar.
* @option
* @type {number}
* @default 0
*/
offset: 0
};
//# sourceURL=webpack:///./js/foundation.smoothScroll.js?
|
#24 JavaScript::Eval (size: 16225, repeated: 1) - SHA256: 44071445b0947b217958f6385a93d99a78dcdad4b6dd32cc58ff49a8606e5735
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */
__webpack_require__.d(__webpack_exports__, "Accordion", function() {
return Accordion;
});
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! jquery */ "jquery");
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */
var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
/* harmony import */
var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! ./foundation.util.keyboard */ "./js/foundation.util.keyboard.js");
/* harmony import */
var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! ./foundation.core.plugin */ "./js/foundation.core.plugin.js");
function _typeof(obj) {
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function _typeof(obj) {
return typeof obj;
};
} else {
_typeof = function _typeof(obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
return _typeof(obj);
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a 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);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
function _possibleConstructorReturn(self, call) {
if (call && (_typeof(call) === "object" || typeof call === "function")) {
return call;
}
return _assertThisInitialized(self);
}
function _assertThisInitialized(self) {
if (self === void 0) {
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}
return self;
}
function _getPrototypeOf(o) {
_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
return o.__proto__ || Object.getPrototypeOf(o);
};
return _getPrototypeOf(o);
}
function _inherits(subClass, superClass) {
if (typeof superClass !== "function" && superClass !== null) {
throw new TypeError("Super expression must either be null or a function");
}
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
writable: true,
configurable: true
}
});
if (superClass) _setPrototypeOf(subClass, superClass);
}
function _setPrototypeOf(o, p) {
_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
o.__proto__ = p;
return o;
};
return _setPrototypeOf(o, p);
}
/**
* Accordion module.
* @module foundation.accordion
* @requires foundation.util.keyboard
*/
var Accordion =
/*#__PURE__*/
function(_Plugin) {
_inherits(Accordion, _Plugin);
function Accordion() {
_classCallCheck(this, Accordion);
return _possibleConstructorReturn(this, _getPrototypeOf(Accordion).apply(this, arguments));
}
_createClass(Accordion, [{
key: "_setup",
/**
* Creates a new instance of an accordion.
* @class
* @name Accordion
* @fires Accordion#init
* @param {jQuery} element - jQuery object to make into an accordion.
* @param {Object} options - a plain object with settings to override the default options.
*/
value: function _setup(element, options) {
this.$element = element;
this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, Accordion.defaults, this.$element.data(), options);
this.className = 'Accordion'; // ie9 back compat
this._init();
_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].register('Accordion', {
'ENTER': 'toggle',
'SPACE': 'toggle',
'ARROW_DOWN': 'next',
'ARROW_UP': 'previous'
});
}
/**
* Initializes the accordion by animating the preset active pane(s).
* @private
*/
}, {
key: "_init",
value: function _init() {
var _this2 = this;
this._isInitializing = true;
this.$element.attr('role', 'tablist');
this.$tabs = this.$element.children('[data-accordion-item]');
this.$tabs.each(function(idx, el) {
var $el = jquery__WEBPACK_IMPORTED_MODULE_0___default()(el),
$content = $el.children('[data-tab-content]'),
id = $content[0].id || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["GetYoDigits"])(6, 'accordion'),
linkId = el.id ? "".concat(el.id, "-label") : "".concat(id, "-label");
$el.find('a:first').attr({
'aria-controls': id,
'role': 'tab',
'id': linkId,
'aria-expanded': false,
'aria-selected': false
});
$content.attr({
'role': 'tabpanel',
'aria-labelledby': linkId,
'aria-hidden': true,
'id': id
});
});
var $initActive = this.$element.find('.is-active').children('[data-tab-content]');
if ($initActive.length) {
// Save up the initial hash to return to it later when going back in history
this._initialAnchor = $initActive.prev('a').attr('href');
this._openSingleTab($initActive);
}
this._checkDeepLink = function() {
var anchor = window.location.hash;
if (!anchor.length) {
// If we are still initializing and there is no anchor, then there is nothing to do
if (_this2._isInitializing) return; // Otherwise, move to the initial anchor
if (_this2._initialAnchor) anchor = _this2._initialAnchor;
}
var $anchor = anchor && jquery__WEBPACK_IMPORTED_MODULE_0___default()(anchor);
var $link = anchor && _this2.$element.find("[href$=\"".concat(anchor, "\"]")); // Whether the anchor element that has been found is part of this element
var isOwnAnchor = !!($anchor.length && $link.length); // If there is an anchor for the hash, open it (if not already active)
if ($anchor && $link && $link.length) {
if (!$link.parent('[data-accordion-item]').hasClass('is-active')) {
_this2._openSingleTab($anchor);
}
;
} // Otherwise, close everything
else {
_this2._closeAllTabs();
}
if (isOwnAnchor) {
// Roll up a little to show the titles
if (_this2.options.deepLinkSmudge) {
Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["onLoad"])(jquery__WEBPACK_IMPORTED_MODULE_0___default()(window), function() {
var offset = _this2.$element.offset();
jquery__WEBPACK_IMPORTED_MODULE_0___default()('html, body').animate({
scrollTop: offset.top
}, _this2.options.deepLinkSmudgeDelay);
});
}
/**
* Fires when the plugin has deeplinked at pageload
* @event Accordion#deeplink
*/
_this2.$element.trigger('deeplink.zf.accordion', [$link, $anchor]);
}
}; //use browser to open a tab, if it exists in this tabset
if (this.options.deepLink) {
this._checkDeepLink();
}
this._events();
this._isInitializing = false;
}
/**
* Adds event handlers for items within the accordion.
* @private
*/
}, {
key: "_events",
value: function _events() {
var _this = this;
this.$tabs.each(function() {
var $elem = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this);
var $tabContent = $elem.children('[data-tab-content]');
if ($tabContent.length) {
$elem.children('a').off('click.zf.accordion keydown.zf.accordion').on('click.zf.accordion', function(e) {
e.preventDefault();
_this.toggle($tabContent);
}).on('keydown.zf.accordion', function(e) {
_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].handleKey(e, 'Accordion', {
toggle: function toggle() {
_this.toggle($tabContent);
},
next: function next() {
var $a = $elem.next().find('a').focus();
if (!_this.options.multiExpand) {
$a.trigger('click.zf.accordion');
}
},
previous: function previous() {
var $a = $elem.prev().find('a').focus();
if (!_this.options.multiExpand) {
$a.trigger('click.zf.accordion');
}
},
handled: function handled() {
e.preventDefault();
e.stopPropagation();
}
});
});
}
});
if (this.options.deepLink) {
jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('hashchange', this._checkDeepLink);
}
}
/**
* Toggles the selected content pane's open/close state.
* @param {jQuery} $target - jQuery object of the pane to toggle (`.accordion-content`).
* @function
*/
}, {
key: "toggle",
value: function toggle($target) {
if ($target.closest('[data-accordion]').is('[disabled]')) {
console.info('Cannot toggle an accordion that is disabled.');
return;
}
if ($target.parent().hasClass('is-active')) {
this.up($target);
} else {
this.down($target);
} //either replace or update browser history
if (this.options.deepLink) {
var anchor = $target.prev('a').attr('href');
if (this.options.updateHistory) {
history.pushState({}, '', anchor);
} else {
history.replaceState({}, '', anchor);
}
}
}
/**
* Opens the accordion tab defined by `$target`.
* @param {jQuery} $target - Accordion pane to open (`.accordion-content`).
* @fires Accordion#down
* @function
*/
}, {
key: "down",
value: function down($target) {
if ($target.closest('[data-accordion]').is('[disabled]')) {
console.info('Cannot call down on an accordion that is disabled.');
return;
}
if (this.options.multiExpand) this._openTab($target);
else this._openSingleTab($target);
}
/**
* Closes the tab defined by `$target`.
* It may be ignored if the Accordion options don't allow it.
*
* @param {jQuery} $target - Accordion tab to close (`.accordion-content`).
* @fires Accordion#up
* @function
*/
}, {
key: "up",
value: function up($target) {
if (this.$element.is('[disabled]')) {
console.info('Cannot call up on an accordion that is disabled.');
return;
} // Don't close the item if it is already closed
var $targetItem = $target.parent();
if (!$targetItem.hasClass('is-active')) return; // Don't close the item if there is no other active item (unless with `allowAllClosed`)
var $othersItems = $targetItem.siblings();
if (!this.options.allowAllClosed && !$othersItems.hasClass('is-active')) return;
this._closeTab($target);
}
/**
* Make the tab defined by `$target` the only opened tab, closing all others tabs.
* @param {jQuery} $target - Accordion tab to open (`.accordion-content`).
* @function
* @private
*/
}, {
key: "_openSingleTab",
value: function _openSingleTab($target) {
// Close all the others active tabs.
var $activeContents = this.$element.children('.is-active').children('[data-tab-content]');
if ($activeContents.length) {
this._closeTab($activeContents.not($target));
} // Then open the target.
this._openTab($target);
}
/**
* Opens the tab defined by `$target`.
* @param {jQuery} $target - Accordion tab to open (`.accordion-content`).
* @fires Accordion#down
* @function
* @private
*/
}, {
key: "_openTab",
value: function _openTab($target) {
var _this3 = this;
var $targetItem = $target.parent();
var targetContentId = $target.attr('aria-labelledby');
$target.attr('aria-hidden', false);
$targetItem.addClass('is-active');
jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(targetContentId)).attr({
'aria-expanded': true,
'aria-selected': true
});
$target.slideDown(this.options.slideSpeed, function() {
/**
* Fires when the tab is done opening.
* @event Accordion#down
*/
_this3.$element.trigger('down.zf.accordion', [$target]);
});
}
/**
* Closes the tab defined by `$target`.
* @param {jQuery} $target - Accordion tab to close (`.accordion-content`).
* @fires Accordion#up
* @function
* @private
*/
}, {
key: "_closeTab",
value: function _closeTab($target) {
var _this4 = this;
var $targetItem = $target.parent();
var targetContentId = $target.attr('aria-labelledby');
$target.attr('aria-hidden', true);
$targetItem.removeClass('is-active');
jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(targetContentId)).attr({
'aria-expanded': false,
'aria-selected': false
});
$target.slideUp(this.options.slideSpeed, function() {
/**
* Fires when the tab is done collapsing up.
* @event Accordion#up
*/
_this4.$element.trigger('up.zf.accordion', [$target]);
});
}
/**
* Closes all active tabs
* @fires Accordion#up
* @function
* @private
*/
}, {
key: "_closeAllTabs",
value: function _closeAllTabs() {
var $activeTabs = this.$element.children('.is-active').children('[data-tab-content]');
if ($activeTabs.length) {
this._closeTab($activeTabs);
}
}
/**
* Destroys an instance of an accordion.
* @fires Accordion#destroyed
* @function
*/
}, {
key: "_destroy",
value: function _destroy() {
this.$element.find('[data-tab-content]').stop(true).slideUp(0).css('display', '');
this.$element.find('a').off('.zf.accordion');
if (this.options.deepLink) {
jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off('hashchange', this._checkDeepLink);
}
}
}]);
return Accordion;
}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_3__["Plugin"]);
Accordion.defaults = {
/**
* Amount of time to animate the opening of an accordion pane.
* @option
* @type {number}
* @default 250
*/
slideSpeed: 250,
/**
* Allow the accordion to have multiple open panes.
* @option
* @type {boolean}
* @default false
*/
multiExpand: false,
/**
* Allow the accordion to close all panes.
* @option
* @type {boolean}
* @default false
*/
allowAllClosed: false,
/**
* Link the location hash to the open pane.
* Set the location hash when the opened pane changes, and open and scroll to the corresponding pane when the location changes.
* @option
* @type {boolean}
* @default false
*/
deepLink: false,
/**
* If `deepLink` is enabled, adjust the deep link scroll to make sure the top of the accordion panel is visible
* @option
* @type {boolean}
* @default false
*/
deepLinkSmudge: false,
/**
* If `deepLinkSmudge` is enabled, animation time (ms) for the deep link adjustment
* @option
* @type {number}
* @default 300
*/
deepLinkSmudgeDelay: 300,
/**
* If `deepLink` is enabled, update the browser history with the open accordion
* @option
* @type {boolean}
* @default false
*/
updateHistory: false
};
//# sourceURL=webpack:///./js/foundation.accordion.js?
|
#25 JavaScript::Eval (size: 24216, repeated: 1) - SHA256: 116d074c0591577eafed650c6b55f9209ac2f88442a7b88eb50c9a804e4d1c28
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */
__webpack_require__.d(__webpack_exports__, "OffCanvas", function() {
return OffCanvas;
});
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! jquery */ "jquery");
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */
var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
/* harmony import */
var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! ./foundation.util.keyboard */ "./js/foundation.util.keyboard.js");
/* harmony import */
var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! ./foundation.util.mediaQuery */ "./js/foundation.util.mediaQuery.js");
/* harmony import */
var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( /*! ./foundation.core.plugin */ "./js/foundation.core.plugin.js");
/* harmony import */
var _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__( /*! ./foundation.util.triggers */ "./js/foundation.util.triggers.js");
function _typeof(obj) {
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function _typeof(obj) {
return typeof obj;
};
} else {
_typeof = function _typeof(obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
return _typeof(obj);
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a 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);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
function _possibleConstructorReturn(self, call) {
if (call && (_typeof(call) === "object" || typeof call === "function")) {
return call;
}
return _assertThisInitialized(self);
}
function _assertThisInitialized(self) {
if (self === void 0) {
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}
return self;
}
function _getPrototypeOf(o) {
_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
return o.__proto__ || Object.getPrototypeOf(o);
};
return _getPrototypeOf(o);
}
function _inherits(subClass, superClass) {
if (typeof superClass !== "function" && superClass !== null) {
throw new TypeError("Super expression must either be null or a function");
}
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
writable: true,
configurable: true
}
});
if (superClass) _setPrototypeOf(subClass, superClass);
}
function _setPrototypeOf(o, p) {
_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
o.__proto__ = p;
return o;
};
return _setPrototypeOf(o, p);
}
/**
* OffCanvas module.
* @module foundation.offcanvas
* @requires foundation.util.keyboard
* @requires foundation.util.mediaQuery
* @requires foundation.util.triggers
*/
var OffCanvas =
/*#__PURE__*/
function(_Plugin) {
_inherits(OffCanvas, _Plugin);
function OffCanvas() {
_classCallCheck(this, OffCanvas);
return _possibleConstructorReturn(this, _getPrototypeOf(OffCanvas).apply(this, arguments));
}
_createClass(OffCanvas, [{
key: "_setup",
/**
* Creates a new instance of an off-canvas wrapper.
* @class
* @name OffCanvas
* @fires OffCanvas#init
* @param {Object} element - jQuery object to initialize.
* @param {Object} options - Overrides to the default plugin settings.
*/
value: function _setup(element, options) {
var _this2 = this;
this.className = 'OffCanvas'; // ie9 back compat
this.$element = element;
this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, OffCanvas.defaults, this.$element.data(), options);
this.contentClasses = {
base: [],
reveal: []
};
this.$lastTrigger = jquery__WEBPACK_IMPORTED_MODULE_0___default()();
this.$triggers = jquery__WEBPACK_IMPORTED_MODULE_0___default()();
this.position = 'left';
this.$content = jquery__WEBPACK_IMPORTED_MODULE_0___default()();
this.nested = !!this.options.nested; // Defines the CSS transition/position classes of the off-canvas content container.
jquery__WEBPACK_IMPORTED_MODULE_0___default()(['push', 'overlap']).each(function(index, val) {
_this2.contentClasses.base.push('has-transition-' + val);
});
jquery__WEBPACK_IMPORTED_MODULE_0___default()(['left', 'right', 'top', 'bottom']).each(function(index, val) {
_this2.contentClasses.base.push('has-position-' + val);
_this2.contentClasses.reveal.push('has-reveal-' + val);
}); // Triggers init is idempotent, just need to make sure it is initialized
_foundation_util_triggers__WEBPACK_IMPORTED_MODULE_5__["Triggers"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a);
_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_3__["MediaQuery"]._init();
this._init();
this._events();
_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].register('OffCanvas', {
'ESCAPE': 'close'
});
}
/**
* Initializes the off-canvas wrapper by adding the exit overlay (if needed).
* @function
* @private
*/
}, {
key: "_init",
value: function _init() {
var id = this.$element.attr('id');
this.$element.attr('aria-hidden', 'true'); // Find off-canvas content, either by ID (if specified), by siblings or by closest selector (fallback)
if (this.options.contentId) {
this.$content = jquery__WEBPACK_IMPORTED_MODULE_0___default()('#' + this.options.contentId);
} else if (this.$element.siblings('[data-off-canvas-content]').length) {
this.$content = this.$element.siblings('[data-off-canvas-content]').first();
} else {
this.$content = this.$element.closest('[data-off-canvas-content]').first();
}
if (!this.options.contentId) {
// Assume that the off-canvas element is nested if it isn't a sibling of the content
this.nested = this.$element.siblings('[data-off-canvas-content]').length === 0;
} else if (this.options.contentId && this.options.nested === null) {
// Warning if using content ID without setting the nested option
// Once the element is nested it is required to work properly in this case
console.warn('Remember to use the nested option if using the content ID option!');
}
if (this.nested === true) {
// Force transition overlap if nested
this.options.transition = 'overlap'; // Remove appropriate classes if already assigned in markup
this.$element.removeClass('is-transition-push');
}
this.$element.addClass("is-transition-".concat(this.options.transition, " is-closed")); // Find triggers that affect this element and add aria-expanded to them
this.$triggers = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).find('[data-open="' + id + '"], [data-close="' + id + '"], [data-toggle="' + id + '"]').attr('aria-expanded', 'false').attr('aria-controls', id); // Get position by checking for related CSS class
this.position = this.$element.is('.position-left, .position-top, .position-right, .position-bottom') ? this.$element.attr('class').match(/position\-(left|top|right|bottom)/)[1] : this.position; // Add an overlay over the content if necessary
if (this.options.contentOverlay === true) {
var overlay = document.createElement('div');
var overlayPosition = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this.$element).css("position") === 'fixed' ? 'is-overlay-fixed' : 'is-overlay-absolute';
overlay.setAttribute('class', 'js-off-canvas-overlay ' + overlayPosition);
this.$overlay = jquery__WEBPACK_IMPORTED_MODULE_0___default()(overlay);
if (overlayPosition === 'is-overlay-fixed') {
jquery__WEBPACK_IMPORTED_MODULE_0___default()(this.$overlay).insertAfter(this.$element);
} else {
this.$content.append(this.$overlay);
}
} // Get the revealOn option from the class.
var revealOnRegExp = new RegExp(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["RegExpEscape"])(this.options.revealClass) + '([^\\s]+)', 'g');
var revealOnClass = revealOnRegExp.exec(this.$element[0].className);
if (revealOnClass) {
this.options.isRevealed = true;
this.options.revealOn = this.options.revealOn || revealOnClass[1];
} // Ensure the `reveal-on-*` class is set.
if (this.options.isRevealed === true && this.options.revealOn) {
this.$element.first().addClass("".concat(this.options.revealClass).concat(this.options.revealOn));
this._setMQChecker();
}
if (this.options.transitionTime) {
this.$element.css('transition-duration', this.options.transitionTime);
} // Initally remove all transition/position CSS classes from off-canvas content container.
this._removeContentClasses();
}
/**
* Adds event handlers to the off-canvas wrapper and the exit overlay.
* @function
* @private
*/
}, {
key: "_events",
value: function _events() {
this.$element.off('.zf.trigger .zf.offcanvas').on({
'open.zf.trigger': this.open.bind(this),
'close.zf.trigger': this.close.bind(this),
'toggle.zf.trigger': this.toggle.bind(this),
'keydown.zf.offcanvas': this._handleKeyboard.bind(this)
});
if (this.options.closeOnClick === true) {
var $target = this.options.contentOverlay ? this.$overlay : this.$content;
$target.on({
'click.zf.offcanvas': this.close.bind(this)
});
}
}
/**
* Applies event listener for elements that will reveal at certain breakpoints.
* @private
*/
}, {
key: "_setMQChecker",
value: function _setMQChecker() {
var _this = this;
this.onLoadListener = Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["onLoad"])(jquery__WEBPACK_IMPORTED_MODULE_0___default()(window), function() {
if (_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_3__["MediaQuery"].atLeast(_this.options.revealOn)) {
_this.reveal(true);
}
});
jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('changed.zf.mediaquery', function() {
if (_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_3__["MediaQuery"].atLeast(_this.options.revealOn)) {
_this.reveal(true);
} else {
_this.reveal(false);
}
});
}
/**
* Removes the CSS transition/position classes of the off-canvas content container.
* Removing the classes is important when another off-canvas gets opened that uses the same content container.
* @param {Boolean} hasReveal - true if related off-canvas element is revealed.
* @private
*/
}, {
key: "_removeContentClasses",
value: function _removeContentClasses(hasReveal) {
if (typeof hasReveal !== 'boolean') {
this.$content.removeClass(this.contentClasses.base.join(' '));
} else if (hasReveal === false) {
this.$content.removeClass("has-reveal-".concat(this.position));
}
}
/**
* Adds the CSS transition/position classes of the off-canvas content container, based on the opening off-canvas element.
* Beforehand any transition/position class gets removed.
* @param {Boolean} hasReveal - true if related off-canvas element is revealed.
* @private
*/
}, {
key: "_addContentClasses",
value: function _addContentClasses(hasReveal) {
this._removeContentClasses(hasReveal);
if (typeof hasReveal !== 'boolean') {
this.$content.addClass("has-transition-".concat(this.options.transition, " has-position-").concat(this.position));
} else if (hasReveal === true) {
this.$content.addClass("has-reveal-".concat(this.position));
}
}
/**
* Handles the revealing/hiding the off-canvas at breakpoints, not the same as open.
* @param {Boolean} isRevealed - true if element should be revealed.
* @function
*/
}, {
key: "reveal",
value: function reveal(isRevealed) {
if (isRevealed) {
this.close();
this.isRevealed = true;
this.$element.attr('aria-hidden', 'false');
this.$element.off('open.zf.trigger toggle.zf.trigger');
this.$element.removeClass('is-closed');
} else {
this.isRevealed = false;
this.$element.attr('aria-hidden', 'true');
this.$element.off('open.zf.trigger toggle.zf.trigger').on({
'open.zf.trigger': this.open.bind(this),
'toggle.zf.trigger': this.toggle.bind(this)
});
this.$element.addClass('is-closed');
}
this._addContentClasses(isRevealed);
}
/**
* Stops scrolling of the body when offcanvas is open on mobile Safari and other troublesome browsers.
* @private
*/
}, {
key: "_stopScrolling",
value: function _stopScrolling(event) {
return false;
} // Taken and adapted from http://stackoverflow.com/questions/16889447/prevent-full-page-scrolling-ios
// Only really works for y, not sure how to extend to x or if we need to.
}, {
key: "_recordScrollable",
value: function _recordScrollable(event) {
var elem = this; // called from event handler context with this as elem
// If the element is scrollable (content overflows), then...
if (elem.scrollHeight !== elem.clientHeight) {
// If we're at the top, scroll down one pixel to allow scrolling up
if (elem.scrollTop === 0) {
elem.scrollTop = 1;
} // If we're at the bottom, scroll up one pixel to allow scrolling down
if (elem.scrollTop === elem.scrollHeight - elem.clientHeight) {
elem.scrollTop = elem.scrollHeight - elem.clientHeight - 1;
}
}
elem.allowUp = elem.scrollTop > 0;
elem.allowDown = elem.scrollTop < elem.scrollHeight - elem.clientHeight;
elem.lastY = event.originalEvent.pageY;
}
}, {
key: "_stopScrollPropagation",
value: function _stopScrollPropagation(event) {
var elem = this; // called from event handler context with this as elem
var up = event.pageY < elem.lastY;
var down = !up;
elem.lastY = event.pageY;
if (up && elem.allowUp || down && elem.allowDown) {
event.stopPropagation();
} else {
event.preventDefault();
}
}
/**
* Opens the off-canvas menu.
* @function
* @param {Object} event - Event object passed from listener.
* @param {jQuery} trigger - element that triggered the off-canvas to open.
* @fires Offcanvas#opened
* @todo also trigger 'open' event?
*/
}, {
key: "open",
value: function open(event, trigger) {
if (this.$element.hasClass('is-open') || this.isRevealed) {
return;
}
var _this = this;
if (trigger) {
this.$lastTrigger = trigger;
}
if (this.options.forceTo === 'top') {
window.scrollTo(0, 0);
} else if (this.options.forceTo === 'bottom') {
window.scrollTo(0, document.body.scrollHeight);
}
if (this.options.transitionTime && this.options.transition !== 'overlap') {
this.$element.siblings('[data-off-canvas-content]').css('transition-duration', this.options.transitionTime);
} else {
this.$element.siblings('[data-off-canvas-content]').css('transition-duration', '');
}
this.$element.addClass('is-open').removeClass('is-closed');
this.$triggers.attr('aria-expanded', 'true');
this.$element.attr('aria-hidden', 'false');
this.$content.addClass('is-open-' + this.position); // If `contentScroll` is set to false, add class and disable scrolling on touch devices.
if (this.options.contentScroll === false) {
jquery__WEBPACK_IMPORTED_MODULE_0___default()('body').addClass('is-off-canvas-open').on('touchmove', this._stopScrolling);
this.$element.on('touchstart', this._recordScrollable);
this.$element.on('touchmove', this._stopScrollPropagation);
}
if (this.options.contentOverlay === true) {
this.$overlay.addClass('is-visible');
}
if (this.options.closeOnClick === true && this.options.contentOverlay === true) {
this.$overlay.addClass('is-closable');
}
if (this.options.autoFocus === true) {
this.$element.one(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["transitionend"])(this.$element), function() {
if (!_this.$element.hasClass('is-open')) {
return; // exit if prematurely closed
}
var canvasFocus = _this.$element.find('[data-autofocus]');
if (canvasFocus.length) {
canvasFocus.eq(0).focus();
} else {
_this.$element.find('a, button').eq(0).focus();
}
});
}
if (this.options.trapFocus === true) {
this.$content.attr('tabindex', '-1');
_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].trapFocus(this.$element);
}
this._addContentClasses();
/**
* Fires when the off-canvas menu opens.
* @event Offcanvas#opened
*/
this.$element.trigger('opened.zf.offcanvas');
}
/**
* Closes the off-canvas menu.
* @function
* @param {Function} cb - optional cb to fire after closure.
* @fires Offcanvas#closed
*/
}, {
key: "close",
value: function close(cb) {
if (!this.$element.hasClass('is-open') || this.isRevealed) {
return;
}
var _this = this;
this.$element.removeClass('is-open');
this.$element.attr('aria-hidden', 'true')
/**
* Fires when the off-canvas menu opens.
* @event Offcanvas#closed
*/
.trigger('closed.zf.offcanvas');
this.$content.removeClass('is-open-left is-open-top is-open-right is-open-bottom'); // If `contentScroll` is set to false, remove class and re-enable scrolling on touch devices.
if (this.options.contentScroll === false) {
jquery__WEBPACK_IMPORTED_MODULE_0___default()('body').removeClass('is-off-canvas-open').off('touchmove', this._stopScrolling);
this.$element.off('touchstart', this._recordScrollable);
this.$element.off('touchmove', this._stopScrollPropagation);
}
if (this.options.contentOverlay === true) {
this.$overlay.removeClass('is-visible');
}
if (this.options.closeOnClick === true && this.options.contentOverlay === true) {
this.$overlay.removeClass('is-closable');
}
this.$triggers.attr('aria-expanded', 'false');
if (this.options.trapFocus === true) {
this.$content.removeAttr('tabindex');
_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].releaseFocus(this.$element);
} // Listen to transitionEnd and add class when done.
this.$element.one(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["transitionend"])(this.$element), function(e) {
_this.$element.addClass('is-closed');
_this._removeContentClasses();
});
}
/**
* Toggles the off-canvas menu open or closed.
* @function
* @param {Object} event - Event object passed from listener.
* @param {jQuery} trigger - element that triggered the off-canvas to open.
*/
}, {
key: "toggle",
value: function toggle(event, trigger) {
if (this.$element.hasClass('is-open')) {
this.close(event, trigger);
} else {
this.open(event, trigger);
}
}
/**
* Handles keyboard input when detected. When the escape key is pressed, the off-canvas menu closes, and focus is restored to the element that opened the menu.
* @function
* @private
*/
}, {
key: "_handleKeyboard",
value: function _handleKeyboard(e) {
var _this3 = this;
_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].handleKey(e, 'OffCanvas', {
close: function close() {
_this3.close();
_this3.$lastTrigger.focus();
return true;
},
handled: function handled() {
e.stopPropagation();
e.preventDefault();
}
});
}
/**
* Destroys the offcanvas plugin.
* @function
*/
}, {
key: "_destroy",
value: function _destroy() {
this.close();
this.$element.off('.zf.trigger .zf.offcanvas');
this.$overlay.off('.zf.offcanvas');
if (this.onLoadListener) jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(this.onLoadListener);
}
}]);
return OffCanvas;
}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_4__["Plugin"]);
OffCanvas.defaults = {
/**
* Allow the user to click outside of the menu to close it.
* @option
* @type {boolean}
* @default true
*/
closeOnClick: true,
/**
* Adds an overlay on top of `[data-off-canvas-content]`.
* @option
* @type {boolean}
* @default true
*/
contentOverlay: true,
/**
* Target an off-canvas content container by ID that may be placed anywhere. If null the closest content container will be taken.
* @option
* @type {?string}
* @default null
*/
contentId: null,
/**
* Define the off-canvas element is nested in an off-canvas content. This is required when using the contentId option for a nested element.
* @option
* @type {boolean}
* @default null
*/
nested: null,
/**
* Enable/disable scrolling of the main content when an off canvas panel is open.
* @option
* @type {boolean}
* @default true
*/
contentScroll: true,
/**
* Amount of time in ms the open and close transition requires. If none selected, pulls from body style.
* @option
* @type {number}
* @default null
*/
transitionTime: null,
/**
* Type of transition for the offcanvas menu. Options are 'push', 'detached' or 'slide'.
* @option
* @type {string}
* @default push
*/
transition: 'push',
/**
* Force the page to scroll to top or bottom on open.
* @option
* @type {?string}
* @default null
*/
forceTo: null,
/**
* Allow the offcanvas to remain open for certain breakpoints.
* @option
* @type {boolean}
* @default false
*/
isRevealed: false,
/**
* Breakpoint at which to reveal. JS will use a RegExp to target standard classes, if changing classnames, pass your class with the `revealClass` option.
* @option
* @type {?string}
* @default null
*/
revealOn: null,
/**
* Force focus to the offcanvas on open. If true, will focus the opening trigger on close.
* @option
* @type {boolean}
* @default true
*/
autoFocus: true,
/**
* Class used to force an offcanvas to remain open. Foundation defaults for this are `reveal-for-large` & `reveal-for-medium`.
* @option
* @type {string}
* @default reveal-for-
* @todo improve the regex testing for this.
*/
revealClass: 'reveal-for-',
/**
* Triggers optional focus trapping when opening an offcanvas. Sets tabindex of [data-off-canvas-content] to -1 for accessibility purposes.
* @option
* @type {boolean}
* @default false
*/
trapFocus: false
};
//# sourceURL=webpack:///./js/foundation.offcanvas.js?
|
#26 JavaScript::Eval (size: 3365, repeated: 1) - SHA256: ebbef165e3cdcb0390ec6c1f884067cba9b6133f9f445c05554576cc6d8bb6a9
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */
__webpack_require__.d(__webpack_exports__, "Move", function() {
return Move;
});
/* harmony export (binding) */
__webpack_require__.d(__webpack_exports__, "Motion", function() {
return Motion;
});
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! jquery */ "jquery");
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */
var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
/**
* Motion module.
* @module foundation.motion
*/
var initClasses = ['mui-enter', 'mui-leave'];
var activeClasses = ['mui-enter-active', 'mui-leave-active'];
var Motion = {
animateIn: function animateIn(element, animation, cb) {
animate(true, element, animation, cb);
},
animateOut: function animateOut(element, animation, cb) {
animate(false, element, animation, cb);
}
};
function Move(duration, elem, fn) {
var anim,
prog,
start = null; // console.log('called');
if (duration === 0) {
fn.apply(elem);
elem.trigger('finished.zf.animate', [elem]).triggerHandler('finished.zf.animate', [elem]);
return;
}
function move(ts) {
if (!start) start = ts; // console.log(start, ts);
prog = ts - start;
fn.apply(elem);
if (prog < duration) {
anim = window.requestAnimationFrame(move, elem);
} else {
window.cancelAnimationFrame(anim);
elem.trigger('finished.zf.animate', [elem]).triggerHandler('finished.zf.animate', [elem]);
}
}
anim = window.requestAnimationFrame(move);
}
/**
* Animates an element in or out using a CSS transition class.
* @function
* @private
* @param {Boolean} isIn - Defines if the animation is in or out.
* @param {Object} element - jQuery or HTML object to animate.
* @param {String} animation - CSS class to use.
* @param {Function} cb - Callback to run when animation is finished.
*/
function animate(isIn, element, animation, cb) {
element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).eq(0);
if (!element.length) return;
var initClass = isIn ? initClasses[0] : initClasses[1];
var activeClass = isIn ? activeClasses[0] : activeClasses[1]; // Set up the animation
reset();
element.addClass(animation).css('transition', 'none');
requestAnimationFrame(function() {
element.addClass(initClass);
if (isIn) element.show();
}); // Start the animation
requestAnimationFrame(function() {
element[0].offsetWidth;
element.css('transition', '').addClass(activeClass);
}); // Clean up the animation when it finishes
element.one(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["transitionend"])(element), finish); // Hides the element (for out animations), resets the element, and runs a callback
function finish() {
if (!isIn) element.hide();
reset();
if (cb) cb.apply(element);
} // Resets transitions and removes motion-specific classes
function reset() {
element[0].style.transitionDuration = 0;
element.removeClass("".concat(initClass, " ").concat(activeClass, " ").concat(animation));
}
}
//# sourceURL=webpack:///./js/foundation.util.motion.js?
|
#27 JavaScript::Eval (size: 6102, repeated: 1) - SHA256: ef425693d4784790b2c056304622740112d0a3f215aec72a0df512493085fb01
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */
__webpack_require__.d(__webpack_exports__, "Keyboard", function() {
return Keyboard;
});
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! jquery */ "jquery");
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */
var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
/*******************************************
* *
* This util was created by Marius Olbertz *
* Please thank Marius on GitHub /owlbertz *
* or the web http://www.mariusolbertz.de/ *
* *
******************************************/
var keyCodes = {
9: 'TAB',
13: 'ENTER',
27: 'ESCAPE',
32: 'SPACE',
35: 'END',
36: 'HOME',
37: 'ARROW_LEFT',
38: 'ARROW_UP',
39: 'ARROW_RIGHT',
40: 'ARROW_DOWN'
};
var commands = {}; // Functions pulled out to be referenceable from internals
function findFocusable($element) {
if (!$element) {
return false;
}
return $element.find('a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]').filter(function() {
if (!jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).is(':visible') || jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).attr('tabindex') < 0) {
return false;
} //only have visible elements and those that have a tabindex greater or equal 0
return true;
});
}
function parseKey(event) {
var key = keyCodes[event.which || event.keyCode] || String.fromCharCode(event.which).toUpperCase(); // Remove un-printable characters, e.g. for `fromCharCode` calls for CTRL only events
key = key.replace(/\W+/, '');
if (event.shiftKey) key = "SHIFT_".concat(key);
if (event.ctrlKey) key = "CTRL_".concat(key);
if (event.altKey) key = "ALT_".concat(key); // Remove trailing underscore, in case only modifiers were used (e.g. only `CTRL_ALT`)
key = key.replace(/_$/, '');
return key;
}
var Keyboard = {
keys: getKeyCodes(keyCodes),
/**
* Parses the (keyboard) event and returns a String that represents its key
* Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE
* @param {Event} event - the event generated by the event handler
* @return String key - String that represents the key pressed
*/
parseKey: parseKey,
/**
* Handles the given (keyboard) event
* @param {Event} event - the event generated by the event handler
* @param {String} component - Foundation component's name, e.g. Slider or Reveal
* @param {Objects} functions - collection of functions that are to be executed
*/
handleKey: function handleKey(event, component, functions) {
var commandList = commands[component],
keyCode = this.parseKey(event),
cmds,
command,
fn;
if (!commandList) return console.warn('Component not defined!');
if (typeof commandList.ltr === 'undefined') {
// this component does not differentiate between ltr and rtl
cmds = commandList; // use plain list
} else {
// merge ltr and rtl: if document is rtl, rtl overwrites ltr and vice versa
if (Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["rtl"])()) cmds = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, commandList.ltr, commandList.rtl);
else cmds = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, commandList.rtl, commandList.ltr);
}
command = cmds[keyCode];
fn = functions[command];
if (fn && typeof fn === 'function') {
// execute function if exists
var returnValue = fn.apply();
if (functions.handled || typeof functions.handled === 'function') {
// execute function when event was handled
functions.handled(returnValue);
}
} else {
if (functions.unhandled || typeof functions.unhandled === 'function') {
// execute function when event was not handled
functions.unhandled();
}
}
},
/**
* Finds all focusable elements within the given `$element`
* @param {jQuery} $element - jQuery object to search within
* @return {jQuery} $focusable - all focusable elements within `$element`
*/
findFocusable: findFocusable,
/**
* Returns the component name name
* @param {Object} component - Foundation component, e.g. Slider or Reveal
* @return String componentName
*/
register: function register(componentName, cmds) {
commands[componentName] = cmds;
},
// TODO9438: These references to Keyboard need to not require global. Will 'this' work in this context?
//
/**
* Traps the focus in the given element.
* @param {jQuery} $element jQuery object to trap the foucs into.
*/
trapFocus: function trapFocus($element) {
var $focusable = findFocusable($element),
$firstFocusable = $focusable.eq(0),
$lastFocusable = $focusable.eq(-1);
$element.on('keydown.zf.trapfocus', function(event) {
if (event.target === $lastFocusable[0] && parseKey(event) === 'TAB') {
event.preventDefault();
$firstFocusable.focus();
} else if (event.target === $firstFocusable[0] && parseKey(event) === 'SHIFT_TAB') {
event.preventDefault();
$lastFocusable.focus();
}
});
},
/**
* Releases the trapped focus from the given element.
* @param {jQuery} $element jQuery object to release the focus for.
*/
releaseFocus: function releaseFocus($element) {
$element.off('keydown.zf.trapfocus');
}
};
/*
* Constants for easier comparing.
* Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE
*/
function getKeyCodes(kcs) {
var k = {};
for (var kc in kcs) {
k[kcs[kc]] = kcs[kc];
}
return k;
}
//# sourceURL=webpack:///./js/foundation.util.keyboard.js?
|
#28 JavaScript::Eval (size: 8869, repeated: 1) - SHA256: ce57c60eeabfd1a008e2d15bb2133d8648421ff83e8e891ff61afe8e527e7026
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */
__webpack_require__.d(__webpack_exports__, "ResponsiveMenu", function() {
return ResponsiveMenu;
});
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! jquery */ "jquery");
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */
var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! ./foundation.util.mediaQuery */ "./js/foundation.util.mediaQuery.js");
/* harmony import */
var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
/* harmony import */
var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! ./foundation.core.plugin */ "./js/foundation.core.plugin.js");
/* harmony import */
var _foundation_dropdownMenu__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( /*! ./foundation.dropdownMenu */ "./js/foundation.dropdownMenu.js");
/* harmony import */
var _foundation_drilldown__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__( /*! ./foundation.drilldown */ "./js/foundation.drilldown.js");
/* harmony import */
var _foundation_accordionMenu__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__( /*! ./foundation.accordionMenu */ "./js/foundation.accordionMenu.js");
function _typeof(obj) {
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function _typeof(obj) {
return typeof obj;
};
} else {
_typeof = function _typeof(obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
return _typeof(obj);
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a 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);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
function _possibleConstructorReturn(self, call) {
if (call && (_typeof(call) === "object" || typeof call === "function")) {
return call;
}
return _assertThisInitialized(self);
}
function _assertThisInitialized(self) {
if (self === void 0) {
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}
return self;
}
function _getPrototypeOf(o) {
_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
return o.__proto__ || Object.getPrototypeOf(o);
};
return _getPrototypeOf(o);
}
function _inherits(subClass, superClass) {
if (typeof superClass !== "function" && superClass !== null) {
throw new TypeError("Super expression must either be null or a function");
}
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
writable: true,
configurable: true
}
});
if (superClass) _setPrototypeOf(subClass, superClass);
}
function _setPrototypeOf(o, p) {
_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
o.__proto__ = p;
return o;
};
return _setPrototypeOf(o, p);
}
var MenuPlugins = {
dropdown: {
cssClass: 'dropdown',
plugin: _foundation_dropdownMenu__WEBPACK_IMPORTED_MODULE_4__["DropdownMenu"]
},
drilldown: {
cssClass: 'drilldown',
plugin: _foundation_drilldown__WEBPACK_IMPORTED_MODULE_5__["Drilldown"]
},
accordion: {
cssClass: 'accordion-menu',
plugin: _foundation_accordionMenu__WEBPACK_IMPORTED_MODULE_6__["AccordionMenu"]
}
}; // import "foundation.util.triggers.js";
/**
* ResponsiveMenu module.
* @module foundation.responsiveMenu
* @requires foundation.util.triggers
* @requires foundation.util.mediaQuery
*/
var ResponsiveMenu =
/*#__PURE__*/
function(_Plugin) {
_inherits(ResponsiveMenu, _Plugin);
function ResponsiveMenu() {
_classCallCheck(this, ResponsiveMenu);
return _possibleConstructorReturn(this, _getPrototypeOf(ResponsiveMenu).apply(this, arguments));
}
_createClass(ResponsiveMenu, [{
key: "_setup",
/**
* Creates a new instance of a responsive menu.
* @class
* @name ResponsiveMenu
* @fires ResponsiveMenu#init
* @param {jQuery} element - jQuery object to make into a dropdown menu.
* @param {Object} options - Overrides to the default plugin settings.
*/
value: function _setup(element, options) {
this.$element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element);
this.rules = this.$element.data('responsive-menu');
this.currentMq = null;
this.currentPlugin = null;
this.className = 'ResponsiveMenu'; // ie9 back compat
this._init();
this._events();
}
/**
* Initializes the Menu by parsing the classes from the 'data-ResponsiveMenu' attribute on the element.
* @function
* @private
*/
}, {
key: "_init",
value: function _init() {
_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"]._init(); // The first time an Interchange plugin is initialized, this.rules is converted from a string of "classes" to an object of rules
if (typeof this.rules === 'string') {
var rulesTree = {}; // Parse rules from "classes" pulled from data attribute
var rules = this.rules.split(' '); // Iterate through every rule found
for (var i = 0; i < rules.length; i++) {
var rule = rules[i].split('-');
var ruleSize = rule.length > 1 ? rule[0] : 'small';
var rulePlugin = rule.length > 1 ? rule[1] : rule[0];
if (MenuPlugins[rulePlugin] !== null) {
rulesTree[ruleSize] = MenuPlugins[rulePlugin];
}
}
this.rules = rulesTree;
}
if (!jquery__WEBPACK_IMPORTED_MODULE_0___default.a.isEmptyObject(this.rules)) {
this._checkMediaQueries();
} // Add data-mutate since children may need it.
this.$element.attr('data-mutate', this.$element.attr('data-mutate') || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["GetYoDigits"])(6, 'responsive-menu'));
}
/**
* Initializes events for the Menu.
* @function
* @private
*/
}, {
key: "_events",
value: function _events() {
var _this = this;
jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('changed.zf.mediaquery', function() {
_this._checkMediaQueries();
}); // $(window).on('resize.zf.ResponsiveMenu', function() {
// _this._checkMediaQueries();
// });
}
/**
* Checks the current screen width against available media queries. If the media query has changed, and the plugin needed has changed, the plugins will swap out.
* @function
* @private
*/
}, {
key: "_checkMediaQueries",
value: function _checkMediaQueries() {
var matchedMq,
_this = this; // Iterate through each rule and find the last matching rule
jquery__WEBPACK_IMPORTED_MODULE_0___default.a.each(this.rules, function(key) {
if (_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"].atLeast(key)) {
matchedMq = key;
}
}); // No match? No dice
if (!matchedMq) return; // Plugin already initialized? We good
if (this.currentPlugin instanceof this.rules[matchedMq].plugin) return; // Remove existing plugin-specific CSS classes
jquery__WEBPACK_IMPORTED_MODULE_0___default.a.each(MenuPlugins, function(key, value) {
_this.$element.removeClass(value.cssClass);
}); // Add the CSS class for the new plugin
this.$element.addClass(this.rules[matchedMq].cssClass); // Create an instance of the new plugin
if (this.currentPlugin) this.currentPlugin.destroy();
this.currentPlugin = new this.rules[matchedMq].plugin(this.$element, {});
}
/**
* Destroys the instance of the current plugin on this element, as well as the window resize handler that switches the plugins out.
* @function
*/
}, {
key: "_destroy",
value: function _destroy() {
this.currentPlugin.destroy();
jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off('.zf.ResponsiveMenu');
}
}]);
return ResponsiveMenu;
}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_3__["Plugin"]);
ResponsiveMenu.defaults = {};
//# sourceURL=webpack:///./js/foundation.responsiveMenu.js?
|
#29 JavaScript::Eval (size: 17746, repeated: 1) - SHA256: 4ec80edfd534c1347563cfb3c9b8037a28b6e67eb4da59c24f74eb998c5fb4aa
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */
__webpack_require__.d(__webpack_exports__, "Dropdown", function() {
return Dropdown;
});
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! jquery */ "jquery");
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */
var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! ./foundation.util.keyboard */ "./js/foundation.util.keyboard.js");
/* harmony import */
var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
/* harmony import */
var _foundation_positionable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! ./foundation.positionable */ "./js/foundation.positionable.js");
/* harmony import */
var _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( /*! ./foundation.util.triggers */ "./js/foundation.util.triggers.js");
function _typeof(obj) {
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function _typeof(obj) {
return typeof obj;
};
} else {
_typeof = function _typeof(obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
return _typeof(obj);
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a 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);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
function _possibleConstructorReturn(self, call) {
if (call && (_typeof(call) === "object" || typeof call === "function")) {
return call;
}
return _assertThisInitialized(self);
}
function _assertThisInitialized(self) {
if (self === void 0) {
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}
return self;
}
function _get(target, property, receiver) {
if (typeof Reflect !== "undefined" && Reflect.get) {
_get = Reflect.get;
} else {
_get = function _get(target, property, receiver) {
var base = _superPropBase(target, property);
if (!base) return;
var desc = Object.getOwnPropertyDescriptor(base, property);
if (desc.get) {
return desc.get.call(receiver);
}
return desc.value;
};
}
return _get(target, property, receiver || target);
}
function _superPropBase(object, property) {
while (!Object.prototype.hasOwnProperty.call(object, property)) {
object = _getPrototypeOf(object);
if (object === null) break;
}
return object;
}
function _getPrototypeOf(o) {
_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
return o.__proto__ || Object.getPrototypeOf(o);
};
return _getPrototypeOf(o);
}
function _inherits(subClass, superClass) {
if (typeof superClass !== "function" && superClass !== null) {
throw new TypeError("Super expression must either be null or a function");
}
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
writable: true,
configurable: true
}
});
if (superClass) _setPrototypeOf(subClass, superClass);
}
function _setPrototypeOf(o, p) {
_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
o.__proto__ = p;
return o;
};
return _setPrototypeOf(o, p);
}
/**
* Dropdown module.
* @module foundation.dropdown
* @requires foundation.util.keyboard
* @requires foundation.util.box
* @requires foundation.util.triggers
*/
var Dropdown =
/*#__PURE__*/
function(_Positionable) {
_inherits(Dropdown, _Positionable);
function Dropdown() {
_classCallCheck(this, Dropdown);
return _possibleConstructorReturn(this, _getPrototypeOf(Dropdown).apply(this, arguments));
}
_createClass(Dropdown, [{
key: "_setup",
/**
* Creates a new instance of a dropdown.
* @class
* @name Dropdown
* @param {jQuery} element - jQuery object to make into a dropdown.
* Object should be of the dropdown panel, rather than its anchor.
* @param {Object} options - Overrides to the default plugin settings.
*/
value: function _setup(element, options) {
this.$element = element;
this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, Dropdown.defaults, this.$element.data(), options);
this.className = 'Dropdown'; // ie9 back compat
// Triggers init is idempotent, just need to make sure it is initialized
_foundation_util_triggers__WEBPACK_IMPORTED_MODULE_4__["Triggers"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a);
this._init();
_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].register('Dropdown', {
'ENTER': 'toggle',
'SPACE': 'toggle',
'ESCAPE': 'close'
});
}
/**
* Initializes the plugin by setting/checking options and attributes, adding helper variables, and saving the anchor.
* @function
* @private
*/
}, {
key: "_init",
value: function _init() {
var $id = this.$element.attr('id');
this.$anchors = jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-toggle=\"".concat($id, "\"]")).length ? jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-toggle=\"".concat($id, "\"]")) : jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-open=\"".concat($id, "\"]"));
this.$anchors.attr({
'aria-controls': $id,
'data-is-focus': false,
'data-yeti-box': $id,
'aria-haspopup': true,
'aria-expanded': false
});
this._setCurrentAnchor(this.$anchors.first());
if (this.options.parentClass) {
this.$parent = this.$element.parents('.' + this.options.parentClass);
} else {
this.$parent = null;
} // Set [aria-labelledby] on the Dropdown if it is not set
if (typeof this.$element.attr('aria-labelledby') === 'undefined') {
// Get the anchor ID or create one
if (typeof this.$currentAnchor.attr('id') === 'undefined') {
this.$currentAnchor.attr('id', Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["GetYoDigits"])(6, 'dd-anchor'));
}
;
this.$element.attr('aria-labelledby', this.$currentAnchor.attr('id'));
}
this.$element.attr({
'aria-hidden': 'true',
'data-yeti-box': $id,
'data-resize': $id
});
_get(_getPrototypeOf(Dropdown.prototype), "_init", this).call(this);
this._events();
}
}, {
key: "_getDefaultPosition",
value: function _getDefaultPosition() {
// handle legacy classnames
var position = this.$element[0].className.match(/(top|left|right|bottom)/g);
if (position) {
return position[0];
} else {
return 'bottom';
}
}
}, {
key: "_getDefaultAlignment",
value: function _getDefaultAlignment() {
// handle legacy float approach
var horizontalPosition = /float-(\S+)/.exec(this.$currentAnchor.attr('class'));
if (horizontalPosition) {
return horizontalPosition[1];
}
return _get(_getPrototypeOf(Dropdown.prototype), "_getDefaultAlignment", this).call(this);
}
/**
* Sets the position and orientation of the dropdown pane, checks for collisions if allow-overlap is not true.
* Recursively calls itself if a collision is detected, with a new position class.
* @function
* @private
*/
}, {
key: "_setPosition",
value: function _setPosition() {
this.$element.removeClass("has-position-".concat(this.position, " has-alignment-").concat(this.alignment));
_get(_getPrototypeOf(Dropdown.prototype), "_setPosition", this).call(this, this.$currentAnchor, this.$element, this.$parent);
this.$element.addClass("has-position-".concat(this.position, " has-alignment-").concat(this.alignment));
}
/**
* Make it a current anchor.
* Current anchor as the reference for the position of Dropdown panes.
* @param {HTML} el - DOM element of the anchor.
* @function
* @private
*/
}, {
key: "_setCurrentAnchor",
value: function _setCurrentAnchor(el) {
this.$currentAnchor = jquery__WEBPACK_IMPORTED_MODULE_0___default()(el);
}
/**
* Adds event listeners to the element utilizing the triggers utility library.
* @function
* @private
*/
}, {
key: "_events",
value: function _events() {
var _this = this;
this.$element.on({
'open.zf.trigger': this.open.bind(this),
'close.zf.trigger': this.close.bind(this),
'toggle.zf.trigger': this.toggle.bind(this),
'resizeme.zf.trigger': this._setPosition.bind(this)
});
this.$anchors.off('click.zf.trigger').on('click.zf.trigger', function() {
_this._setCurrentAnchor(this);
});
if (this.options.hover) {
this.$anchors.off('mouseenter.zf.dropdown mouseleave.zf.dropdown').on('mouseenter.zf.dropdown', function() {
_this._setCurrentAnchor(this);
var bodyData = jquery__WEBPACK_IMPORTED_MODULE_0___default()('body').data();
if (typeof bodyData.whatinput === 'undefined' || bodyData.whatinput === 'mouse') {
clearTimeout(_this.timeout);
_this.timeout = setTimeout(function() {
_this.open();
_this.$anchors.data('hover', true);
}, _this.options.hoverDelay);
}
}).on('mouseleave.zf.dropdown', Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["ignoreMousedisappear"])(function() {
clearTimeout(_this.timeout);
_this.timeout = setTimeout(function() {
_this.close();
_this.$anchors.data('hover', false);
}, _this.options.hoverDelay);
}));
if (this.options.hoverPane) {
this.$element.off('mouseenter.zf.dropdown mouseleave.zf.dropdown').on('mouseenter.zf.dropdown', function() {
clearTimeout(_this.timeout);
}).on('mouseleave.zf.dropdown', Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["ignoreMousedisappear"])(function() {
clearTimeout(_this.timeout);
_this.timeout = setTimeout(function() {
_this.close();
_this.$anchors.data('hover', false);
}, _this.options.hoverDelay);
}));
}
}
this.$anchors.add(this.$element).on('keydown.zf.dropdown', function(e) {
var $target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),
visibleFocusableElements = _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].findFocusable(_this.$element);
_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].handleKey(e, 'Dropdown', {
open: function open() {
if ($target.is(_this.$anchors) && !$target.is('input, textarea')) {
_this.open();
_this.$element.attr('tabindex', -1).focus();
e.preventDefault();
}
},
close: function close() {
_this.close();
_this.$anchors.focus();
}
});
});
}
/**
* Adds an event handler to the body to close any dropdowns on a click.
* @function
* @private
*/
}, {
key: "_addBodyHandler",
value: function _addBodyHandler() {
var $body = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.body).not(this.$element),
_this = this;
$body.off('click.zf.dropdown').on('click.zf.dropdown', function(e) {
if (_this.$anchors.is(e.target) || _this.$anchors.find(e.target).length) {
return;
}
if (_this.$element.is(e.target) || _this.$element.find(e.target).length) {
return;
}
_this.close();
$body.off('click.zf.dropdown');
});
}
/**
* Opens the dropdown pane, and fires a bubbling event to close other dropdowns.
* @function
* @fires Dropdown#closeme
* @fires Dropdown#show
*/
}, {
key: "open",
value: function open() {
// var _this = this;
/**
* Fires to close other open dropdowns, typically when dropdown is opening
* @event Dropdown#closeme
*/
this.$element.trigger('closeme.zf.dropdown', this.$element.attr('id'));
this.$anchors.addClass('hover').attr({
'aria-expanded': true
}); // this.$element/*.show()*/;
this.$element.addClass('is-opening');
this._setPosition();
this.$element.removeClass('is-opening').addClass('is-open').attr({
'aria-hidden': false
});
if (this.options.autoFocus) {
var $focusable = _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].findFocusable(this.$element);
if ($focusable.length) {
$focusable.eq(0).focus();
}
}
if (this.options.closeOnClick) {
this._addBodyHandler();
}
if (this.options.trapFocus) {
_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].trapFocus(this.$element);
}
/**
* Fires once the dropdown is visible.
* @event Dropdown#show
*/
this.$element.trigger('show.zf.dropdown', [this.$element]);
}
/**
* Closes the open dropdown pane.
* @function
* @fires Dropdown#hide
*/
}, {
key: "close",
value: function close() {
if (!this.$element.hasClass('is-open')) {
return false;
}
this.$element.removeClass('is-open').attr({
'aria-hidden': true
});
this.$anchors.removeClass('hover').attr('aria-expanded', false);
/**
* Fires once the dropdown is no longer visible.
* @event Dropdown#hide
*/
this.$element.trigger('hide.zf.dropdown', [this.$element]);
if (this.options.trapFocus) {
_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].releaseFocus(this.$element);
}
}
/**
* Toggles the dropdown pane's visibility.
* @function
*/
}, {
key: "toggle",
value: function toggle() {
if (this.$element.hasClass('is-open')) {
if (this.$anchors.data('hover')) return;
this.close();
} else {
this.open();
}
}
/**
* Destroys the dropdown.
* @function
*/
}, {
key: "_destroy",
value: function _destroy() {
this.$element.off('.zf.trigger').hide();
this.$anchors.off('.zf.dropdown');
jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.body).off('click.zf.dropdown');
}
}]);
return Dropdown;
}(_foundation_positionable__WEBPACK_IMPORTED_MODULE_3__["Positionable"]);
Dropdown.defaults = {
/**
* Class that designates bounding container of Dropdown (default: window)
* @option
* @type {?string}
* @default null
*/
parentClass: null,
/**
* Amount of time to delay opening a submenu on hover event.
* @option
* @type {number}
* @default 250
*/
hoverDelay: 250,
/**
* Allow submenus to open on hover events
* @option
* @type {boolean}
* @default false
*/
hover: false,
/**
* Don't close dropdown when hovering over dropdown pane
* @option
* @type {boolean}
* @default false
*/
hoverPane: false,
/**
* Number of pixels between the dropdown pane and the triggering element on open.
* @option
* @type {number}
* @default 0
*/
vOffset: 0,
/**
* Number of pixels between the dropdown pane and the triggering element on open.
* @option
* @type {number}
* @default 0
*/
hOffset: 0,
/**
* Position of dropdown. Can be left, right, bottom, top, or auto.
* @option
* @type {string}
* @default 'auto'
*/
position: 'auto',
/**
* Alignment of dropdown relative to anchor. Can be left, right, bottom, top, center, or auto.
* @option
* @type {string}
* @default 'auto'
*/
alignment: 'auto',
/**
* Allow overlap of container/window. If false, dropdown will first try to position as defined by data-position and data-alignment, but reposition if it would cause an overflow.
* @option
* @type {boolean}
* @default false
*/
allowOverlap: false,
/**
* Allow overlap of only the bottom of the container. This is the most common
* behavior for dropdowns, allowing the dropdown to extend the bottom of the
* screen but not otherwise influence or break out of the container.
* @option
* @type {boolean}
* @default true
*/
allowBottomOverlap: true,
/**
* Allow the plugin to trap focus to the dropdown pane if opened with keyboard commands.
* @option
* @type {boolean}
* @default false
*/
trapFocus: false,
/**
* Allow the plugin to set focus to the first focusable element within the pane, regardless of method of opening.
* @option
* @type {boolean}
* @default false
*/
autoFocus: false,
/**
* Allows a click on the body to close the dropdown.
* @option
* @type {boolean}
* @default false
*/
closeOnClick: false
};
//# sourceURL=webpack:///./js/foundation.dropdown.js?
|
#30 JavaScript::Eval (size: 14085, repeated: 1) - SHA256: f9c3c167758e5002b03d51d86cab6193d879f5515234a28f38847a384c200699
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */
__webpack_require__.d(__webpack_exports__, "ResponsiveAccordionTabs", function() {
return ResponsiveAccordionTabs;
});
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! jquery */ "jquery");
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */
var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! ./foundation.util.mediaQuery */ "./js/foundation.util.mediaQuery.js");
/* harmony import */
var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
/* harmony import */
var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! ./foundation.core.plugin */ "./js/foundation.core.plugin.js");
/* harmony import */
var _foundation_accordion__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( /*! ./foundation.accordion */ "./js/foundation.accordion.js");
/* harmony import */
var _foundation_tabs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__( /*! ./foundation.tabs */ "./js/foundation.tabs.js");
function _typeof(obj) {
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function _typeof(obj) {
return typeof obj;
};
} else {
_typeof = function _typeof(obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
return _typeof(obj);
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a 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);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
function _possibleConstructorReturn(self, call) {
if (call && (_typeof(call) === "object" || typeof call === "function")) {
return call;
}
return _assertThisInitialized(self);
}
function _assertThisInitialized(self) {
if (self === void 0) {
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}
return self;
}
function _getPrototypeOf(o) {
_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
return o.__proto__ || Object.getPrototypeOf(o);
};
return _getPrototypeOf(o);
}
function _inherits(subClass, superClass) {
if (typeof superClass !== "function" && superClass !== null) {
throw new TypeError("Super expression must either be null or a function");
}
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
writable: true,
configurable: true
}
});
if (superClass) _setPrototypeOf(subClass, superClass);
}
function _setPrototypeOf(o, p) {
_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
o.__proto__ = p;
return o;
};
return _setPrototypeOf(o, p);
}
// The plugin matches the plugin classes with these plugin instances.
var MenuPlugins = {
tabs: {
cssClass: 'tabs',
plugin: _foundation_tabs__WEBPACK_IMPORTED_MODULE_5__["Tabs"]
},
accordion: {
cssClass: 'accordion',
plugin: _foundation_accordion__WEBPACK_IMPORTED_MODULE_4__["Accordion"]
}
};
/**
* ResponsiveAccordionTabs module.
* @module foundation.responsiveAccordionTabs
* @requires foundation.util.motion
* @requires foundation.accordion
* @requires foundation.tabs
*/
var ResponsiveAccordionTabs =
/*#__PURE__*/
function(_Plugin) {
_inherits(ResponsiveAccordionTabs, _Plugin);
function ResponsiveAccordionTabs() {
_classCallCheck(this, ResponsiveAccordionTabs);
return _possibleConstructorReturn(this, _getPrototypeOf(ResponsiveAccordionTabs).apply(this, arguments));
}
_createClass(ResponsiveAccordionTabs, [{
key: "_setup",
/**
* Creates a new instance of a responsive accordion tabs.
* @class
* @name ResponsiveAccordionTabs
* @fires ResponsiveAccordionTabs#init
* @param {jQuery} element - jQuery object to make into Responsive Accordion Tabs.
* @param {Object} options - Overrides to the default plugin settings.
*/
value: function _setup(element, options) {
this.$element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element);
this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, this.$element.data(), options);
this.rules = this.$element.data('responsive-accordion-tabs');
this.currentMq = null;
this.currentPlugin = null;
this.className = 'ResponsiveAccordionTabs'; // ie9 back compat
if (!this.$element.attr('id')) {
this.$element.attr('id', Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["GetYoDigits"])(6, 'responsiveaccordiontabs'));
}
;
this._init();
this._events();
}
/**
* Initializes the Menu by parsing the classes from the 'data-responsive-accordion-tabs' attribute on the element.
* @function
* @private
*/
}, {
key: "_init",
value: function _init() {
_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"]._init(); // The first time an Interchange plugin is initialized, this.rules is converted from a string of "classes" to an object of rules
if (typeof this.rules === 'string') {
var rulesTree = {}; // Parse rules from "classes" pulled from data attribute
var rules = this.rules.split(' '); // Iterate through every rule found
for (var i = 0; i < rules.length; i++) {
var rule = rules[i].split('-');
var ruleSize = rule.length > 1 ? rule[0] : 'small';
var rulePlugin = rule.length > 1 ? rule[1] : rule[0];
if (MenuPlugins[rulePlugin] !== null) {
rulesTree[ruleSize] = MenuPlugins[rulePlugin];
}
}
this.rules = rulesTree;
}
this._getAllOptions();
if (!jquery__WEBPACK_IMPORTED_MODULE_0___default.a.isEmptyObject(this.rules)) {
this._checkMediaQueries();
}
}
}, {
key: "_getAllOptions",
value: function _getAllOptions() {
//get all defaults and options
var _this = this;
_this.allOptions = {};
for (var key in MenuPlugins) {
if (MenuPlugins.hasOwnProperty(key)) {
var obj = MenuPlugins[key];
try {
var dummyPlugin = jquery__WEBPACK_IMPORTED_MODULE_0___default()('<ul></ul>');
var tmpPlugin = new obj.plugin(dummyPlugin, _this.options);
for (var keyKey in tmpPlugin.options) {
if (tmpPlugin.options.hasOwnProperty(keyKey) && keyKey !== 'zfPlugin') {
var objObj = tmpPlugin.options[keyKey];
_this.allOptions[keyKey] = objObj;
}
}
tmpPlugin.destroy();
} catch (e) {}
}
}
}
/**
* Initializes events for the Menu.
* @function
* @private
*/
}, {
key: "_events",
value: function _events() {
this._changedZfMediaQueryHandler = this._checkMediaQueries.bind(this);
jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('changed.zf.mediaquery', this._changedZfMediaQueryHandler);
}
/**
* Checks the current screen width against available media queries. If the media query has changed, and the plugin needed has changed, the plugins will swap out.
* @function
* @private
*/
}, {
key: "_checkMediaQueries",
value: function _checkMediaQueries() {
var matchedMq,
_this = this; // Iterate through each rule and find the last matching rule
jquery__WEBPACK_IMPORTED_MODULE_0___default.a.each(this.rules, function(key) {
if (_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"].atLeast(key)) {
matchedMq = key;
}
}); // No match? No dice
if (!matchedMq) return; // Plugin already initialized? We good
if (this.currentPlugin instanceof this.rules[matchedMq].plugin) return; // Remove existing plugin-specific CSS classes
jquery__WEBPACK_IMPORTED_MODULE_0___default.a.each(MenuPlugins, function(key, value) {
_this.$element.removeClass(value.cssClass);
}); // Add the CSS class for the new plugin
this.$element.addClass(this.rules[matchedMq].cssClass); // Create an instance of the new plugin
if (this.currentPlugin) {
//don't know why but on nested elements data zfPlugin get's lost
if (!this.currentPlugin.$element.data('zfPlugin') && this.storezfData) this.currentPlugin.$element.data('zfPlugin', this.storezfData);
this.currentPlugin.destroy();
}
this._handleMarkup(this.rules[matchedMq].cssClass);
this.currentPlugin = new this.rules[matchedMq].plugin(this.$element, {});
this.storezfData = this.currentPlugin.$element.data('zfPlugin');
}
}, {
key: "_handleMarkup",
value: function _handleMarkup(toSet) {
var _this = this,
fromString = 'accordion';
var $panels = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-tabs-content=' + this.$element.attr('id') + ']');
if ($panels.length) fromString = 'tabs';
if (fromString === toSet) {
return;
}
;
var tabsTitle = _this.allOptions.linkClass ? _this.allOptions.linkClass : 'tabs-title';
var tabsPanel = _this.allOptions.panelClass ? _this.allOptions.panelClass : 'tabs-panel';
this.$element.removeAttr('role');
var $liHeads = this.$element.children('.' + tabsTitle + ',[data-accordion-item]').removeClass(tabsTitle).removeClass('accordion-item').removeAttr('data-accordion-item');
var $liHeadsA = $liHeads.children('a').removeClass('accordion-title');
if (fromString === 'tabs') {
$panels = $panels.children('.' + tabsPanel).removeClass(tabsPanel).removeAttr('role').removeAttr('aria-hidden').removeAttr('aria-labelledby');
$panels.children('a').removeAttr('role').removeAttr('aria-controls').removeAttr('aria-selected');
} else {
$panels = $liHeads.children('[data-tab-content]').removeClass('accordion-content');
}
;
$panels.css({
display: '',
visibility: ''
});
$liHeads.css({
display: '',
visibility: ''
});
if (toSet === 'accordion') {
$panels.each(function(key, value) {
jquery__WEBPACK_IMPORTED_MODULE_0___default()(value).appendTo($liHeads.get(key)).addClass('accordion-content').attr('data-tab-content', '').removeClass('is-active').css({
height: ''
});
jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-tabs-content=' + _this.$element.attr('id') + ']').after('<div id="tabs-placeholder-' + _this.$element.attr('id') + '"></div>').detach();
$liHeads.addClass('accordion-item').attr('data-accordion-item', '');
$liHeadsA.addClass('accordion-title');
});
} else if (toSet === 'tabs') {
var $tabsContent = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-tabs-content=' + _this.$element.attr('id') + ']');
var $placeholder = jquery__WEBPACK_IMPORTED_MODULE_0___default()('#tabs-placeholder-' + _this.$element.attr('id'));
if ($placeholder.length) {
$tabsContent = jquery__WEBPACK_IMPORTED_MODULE_0___default()('<div class="tabs-content"></div>').insertAfter($placeholder).attr('data-tabs-content', _this.$element.attr('id'));
$placeholder.remove();
} else {
$tabsContent = jquery__WEBPACK_IMPORTED_MODULE_0___default()('<div class="tabs-content"></div>').insertAfter(_this.$element).attr('data-tabs-content', _this.$element.attr('id'));
}
;
$panels.each(function(key, value) {
var tempValue = jquery__WEBPACK_IMPORTED_MODULE_0___default()(value).appendTo($tabsContent).addClass(tabsPanel);
var hash = $liHeadsA.get(key).hash.slice(1);
var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(value).attr('id') || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["GetYoDigits"])(6, 'accordion');
if (hash !== id) {
if (hash !== '') {
jquery__WEBPACK_IMPORTED_MODULE_0___default()(value).attr('id', hash);
} else {
hash = id;
jquery__WEBPACK_IMPORTED_MODULE_0___default()(value).attr('id', hash);
jquery__WEBPACK_IMPORTED_MODULE_0___default()($liHeadsA.get(key)).attr('href', jquery__WEBPACK_IMPORTED_MODULE_0___default()($liHeadsA.get(key)).attr('href').replace('#', '') + '#' + hash);
}
;
}
;
var isActive = jquery__WEBPACK_IMPORTED_MODULE_0___default()($liHeads.get(key)).hasClass('is-active');
if (isActive) {
tempValue.addClass('is-active');
}
;
});
$liHeads.addClass(tabsTitle);
}
;
}
/**
* Destroys the instance of the current plugin on this element, as well as the window resize handler that switches the plugins out.
* @function
*/
}, {
key: "_destroy",
value: function _destroy() {
if (this.currentPlugin) this.currentPlugin.destroy();
jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off('changed.zf.mediaquery', this._changedZfMediaQueryHandler);
}
}]);
return ResponsiveAccordionTabs;
}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_3__["Plugin"]);
ResponsiveAccordionTabs.defaults = {};
//# sourceURL=webpack:///./js/foundation.responsiveAccordionTabs.js?
|
#31 JavaScript::Eval (size: 75158, repeated: 1) - SHA256: dfbabef74fc015463aa8111d20e4350e9995749f47bb4d2bd42ee94ca7e2d0bc
! function($, D) {
function px(a) {
var b = {};
for (var c in a) b[c] = a[c] + "px";
return b
}
function pyth(a, b) {
return Math.sqrt(a * a + b * b)
}
function degrees(a) {
return 180 * a / Math.PI
}
function radian(a) {
return a * Math.PI / 180
}
function sfcc(a) {
return String.fromCharCode.apply(String, a.split(","))
}
function warn(a) {
D.console && console[console.warn ? "warn" : "log"](a)
}
function createHTML(a) {
var b = "<" + a.tag;
for (var c in a) $.inArray(c, "children html tag".split(" ")) < 0 && (b += " " + c + '="' + a[c] + '"');
return new RegExp("^(?:area|base|basefont|br|col|frame|hr|img|input|link|isindex|meta|param|range|spacer|wbr)$", "i").test(a.tag) ? b += "/>" : (b += ">", a.children && $.each(a.children, function(a, c) {
b += createHTML(c)
}), a.html && (b += a.html), b += "</" + a.tag + ">"), b
}
function deepExtend(a, b) {
for (var c in b) b[c] && b[c].constructor && b[c].constructor === Object ? (a[c] = _.clone(a[c]) || {}, deepExtend(a[c], b[c])) : a[c] = b[c];
return a
}
function deepExtendClone(a, b) {
return deepExtend(_.clone(a), b)
}
function View() {
this.initialize.apply(this, arguments)
}
function detectType(a, b) {
var c, d = (b || detectExtension(a) || "").toLowerCase();
return $("flash image iframe quicktime".split(" ")).each(function(a, b) {
$.inArray(d, Lightview.extensions[b].split(" ")) > -1 && (c = b)
}), c ? c : "#" == a.substr(0, 1) ? "inline" : document.domain && document.domain != a.replace(/(^.*\/\/)|(:.*)|(\/.*)/g, "") ? "iframe" : "image"
}
function detectExtension(a) {
var b = (a || "").replace(/\?.*/g, "").match(/\.([^.]{3,4})$/);
return b ? b[1] : null
}
function deferUntil(a, b) {
var c = $.extend({
lifetime: 3e5,
iteration: 10,
fail: null
}, arguments[2] || {}),
d = 0;
return a._interval = D.setInterval($.proxy(function() {
return d += c.iteration, b() ? (D.clearInterval(a._interval), a(), void 0) : (d >= c.lifetime && (D.clearInterval(a._interval), c.fail && c.fail()), void 0)
}, a), c.iteration), a._interval
}! function() {
function a(a) {
var b;
if (a.originalEvent.wheelDelta ? b = a.originalEvent.wheelDelta / 120 : a.originalEvent.detail && (b = -a.originalEvent.detail / 3), b) {
var c = $.Event("lightview:mousewheel");
$(a.target).trigger(c, b), c.isPropagationStopped() && a.stopPropagation(), c.isDefaultPrevented() && a.preventDefault()
}
}
$(document.documentElement).bind("mousewheel DOMMouseScroll", a)
}();
var E = {};
! function() {
var a = {};
$.extend(a, {
Quart: function(a) {
return Math.pow(a, 4)
}
}), $.each(a, function(a, b) {
E["easeIn" + a] = b, E["easeOut" + a] = function(a) {
return 1 - b(1 - a)
}, E["easeInOut" + a] = function(a) {
return .5 > a ? b(2 * a) / 2 : 1 - b(-2 * a + 2) / 2
}
}), $.each(E, function(a, b) {
$.easing[a] || ($.easing[a] = b)
})
}();
var F = Array.prototype.slice,
_ = {
clone: function(a) {
return $.extend({}, a)
},
isElement: function(a) {
return a && 1 == a.nodeType
},
element: {
isAttached: function() {
function a(a) {
for (var b = a; b && b.parentNode;) b = b.parentNode;
return b
}
return function(b) {
var c = a(b);
return !(!c || !c.body)
}
}()
}
},
Browser = function(a) {
function b(b) {
var c = new RegExp(b + "([\\d.]+)").exec(a);
return c ? parseFloat(c[1]) : !0
}
return {
IE: !(!D.attachEvent || -1 !== a.indexOf("Opera")) && b("MSIE "),
Opera: a.indexOf("Opera") > -1 && (!!D.opera && opera.version && parseFloat(opera.version()) || 7.55),
WebKit: a.indexOf("AppleWebKit/") > -1 && b("AppleWebKit/"),
Gecko: a.indexOf("Gecko") > -1 && -1 === a.indexOf("KHTML") && b("rv:"),
MobileSafari: !!a.match(/Apple.*Mobile.*Safari/),
Chrome: a.indexOf("Chrome") > -1 && b("Chrome/")
}
}(navigator.userAgent),
getUniqueID = function() {
var a = 0,
b = "lv_identity_";
return function(c) {
for (c = c || b, a++; document.getElementById(c + a);) a++;
return c + a
}
}(),
Requirements = {
scripts: {
jQuery: {
required: "1.4.4",
available: D.jQuery && jQuery.fn.jquery
},
SWFObject: {
required: "2.2",
available: D.swfobject && swfobject.ua && "2.2"
},
Spinners: {
required: "3.0.0",
available: D.Spinners && (Spinners.version || Spinners.Version)
}
},
check: function() {
function b(b) {
for (var c = b.match(a), d = c && c[1] && c[1].split(".") || [], e = 0, f = 0, g = d.length; g > f; f++) e += parseInt(d[f] * Math.pow(10, 6 - 2 * f));
return c && c[3] ? e - 1 : e
}
var a = /^(\d+(\.?\d+){0,3})([A-Za-z_-]+[A-Za-z0-9]+)?/;
return function(a) {
(!this.scripts[a].available || b(this.scripts[a].available) < b(this.scripts[a].required) && !this.scripts[a].notified) && (this.scripts[a].notified = !0, warn("Lightview requires " + a + " >= " + this.scripts[a].required))
}
}()
};
! function() {
$(document).ready(function() {
function b(b) {
var c = !1;
if (a) c = $.map(F.call(navigator.plugins), function(a) {
return a.name
}).join(",").indexOf(b) >= 0;
else try {
c = new ActiveXObject(b)
} catch (d) {}
return !!c
}
var a = navigator.plugins && navigator.plugins.length;
Lightview.plugins = a ? {
flash: b("Shockwave Flash"),
quicktime: b("QuickTime")
} : {
flash: b("ShockwaveFlash.ShockwaveFlash"),
quicktime: b("QuickTime.QuickTime")
}
})
}(), $.extend(!0, Lightview, function() {
function c(a) {
return e(a, "prefix")
}
function d(b, c) {
for (var d in b)
if (void 0 !== a.style[b[d]]) return "prefix" == c ? b[d] : !0;
return !1
}
function e(a, c) {
var e = a.charAt(0).toUpperCase() + a.substr(1),
f = (a + " " + b.join(e + " ") + e).split(" ");
return d(f, c)
}
function g() {
Requirements.check("jQuery"), (this.support.canvas || Browser.IE) && (D.G_vmlCanvasManager && D.G_vmlCanvasManager.init_(document), Overlay.init(), Window.init(), Window.center(), I.init())
}
var a = document.createElement("div"),
b = "Webkit Moz O ms Khtml".split(" "),
f = {
canvas: function() {
var a = document.createElement("canvas");
return !(!a.getContext || !a.getContext("2d"))
}(),
touch: function() {
try {
return !!document.createEvent("TouchEvent")
} catch (a) {
return !1
}
}(),
css: {
boxShadow: e("boxShadow"),
borderRadius: e("borderRadius"),
transitions: function() {
var a = ["WebKitTransitionEvent", "TransitionEvent", "OTransitionEvent"],
b = !1;
return $.each(a, function(a, c) {
try {
document.createEvent(c), b = !0
} catch (d) {}
}), b
}(),
expressions: Browser.IE && Browser.IE < 7,
prefixed: c
}
};
return {
init: g,
support: f
}
}());
var G = function() {
function c(c, d) {
c = c || {}, c.skin = c.skin || (Lightview.Skins[Window.defaultSkin] ? Window.defaultSkin : "lightview");
var e = c.skin ? _.clone(Lightview.Skins[c.skin] || Lightview.Skins[Window.defaultSkin]) : {},
f = deepExtendClone(b, e);
d && (f = deepExtend(f, f.initialTypeOptions[d]));
var g = deepExtendClone(f, c);
if (g.ajax) {
if ("boolean" == $.type(g.ajax)) {
var h = b.ajax || {},
i = a.ajax;
g.ajax = {
cache: h.cache || i.cache,
type: h.type || i.type
}
}
g.ajax = deepExtendClone(i, g.ajax)
}
if (g.controls && (g.controls = "string" == $.type(g.controls) ? deepExtendClone(f.controls || b.controls || a.controls, {
type: g.controls
}) : deepExtendClone(a.controls, g.controls)), "string" == $.type(g.background)) g.background = {
color: g.background,
opacity: 1
};
else if (g.background) {
var j = g.background,
k = j.opacity,
l = j.color;
g.background = {
opacity: "number" == $.type(k) ? k : 1,
color: "string" == $.type(l) ? l : "#000"
}
}
if (g.effects || (g.effects = {}, $.each(a.effects, function(a, b) {
$.each(g.effects[a] = $.extend({}, b), function(b) {
g.effects[a][b] = 0
})
})), Browser.MobileSafari) {
var m = g.effects.overlay;
m.show = 0, m.hide = 0
}
if (g.effects && !Lightview.support.canvas && Browser.IE && Browser.IE < 9) {
var n = g.effects;
Browser.IE < 7 && $.extend(!0, n, {
caption: {
show: 0,
hide: 0
},
window: {
show: 0,
hide: 0,
resize: 0
},
content: {
show: 0,
hide: 0
},
spinner: {
show: 0,
hide: 0
},
slider: {
slide: 0
}
}), $.extend(!0, n, {
sides: {
show: 0,
hide: 0
}
})
}
if (g.border) {
var o, p = b.border || {},
q = a.border;
o = "number" == $.type(g.border) ? {
size: g.border,
color: p.color || q.color,
opacity: p.opacity || q.opacity
} : "string" == $.type(g.border) ? {
size: p.size || q.size,
color: g.border,
opacity: p.opacity || q.opacity
} : deepExtendClone(q, g.border), g.border = 0 === o.size ? !1 : o
}
var r = a.position;
if (g.position || "number" == $.type(g.position)) {
var s, t = b.position || {};
s = "string" == $.type(g.position) ? {
at: g.position,
offset: t.offset || r.offset
} : "number" == $.type(g.position) ? {
at: "top",
offset: {
x: 0,
y: g.position
}
} : deepExtendClone(r, g.position), g.position = s
} else g.position = _.clone(r);
if (g.radius || "number" == $.type(g.radius)) {
var u, v = b.radius || {},
w = a.radius;
u = "number" == $.type(g.radius) ? {
size: g.radius,
position: v.position || w.position
} : "string" == $.type(g.radius) ? {
size: v.size || w.size,
position: g.position
} : deepExtendClone(w, g.radius), g.radius = u
}
if (g.shadow) {
var x, y = b.shadow,
z = a.shadow;
x = "boolean" == $.type(g.shadow) ? y && "shadow" == $.type(y) ? z : y ? y : z : deepExtendClone(z, g.shadow || {}), x.blur < 1 && (x = !1), g.shadow = x
}
if (g.thumbnail) {
var A, B = b.thumbnail || {},
C = a.thumbnail;
A = "string" == $.type(g.thumbnail) ? {
image: g.thumbnail,
icon: f.thumbnail && f.thumbnail.icon || B.icon || C.icon
} : deepExtendClone(C, g.thumbnail), g.thumbnail = A
}
return g.slideshow && "number" == $.type(g.slideshow) && (g.slideshow = {
delay: g.slideshow
}), "image" != d && (g.slideshow = !1), g
}
var a = Lightview.Skins.base,
b = deepExtendClone(a, Lightview.Skins.reset);
return {
create: c
}
}(),
Color = function() {
function c(a) {
var b = a;
return b.red = a[0], b.green = a[1], b.blue = a[2], b
}
function d(a) {
return parseInt(a, 16)
}
function e(a) {
var e = new Array(3);
if (0 == a.indexOf("#") && (a = a.substring(1)), a = a.toLowerCase(), "" != a.replace(b, "")) return null;
3 == a.length ? (e[0] = a.charAt(0) + a.charAt(0), e[1] = a.charAt(1) + a.charAt(1), e[2] = a.charAt(2) + a.charAt(2)) : (e[0] = a.substring(0, 2), e[1] = a.substring(2, 4), e[2] = a.substring(4));
for (var f = 0; f < e.length; f++) e[f] = d(e[f]);
return c(e)
}
function f(a, b) {
var c = e(a);
return c[3] = b, c.opacity = b, c
}
function g(a, b) {
return "undefined" == $.type(b) && (b = 1), "rgba(" + f(a, b).join() + ")"
}
function h(a) {
return "#" + (i(a)[2] > 50 ? "000" : "fff")
}
function i(a) {
return j(e(a))
}
function j(a) {
var f, g, h, a = c(a),
b = a.red,
d = a.green,
e = a.blue,
i = b > d ? b : d;
e > i && (i = e);
var j = d > b ? b : d;
if (j > e && (j = e), h = i / 255, g = 0 != i ? (i - j) / i : 0, 0 == g) f = 0;
else {
var k = (i - b) / (i - j),
l = (i - d) / (i - j),
m = (i - e) / (i - j);
f = b == i ? m - l : d == i ? 2 + k - m : 4 + l - k, f /= 6, 0 > f && (f += 1)
}
f = Math.round(360 * f), g = Math.round(100 * g), h = Math.round(100 * h);
var n = [];
return n[0] = f, n[1] = g, n[2] = h, n.hue = f, n.saturation = g, n.brightness = h, n
}
var a = "0123456789abcdef",
b = new RegExp("[" + a + "]", "g");
return {
hex2rgb: e,
hex2fill: g,
getSaturatedBW: h
}
}(),
Canvas = {
init: function() {
return D.G_vmlCanvasManager && !Lightview.support.canvas && Browser.IE ? function(a) {
G_vmlCanvasManager.initElement(a)
} : function() {}
}(),
resize: function(a, b) {
$(a).attr({
width: b.width * this.devicePixelRatio,
height: b.height * this.devicePixelRatio
}).css(px(b))
},
drawRoundedRectangle: function(a) {
var b = $.extend(!0, {
mergedCorner: !1,
expand: !1,
top: 0,
left: 0,
width: 0,
height: 0,
radius: 0
}, arguments[1] || {}),
c = b,
d = c.left,
e = c.top,
f = c.width,
g = c.height,
h = c.radius;
if (c.expand, b.expand) {
var j = 2 * h;
d -= h, e -= h, f += j, g += j
}
return h ? (a.beginPath(), a.moveTo(d + h, e), a.arc(d + f - h, e + h, h, radian(-90), radian(0), !1), a.arc(d + f - h, e + g - h, h, radian(0), radian(90), !1), a.arc(d + h, e + g - h, h, radian(90), radian(180), !1), a.arc(d + h, e + h, h, radian(-180), radian(-90), !1), a.closePath(), a.fill(), void 0) : (a.fillRect(e, d, f, g), void 0)
},
createFillStyle: function(a, b) {
var c;
if ("string" == $.type(b)) c = Color.hex2fill(b);
else if ("string" == $.type(b.color)) c = Color.hex2fill(b.color, "number" == $.type(b.opacity) ? b.opacity.toFixed(5) : 1);
else if ($.isArray(b.color)) {
var d = $.extend({
x1: 0,
y1: 0,
x2: 0,
y2: 0
}, arguments[2] || {});
c = Canvas.Gradient.addColorStops(a.createLinearGradient(d.x1, d.y1, d.x2, d.y2), b.color, b.opacity)
}
return c
},
dPA: function(a, b) {
var c = $.extend({
x: 0,
y: 0,
dimensions: !1,
color: "#000",
background: {
color: "#fff",
opacity: .7,
radius: 4
}
}, arguments[2] || {}),
d = c.background;
if (d && d.color) {
var e = c.dimensions;
a.fillStyle = Color.hex2fill(d.color, d.opacity), Canvas.drawRoundedRectangle(a, {
width: e.width,
height: e.height,
top: c.y,
left: c.x,
radius: d.radius || 0
})
}
for (var f = 0, g = b.length; g > f; f++)
for (var h = 0, i = b[f].length; i > h; h++) {
var j = parseInt(b[f].charAt(h)) * (1 / 9) || 0;
a.fillStyle = Color.hex2fill(c.color, j - .05), j && a.fillRect(c.x + h, c.y + f, 1, 1)
}
}
};
Canvas.Gradient = {
addColorStops: function(a, b) {
for (var c = "number" == $.type(arguments[2]) ? arguments[2] : 1, d = 0, e = b.length; e > d; d++) {
var f = b[d];
("undefined" == $.type(f.opacity) || "number" != $.type(f.opacity)) && (f.opacity = 1), a.addColorStop(f.position, Color.hex2fill(f.color, f.opacity * c))
}
return a
}
};
var H = {
_adjust: function(a) {
var b = Window.options;
if (!b) return a;
if (b.controls) switch (b.controls.type) {
case "top":
a.height -= J.Top.element.innerHeight();
break;
case "thumbnails":
Window.views && Window.views.length <= 1 || (a.height -= J.Thumbnails.element.innerHeight())
}
var c = b.position && b.position.offset;
return c && (c.x && (a.width -= c.x), c.y && (a.height -= c.y)), a
},
viewport: function() {
var a = {
height: $(D).height(),
width: $(D).width()
};
if (Browser.MobileSafari) {
var b = D.innerWidth,
c = D.innerHeight;
a.width = b, a.height = c
}
return H._adjust(a)
},
document: function() {
var a = {
height: $(document).height(),
width: $(document).width()
};
return a.height -= $(D).scrollTop(), a.width -= $(D).scrollLeft(), H._adjust(a)
},
inside: function(a) {
var b = this.viewport(),
c = Window.spacing,
d = c.horizontal,
e = c.vertical,
f = a.options,
g = f.padding || 0,
h = f.border.size || 0;
Math.max(d || 0, f.shadow && f.shadow.size || 0), Math.max(e || 0, f.shadow && f.shadow.size || 0);
var k = 2 * h - 2 * g;
return {
height: a.options.viewport ? b.height - k.y : 1 / 0,
width: b.width - k.x
}
}
},
Overlay = function() {
function b() {
this.options = {
background: "#000",
opacity: .7
}, this.build(), a && $(D).bind("resize", $.proxy(function() {
Overlay.element && Overlay.element.is(":visible") && Overlay.max()
}, this)), this.draw()
}
function c() {
if (this.element = $(document.createElement("div")).addClass("lv_overlay"), a && this.element.css({
position: "absolute"
}), $(document.body).prepend(this.element), a) {
var b = this.element[0].style;
b.setExpression("top", "((!!window.jQuery ? jQuery(window).scrollTop() : 0) + 'px')"), b.setExpression("left", "((!!window.jQuery ? jQuery(window).scrollLeft() : 0) + 'px')")
}
this.element.hide().bind("click", $.proxy(function() {
Window.options && Window.options.overlay && !Window.options.overlay.close || Window.hide()
}, this)).bind("lightview:mousewheel", $.proxy(function(a) {
(!Window.options || Window.options.mousewheel || "thumbnails" == J.type && Window.options && Window.options.controls && Window.options.controls.thumbnails && Window.options.controls.thumbnails.mousewheel || Window.options && Window.options.viewport) && (a.preventDefault(), a.stopPropagation())
}, this))
}
function d(a) {
this.options = a, this.draw()
}
function e() {
this.element.css({
"background-color": this.options.background
}), this.max()
}
function f(a) {
return this.max(), this.element.stop(!0), this.setOpacity(this.options.opacity, this.options.durations.show, a), this
}
function g(a) {
return this.element.stop(!0).fadeOut(this.options.durations.hide || 0, a), this
}
function h(a, b, c) {
this.element.fadeTo(b || 0, a, c)
}
function i() {
var a = {};
return $.each(["width", "height"], function(b, c) {
var d = c.substr(0, 1).toUpperCase() + c.substr(1),
e = document.documentElement;
a[c] = (Browser.IE ? Math.max(e["offset" + d], e["scroll" + d]) : Browser.WebKit ? document.body["scroll" + d] : e["scroll" + d]) || 0
}), a
}
function j() {
Browser.MobileSafari && Browser.WebKit && Browser.WebKit < 533.18 && this.element.css(px(i())), Browser.IE && this.element.css(px({
height: $(D).height(),
width: $(D).width()
}))
}
var a = Browser.IE && Browser.IE < 7;
return {
init: b,
build: c,
show: f,
hide: g,
setOpacity: h,
setOptions: d,
draw: e,
max: j
}
}(),
Window = {
defaultSkin: "dark",
init: function() {
this.setOptions(arguments[0] || {}), this._dimensions = {
content: {
width: 150,
height: 150
}
}, this._dimensions.window = this.getLayout(this._dimensions.content).window.dimensions;
var a = this.queues = [];
a.showhide = $({}), a.update = $({}), this.build()
},
setOptions: function(a) {
this.options = G.create(a || {});
var a = $.extend({
vars: !0
}, arguments[1] || {});
a.vars && this.setVars()
},
setVars: function(a) {
a = a || this.options, this.options = a, this.spacing = a.spacing[a.controls.type], this.padding = a.padding, this.spacing.vertical < 25 && (this.spacing.vertical = 25)
},
setSkin: function(a, b) {
b = b || {}, a && (b.skin = a);
var c = $.extend({
vars: !1
}, arguments[2] || {});
return this.setOptions(b, {
vars: c.vars
}), Overlay.setOptions($.extend(!0, {
durations: this.options.effects.overlay
}, this.options.overlay)), this.element[0].className = "lv_window lv_window_" + a, J.Top.setSkin(a), J.Thumbnails.setSkin(a), this.draw(), this
},
setDefaultSkin: function(a) {
Lightview.Skins[a] && (this.defaultSkin = a)
},
build: function() {
var a = {
height: 1e3,
width: 1e3
};
this.element = $(document.createElement("div")).addClass("lv_window"), this.element.append(this.skin = $("<div>").addClass("lv_skin")), this.skin.append(this.shadow = $("<div>").addClass("lv_shadow").append(this.canvasShadow = $("<canvas>").attr(a))), this.skin.append(this.bubble = $("<div>").addClass("lv_bubble").append(this.canvasBubble = $("<canvas>").attr(a))), this.skin.append(this.sideButtonsUnderneath = $("<div>").addClass("lv_side_buttons_underneath").append($("<div>").addClass("lv_side lv_side_left").data("side", "previous").append($("<div>").addClass("lv_side_button lv_side_button_previous").data("side", "previous")).hide()).append($("<div>").addClass("lv_side lv_side_right").data("side", "next").append($("<div>").addClass("lv_side_button lv_side_button_next").data("side", "next")).hide()).hide()), this.element.append(this.content = $("<div>").addClass("lv_content")), this.element.append(this.titleCaption = $("<div>").addClass("lv_title_caption").hide().append(this.titleCaptionSlide = $("<div>").addClass("lv_title_caption_slide").append(this.title = $("<div>").addClass("lv_title")).append(this.caption = $("<div>").addClass("lv_caption")))), this.element.append(this.innerPreviousNextOverlays = $("<div>").addClass("lv_inner_previous_next_overlays").append($("<div>").addClass("lv_button lv_button_inner_previous_overlay").data("side", "previous")).append($("<div>").addClass("lv_button lv_button_inner_next_overlay").data("side", "next").hide())), this.element.append(this.buttonTopClose = $("<div>").addClass("lv_button_top_close close_lightview").hide()), J.Relative.create(), J.Top.create(), J.Thumbnails.create(), this.skin.append(this.spinnerWrapper = $("<div>").addClass("lv_spinner_wrapper").hide()), $(document.body).prepend(this.element), Canvas.init(this.canvasShadow[0]), Canvas.init(this.canvasBubble[0]), this.ctxShadow = this.canvasShadow[0].getContext("2d"), this.ctxBubble = this.canvasBubble[0].getContext("2d"), this.applyFixes(), this.element.hide(), this.startObserving()
},
applyFixes: function() {
var a = $(document.documentElement);
$(document.body), Browser.IE && Browser.IE < 7 && "none" == a.css("background-image") && a.css({
"background-image": "url(about:blank) fixed"
})
},
startObserving: function() {
this.stopObserving(), this.element.delegate(".lv_inner_previous_next_overlays .lv_button, .lv_side_buttons_underneath .lv_side_button, .lv_side_buttons_underneath .lv_side", "mouseover touchmove", $.proxy(function(a) {
var b = $(a.target).data("side");
this.sideButtonsUnderneath.find(".lv_side_button_" + b).first().addClass("lv_side_button_out")
}, this)).delegate(".lv_inner_previous_next_overlays .lv_button, .lv_side_buttons_underneath .lv_side_button, .lv_side_buttons_underneath .lv_side", "mouseout", $.proxy(function(a) {
var b = $(a.target).data("side");
this.sideButtonsUnderneath.find(".lv_side_button_" + b).first().removeClass("lv_side_button_out")
}, this)).delegate(".lv_inner_previous_next_overlays .lv_button, .lv_side_buttons_underneath .lv_side_button, .lv_side_buttons_underneath .lv_side", "click", $.proxy(function(a) {
a.preventDefault(), a.stopPropagation();
var b = $(a.target).data("side");
this[b]()
}, this)).bind("lightview:mousewheel", $.proxy(function(a) {
$(a.target).closest(".lv_content")[0] || this.options && !this.options.viewport || (a.preventDefault(), a.stopPropagation())
}, this)).delegate(".close_lightview", "click", $.proxy(function() {
this.hide()
}, this)).bind("click", $.proxy(function(a) {
this.options && this.options.overlay && !this.options.overlay.close || $(a.target).is(".lv_window, .lv_skin, .lv_shadow") && this.hide()
}, this)).bind("click", $.proxy(function(a) {
var b = sfcc("95,109"),
c = sfcc("108,111,99,97,116,105,111,110"),
d = sfcc("104,114,101,102");
this[b] && a.target == this[b] && (D[c][d] = sfcc("104,116,116,112,58,47,47,112,114,111,106,101,99,116,115,46,110,105,99,107,115,116,97,107,101,110,98,117,114,103,46,99,111,109,47,108,105,103,104,116,118,105,101,119"))
}, this)), this.innerPreviousNextOverlays.add(this.titleCaption).bind("lightview:mousewheel", $.proxy(function(a, b) {
this.options && this.options.mousewheel && (a.preventDefault(), a.stopPropagation(), this[-1 == b ? "next" : "previous"]())
}, this)), Browser.MobileSafari && document.documentElement.addEventListener("gesturechange", $.proxy(function(a) {
this._pinchZoomed = a.scale > 1
}, this)), $(D).bind("scroll", $.proxy(function() {
if (this.element.is(":visible") && !this._pinchZoomed) {
var a = $(D).scrollTop(),
b = $(D).scrollLeft();
this.Timeouts.clear("scrolling"), this.Timeouts.set("scrolling", $.proxy(function() {
$(D).scrollTop() == a && $(D).scrollLeft() == b && this.options.viewport && this.element.is(":visible") && this.center()
}, this), 200)
}
}, this)).bind(Browser.MobileSafari ? "orientationchange" : "resize", $.proxy(function() {
this.element.is(":visible") && ($(D).scrollTop(), $(D).scrollLeft(), this.Timeouts.clear("resizing"), this.Timeouts.set("resizing", $.proxy(function() {
this.element.is(":visible") && (this.center(), "thumbnails" == J.type && J.Thumbnails.refresh(), Overlay.element.is(":visible") && Overlay.max())
}, this), 1))
}, this)), this.spinnerWrapper.bind("click", $.proxy(this.hide, this))
},
stopObserving: function() {
this.element.undelegate(".lv_inner_previous_next_overlays .lv_button, .lv_side_buttons_underneath .lv_side_button").undelegate(".lv_close")
},
draw: function() {
this.layout = this.getLayout(this._dimensions.content);
var a = this.layout,
b = a.bubble,
c = b.outer,
d = b.inner,
e = b.border;
this.element.is(":visible"), Lightview.support.canvas || this.skin.css({
width: "100%",
height: "100%"
});
var g = this.ctxBubble;
g.clearRect(0, 0, this.canvasBubble[0].width, this.canvasBubble[0].height), this.element.css(px(this._dimensions.window)), this.skin.css(px(a.skin.dimensions)), this.bubble.css(px(b.position)).css(px(c.dimensions)), this.canvasBubble.attr(c.dimensions), this.innerPreviousNextOverlays.css(px(c.dimensions)).css(px(b.position)), this.sideButtonsUnderneath.css("width", c.dimensions.width + "px").css("margin-left", -.5 * c.dimensions.width + "px");
var h = a.content,
i = h.dimensions,
j = h.position;
this.content.css(px(i)).css(px(j)), this.titleCaption.add(this.title).add(this.caption).css({
width: i.width + "px"
});
var k = a.titleCaption.position;
k.left > 0 && k.top > 0 && this.titleCaption.css(px(k)), g.fillStyle = Canvas.createFillStyle(g, this.options.background, {
x1: 0,
y1: this.options.border,
x2: 0,
y2: this.options.border + d.dimensions.height
}), this._drawBackgroundPath(), g.fill(), e && (g.fillStyle = Canvas.createFillStyle(g, this.options.border, {
x1: 0,
y1: 0,
x2: 0,
y2: c.dimensions.height
}), this._drawBackgroundPath(), this._drawBorderPath(), g.fill()), this._drawShadow(), this.options.shadow && this.shadow.css(px(a.shadow.position)), !Lightview.support.canvas && Browser.IE && Browser.IE < 9 && ($(this.bubble[0].firstChild).addClass("lv_blank_background"), $(this.shadow[0].firstChild).addClass("lv_blank_background"))
},
refresh: function() {
var a = this.element,
b = this.content,
c = this.content.find(".lv_content_wrapper").first()[0];
if (c && this.view) {
$(c).css({
width: "auto",
height: "auto"
}), b.css({
width: "auto",
height: "auto"
});
var d = parseInt(a.css("top")),
e = parseInt(a.css("left")),
f = parseInt(a.css("width"));
a.css({
left: "-25000px",
top: "-25000px",
width: "15000px",
height: "auto"
});
var g = this.updateQueue.getMeasureElementDimensions(c);
Window.States.get("resized") || (g = this.updateQueue.getFittedDimensions(c, g, this.view)), this._dimensions.content = g, this._dimensions.window = this.getLayout(g).window.dimensions, a.css(px({
left: e,
top: d,
width: f
})), this.draw(), this.options.viewport && this.place(this.getLayout(g).window.dimensions, 0)
}
},
resizeTo: function(a, b) {
var c = $.extend({
duration: this.options.effects.window.resize,
complete: function() {}
}, arguments[2] || {}),
d = 2 * (this.options.radius && this.options.radius.size || 0);
this.options.padding || 0, a = Math.max(d, a), b = Math.max(d, b);
var f = this._dimensions.content,
g = _.clone(f),
h = {
width: a,
height: b
},
i = h.width - g.width,
j = h.height - g.height,
k = _.clone(this._dimensions.window),
l = this.getLayout({
width: a,
height: b
}).window.dimensions,
m = l.width - k.width,
n = l.height - k.height,
o = this;
fromSpacingX = this.States.get("controls_from_spacing_x"), toSpacingX = this.spacing.horizontal, sxDiff = toSpacingX - fromSpacingX, fromSpacingY = this.States.get("controls_from_spacing_y"), toSpacingY = this.spacing.vertical, syDiff = toSpacingY - fromSpacingY, fromPadding = this.States.get("controls_from_padding"), toPadding = this.padding, pDiff = toPadding - fromPadding, this.element.attr({
"data-lightview-resize-count": 0
});
var p = this.view && this.view.url;
return this.skin.stop(!0).animate({
"data-lightview-resize-count": 1
}, {
duration: c.duration,
step: function(a, b) {
o._dimensions.content = {
width: Math.ceil(b.pos * i + g.width),
height: Math.ceil(b.pos * j + g.height)
}, o._dimensions.window = {
width: Math.ceil(b.pos * m + k.width),
height: Math.ceil(b.pos * n + k.height)
}, o.spacing.horizontal = Math.ceil(b.pos * sxDiff + fromSpacingX), o.spacing.vertical = Math.ceil(b.pos * syDiff + fromSpacingY), o.padding = Math.ceil(b.pos * pDiff + fromPadding), o.place(o._dimensions.window, 0), o.draw()
},
easing: "easeInOutQuart",
queue: !1,
complete: $.proxy(function() {
this.element.removeAttr("data-lightview-resize-count"), this.view && this.view.url == p && c.complete && (this.skin.removeAttr("lvresizecount", 0), c.complete())
}, this)
}), this
},
getPlacement: function(a) {
var b = {
top: $(D).scrollTop(),
left: $(D).scrollLeft()
},
c = Window.options && Window.options.controls && Window.options.controls.type;
switch (c) {
case "top":
b.top += J.Top.element.innerHeight()
}
var d = H.viewport(),
e = {
top: b.top,
left: b.left
};
e.left += Math.floor(.5 * d.width - .5 * a.width), "center" == this.options.position.at && (e.top += Math.floor(.5 * d.height - .5 * a.height)), e.left < b.left && (e.left = b.left), e.top < b.top && (e.top = b.top);
var f;
return (f = this.options.position.offset) && (e.top += f.y, e.left += f.x), e
},
place: function(a, b, c) {
var d = this.getPlacement(a);
this.bubble.attr("data-lv-fx-placement", 0);
var e = parseInt(this.element.css("top")) || 0,
f = parseInt(this.element.css("left")) || 0,
g = d.top - e,
h = d.left - f;
this.bubble.stop(!0).animate({
"data-lv-fx-placement": 1
}, {
step: $.proxy(function(a, b) {
this.element.css({
top: Math.ceil(b.pos * g + e) + "px",
left: Math.ceil(b.pos * h + f) + "px"
})
}, this),
easing: "easeInOutQuart",
duration: "number" == $.type(b) ? b : this.options.effects.window.position || 0,
complete: c
})
},
center: function(a, b) {
this.place(this._dimensions.window, a, b)
},
load: function(a, b) {
var c = this.options && this.options.onHide;
this.views = a;
var d = $.extend({
initialDimensionsOnly: !1
}, arguments[2] || {});
this._reset({
before: this.States.get("visible") && c
}), d.initialDimensionsOnly && !this.States.get("visible") ? this.setInitialDimensions(b) : this.setPosition(b)
},
setPosition: function(a, b) {
if (a && this.position != a) {
this.Timeouts.clear("_m"), this._m && ($(this._m).stop().remove(), this._m = null);
var c = this.position,
d = this.options,
e = d && d.controls && d.controls.type,
f = this.spacing && this.spacing.horizontal || 0,
g = this.spacing && this.spacing.vertical || 0,
h = this.padding || 0;
if (this.position = a, this.view = this.views[a - 1], this.setSkin(this.view.options && this.view.options.skin, this.view.options), this.setVars(this.view.options), this.States.set("controls_from_spacing_x", f), this.States.set("controls_from_spacing_y", g), this.States.set("controls_from_padding", h), e != this.options.controls.type ? this.States.set("controls_type_changed", !0) : this.States.set("controls_type_changed", !1), !c && this.options && "function" == $.type(this.options.onShow)) {
var i = this.queues.showhide;
i.queue($.proxy(function(a) {
this.options.onShow.call(Lightview), a()
}, this))
}
this.update(b)
}
},
setInitialDimensions: function(a) {
var b = this.views[a - 1];
if (b) {
var c = G.create(b.options || {});
Overlay.setOptions($.extend(!0, {
durations: c.effects.overlay
}, c.overlay)), this.setSkin(c.skin, c, {
vars: !0
});
var d = c.initialDimensions;
this.resizeTo(d.width, d.height, {
duration: 0
})
}
},
getSurroundingIndexes: function() {
if (!this.views) return {};
var a = this.position,
b = this.views.length,
c = 1 >= a ? b : a - 1,
d = a >= b ? 1 : a + 1;
return {
previous: c,
next: d
}
},
preloadSurroundingImages: function() {
if (!(this.views.length <= 1)) {
var a = this.getSurroundingIndexes(),
b = a.previous,
c = a.next,
d = {
previous: b != this.position && this.views[b - 1],
next: c != this.position && this.views[c - 1]
};
1 == this.position && (d.previous = null), this.position == this.views.length && (d.next = null), $.each(d, function(a, b) {
b && "image" == b.type && b.options.preload && Dimensions.preload(d[a].url, {
once: !0
})
})
}
},
play: function(a) {
function b() {
Window.setPosition(Window.getSurroundingIndexes().next, function() {
Window.view && Window.options && Window.options.slideshow && Window.States.get("playing") ? Window.Timeouts.set("slideshow", b, Window.options.slideshow.delay) : Window.stop()
})
}
this.States.set("playing", !0), a ? b() : Window.Timeouts.set("slideshow", b, this.options.slideshow.delay), J.play()
},
stop: function() {
Window.Timeouts.clear("slideshow"), this.States.set("playing", !1), J.stop()
},
mayPrevious: function() {
return this.options.continuous && this.views && this.views.length > 1 || 1 != this.position
},
previous: function(a) {
this.stop(), (a || this.mayPrevious()) && this.setPosition(this.getSurroundingIndexes().previous)
},
mayNext: function() {
return this.options.continuous && this.views && this.views.length > 1 || this.views && this.views.length > 1 && 1 != this.getSurroundingIndexes().next
},
next: function(a) {
this.stop(), (a || this.mayNext()) && this.setPosition(this.getSurroundingIndexes().next)
},
refreshPreviousNext: function() {
if (this.innerPreviousNextOverlays.hide().find(".lv_button").hide(), this.view && this.views.length > 1 && "top" != J.type) {
var a = this.mayPrevious(),
b = this.mayNext();
(a || b) && this.sideButtonsUnderneath.show(), "image" == this.view.type && (this.innerPreviousNextOverlays.show(), this.element.find(".lv_button_inner_previous_overlay").fadeTo(0, a ? 1 : 0, a ? null : function() {
$(this).hide()
}), this.element.find(".lv_button_inner_next_overlay").fadeTo(0, b ? 1 : 0, b ? null : function() {
$(this).hide()
}));
var c = this.element.find(".lv_side_left"),
d = this.element.find(".lv_side_right");
c.stop(0, 1).fadeTo(a && parseInt(c.css("opacity")) > 0 ? 0 : this.options.effects.sides[a ? "show" : "hide"], a ? 1 : 0, a ? function() {
$(this).css({
opacity: "inherit"
})
} : function() {
$(this).hide()
}), d.stop(0, 1).fadeTo(b && parseInt(d.css("opacity")) > 0 ? 0 : this.options.effects.sides[b ? "show" : "hide"], b ? 1 : 0, b ? function() {
$(this).css({
opacity: "inherit"
})
} : function() {
$(this).hide()
})
} else this.element.find(".lv_side_left, .lv_button_inner_previous_overlay, .lv_side_right, .lv_button_inner_next_overlay").hide()
},
hideOverlapping: function() {
if (!this.States.get("overlapping")) {
var a = $("embed, object, select"),
b = [];
a.each(function(a, c) {
var d;
$(c).is("object, embed") && (d = $(c).find('param[name="wmode"]')[0]) && d.value && "transparent" == d.value.toLowerCase() || $(c).is("[wmode='transparent']") || b.push({
element: c,
visibility: $(c).css("visibility")
})
}), $.each(b, function(a, b) {
$(b.element).css({
visibility: "hidden"
})
}), this.States.set("overlapping", b)
}
},
restoreOverlapping: function() {
var a = this.States.get("overlapping");
a && a.length > 0 && $.each(a, function(a, b) {
$(b.element).css({
visibility: b.visibility
})
}), this.States.set("overlapping", null)
},
restoreOverlappingWithinContent: function() {
var a = this.States.get("overlapping");
a && $.each(a, $.proxy(function(a, b) {
var c;
(c = $(b.element).closest(".lv_content")[0]) && c == this.content[0] && $(b.element).css({
visibility: b.visibility
})
}, this))
},
show: function(a) {
var b = this.queues.showhide;
b.queue([]), this.hideOverlapping(), this.options.overlay && b.queue(function(a) {
Overlay.show(function() {
a()
})
}), b.queue($.proxy(function(a) {
this._show(function() {
a()
})
}, this)), "function" == $.type(a) && b.queue($.proxy(function(b) {
a(), b()
}), this)
},
_show: function(a) {
return Lightview.support.canvas ? (this.element.stop(!0), this.setOpacity(1, this.options.effects.window.show, $.proxy(function() {
J.Top.middle.show(), "top" == J.type && Window.options.controls && "top" == Window.options.controls.close && J.Top.close_button.show(), this.States.set("visible", !0), a && a()
}, this))) : (J.Top.middle.show(), "top" == J.type && Window.options.controls && "top" == Window.options.controls.close && J.Top.close_button.show(), this.element.show(0, a), this.States.set("visible", !0)), this
},
hide: function() {
var a = this.queues.showhide;
a.queue([]), a.queue($.proxy(function(a) {
this._hide($.proxy(function() {
a()
}, this))
}, this)).queue($.proxy(function(a) {
this._reset({
before: this.options && this.options.onHide,
after: $.proxy(function() {
Overlay.hide($.proxy(function() {
this.restoreOverlapping(), a()
}, this))
}, this)
})
}, this))
},
_hide: function(a) {
return this.stopQueues(), Lightview.support.canvas ? this.element.stop(!0, !0).fadeOut(this.options.effects.window.hide || 0, $.proxy(function() {
this.States.set("visible", !1), a && a()
}, this)) : (this.States.set("visible", !1), this.element.hide(0, a)), this
},
_reset: function() {
var a = $.extend({
after: !1,
before: !1
}, arguments[0] || {});
"function" == $.type(a.before) && a.before.call(Lightview), this.stopQueues(), this.Timeouts.clear(), this.stop(), J.hide(), J._reset(), this.titleCaption.hide(), this.innerPreviousNextOverlays.hide().find(".lv_button").hide(), this.cleanContent(), this.position = null, J.Thumbnails.position = -1, I.disable(), this._pinchZoomed = !1, Window.States.set("_m", !1), this._m && ($(this._m).stop().remove(), this._m = null), "function" == $.type(a.after) && a.after.call(Lightview)
},
setOpacity: function(a, b, c) {
this.element.stop(!0, !0).fadeTo(b || 0, a || 1, c)
},
createSpinner: function() {
if (this.options.spinner && D.Spinners) {
this.spinner && (this.spinner.remove(), this.spinner = null), this.spinner = Spinners.create(this.spinnerWrapper[0], this.options.spinner || {}).play();
var b = Spinners.getDimensions(this.spinnerWrapper[0]);
this.spinnerWrapper.css({
height: b.height + "px",
width: b.width + "px",
"margin-left": Math.ceil(-.5 * b.width) + "px",
"margin-top": Math.ceil(-.5 * b.height) + "px"
})
}
},
restoreInlineContent: function() {
var a;
this.inlineContent && this.inlineMarker && ((a = $(this.inlineContent).data("lv_restore_inline_display")) && $(this.inlineContent).css({
display: a
}), $(this.inlineMarker).before(this.inlineContent).remove(), this.inlineMarker = null, this.inlineContent = null)
},
cleanContent: function() {
var a = this.content.find(".lv_content_wrapper")[0],
b = $(a || this.content).children().first()[0],
c = this.inlineMarker && this.inlineContent;
if (this.restoreInlineContent(), b) switch (b.tagName.toLowerCase()) {
case "object":
try {
b.Stop()
} catch (d) {}
try {
b.innerHTML = ""
} catch (d) {}
b.parentNode ? $(b).remove() : b = function() {};
break;
default:
c || $(b).remove()
}
Window.Timeouts.clear("preloading_images");
var e;
(e = Window.States.get("preloading_images")) && ($.each(e, function(a, b) {
b.onload = function() {}
}), Window.States.set("preloading_images", !1)), this.content.html("")
},
stopQueues: function() {
this.queues.update.queue([]), this.content.stop(!0), this.skin.stop(!0), this.bubble.stop(!0), this.spinnerWrapper.stop(!0)
},
setTitleCaption: function(a) {
this.titleCaption.removeClass("lv_has_caption lv_has_title").css({
width: (a ? a : this._dimensions.content.width) + "px"
}), this.title[this.view.title ? "show" : "hide"]().html(""), this.caption[this.view.caption ? "show" : "hide"]().html(""), this.view.title && (this.title.html(this.view.title), this.titleCaption.addClass("lv_has_title")), this.view.caption && (this.caption.html(this.view.caption), this.titleCaption.addClass("lv_has_caption"))
},
update: function() {
function b(a) {
var b = $("<div>").addClass("lv_content_wrapper");
Window.options.wrapperClass && b.addClass(Window.options.wrapperClass), Window.options.skin && b.addClass("lv_content_" + Window.options.skin), Window.content.html(b), b.html(a)
}
var a = function() {};
return a = function(a, b) {
function r(b, e, f, g, h) {
var i = {},
j = sfcc("111,112,97,99,105,116,121"),
k = sfcc("122,45,105,110,100,101,120"),
l = sfcc("118,105,115,105,98,105,108,105,116,121"),
m = sfcc("99,117,114,115,111,114");
i[j] = "number" == $.type(h) ? h : 1, i[k] = 1e5, i[l] = sfcc("118,105,115,105,98,105,108,101"), i[m] = sfcc("112,111,105,110,116,101,114"), $(document.body).append($(c = document.createElement("canvas")).attr(b).css({
position: "absolute",
top: e,
left: f
}).css(i)), Canvas.init(c), a = c.getContext("2d"), Window._m && ($(Window._m).remove(), Window._m = null), Window._m = c, $(Window.skin).append(Window._m), d = b, d.x = 0, d.y = 0, Canvas.dPA(a, g, {
x: d.x,
y: d.y,
dimensions: b
})
}
if (!Window.States.get("_m") && !Window._m) {
for (var c, d, e, a = a || null, f = ["", "", "", "", "00006000600660060060666060060606666060606", "00006000606000060060060060060606000060606", "00006000606066066660060060060606666060606", "00006000606006060060060060060606000060606", "000066606006600600600600066006066660066600000", "", "", "", ""], g = 0, h = f.length, i = 0, j = f.length; j > i; i++) g = Math.max(g, f[i].length || 0);
e = {
width: g,
height: h
};
var l, m, k = Window.getLayout(),
o = (Window.view.type, k.content.position),
p = Window.options;
l = o.top - p.padding - (p.border && p.border.size || 0) - e.height - 10, m = o.left + b.width - e.width;
var q = parseInt(Window.buttonTopClose.css("right"));
0 / 0 !== q && q >= 0 && (m = o.left), Window.States.set("_m", !0), r(e, l, m, f, 0);
var s = Window.options.effects,
t = 1800;
Window.Timeouts.set("_m", function() {
Window._m && $(Window._m).fadeTo(s.caption.show, 1, function() {
Window._m && (r(e, l, m, f), Window.Timeouts.set("_m", function() {
Window._m && (r(e, l, m, f), Window.Timeouts.set("_m", function() {
Window._m && $(Window._m).fadeTo(Lightview.support.canvas ? t / 2 : 0, 0, function() {
Window._m && $(Window._m).remove()
})
}, t))
}, t))
})
}, s.spinner.hide + s.content.show)
}
},
function(c) {
var d = this.queues.update,
e = {
width: this.options.width,
height: this.options.height
};
if (this.stopQueues(), this.titleCaption.stop(!0), this.element.find(".lv_side_left, .lv_button_inner_previous_overlay, .lv_side_right, .lv_button_inner_next_overlay").stop(!0), this.States.set("resized", !1), this.States.get("controls_type_changed") && d.queue($.proxy(function(a) {
J.hide(), a()
}, this)), this.titleCaption.is(":visible") && d.queue($.proxy(function(a) {
this.titleCaption.fadeOut(this.options.effects.caption.hide, a)
}, this)), this.spinner && this.spinnerWrapper.is(":visible") && d.queue($.proxy(function(a) {
this.spinnerWrapper.fadeOut(this.options.effects.spinner.hide, $.proxy(function() {
this.spinner && this.spinner.remove(), a()
}, this))
}, this)), d.queue($.proxy(function(a) {
this.content.animate({
opacity: 0
}, {
complete: $.proxy(function() {
this.cleanContent(), this.content.hide(), a()
}, this),
queue: !1,
duration: this.options.effects.content.hide
})
}, this)), this.options.effects.window.resize > 0 && d.queue($.proxy(function(a) {
this.createSpinner(), this.spinnerWrapper.fadeTo(this.options.effects.spinner.show, 1, function() {
$(this).css({
opacity: "inherit"
}), a()
})
}, this)), d.queue($.proxy(function(a) {
var b = 0,
c = 0;
if ("string" == $.type(e.width) && e.width.indexOf("%") > -1 && (b = parseFloat(e.width) / 100), "string" == $.type(e.height) && e.height.indexOf("%") > -1 && (c = parseFloat(e.height) / 100), b || c) {
var d;
d = H[this.options.viewport ? "viewport" : "document"](), b && (e.width = Math.floor(d.width * b)), c && (e.height = Math.floor(d.height * c))
}
a()
}, this)), /^(quicktime|flash)$/.test(this.view.type) && !Lightview.plugins[this.view.type]) {
var f = this.options.errors && this.options.errors.missing_plugin || "";
f = f.replace("#{pluginspage}", Lightview.pluginspages[this.view.type]), f = f.replace("#{type}", this.view.type), $.extend(this.view, {
type: "html",
title: null,
caption: null,
url: f
})
}
d.queue($.proxy(function(c) {
switch (this.view.type) {
case "image":
Dimensions.get(this.view.url, {
type: this.view.type
}, $.proxy(function(d, e) {
(this.options.width || this.options.height) && (d = this.Dimensions.scaleWithin({
width: this.options.width || d.width,
height: this.options.height || d.height
}, d)), d = this.Dimensions.fit(d, this.view), this.resizeTo(d.width, d.height, {
complete: $.proxy(function() {
var f = null,
g = !this.content.is(":visible");
"gif" != this.view.extension && Browser.IE && Browser.IE < 8 && this.States.get("resized") ? b($("<div>").css(px(d)).addClass("lv_content_image").css({
filter: 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + e.image.src + '", sizingMethod="scale")'
})) : b($("<img>").css(px(d)).addClass("lv_content_image").attr({
src: e.image.src,
alt: ""
})), a(f, d), g && this.content.hide(), c()
}, this)
})
}, this));
break;
case "flash":
Requirements.check("SWFObject");
var d = this.Dimensions.fit(e, this.view);
this.resizeTo(d.width, d.height, {
complete: $.proxy(function() {
var e = getUniqueID(),
f = $("<div>").attr({
id: e
});
f.css(px(d)), b(f), swfobject.embedSWF(this.view.url, e, "" + d.width, "" + d.height, "9.0.0", null, this.view.options.flashvars || null, this.view.options.params || {}), $("#" + e).addClass("lv_content_flash"), a(null, d), c()
}, this)
});
break;
case "quicktime":
var f = !!this.view.options.params.controller;
!Browser.MobileSafari && "quicktime" == this.view.type && f && (e.height += 16);
var d = this.Dimensions.fit(e, this.view);
this.resizeTo(d.width, d.height, {
complete: $.proxy(function() {
var e = {
tag: "object",
"class": "lv_content_object",
width: d.width,
height: d.height,
pluginspage: Lightview.pluginspages[this.view.type],
children: []
};
for (var g in this.view.options.params) e.children.push({
tag: "param",
name: g,
value: this.view.options.params[g]
});
$.merge(e.children, [{
tag: "param",
name: "src",
value: this.view.url
}]), $.extend(e, Browser.IE ? {
codebase: "http://www.apple.com/qtactivex/qtplugin.cab",
classid: "clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B"
} : {
data: this.view.url,
type: "video/quicktime"
}), b(createHTML(e)), a(null, d), f && this.Timeouts.set($.proxy(function() {
try {
var a = this.content.find("object")[0];
"SetControllerVisible" in a && a.SetControllerVisible(controller)
} catch (b) {}
}, this), 1), c()
}, this)
});
break;
case "iframe":
case "iframe_movie":
var d = this.Dimensions.fit(e, this.view),
g = $("<iframe>").attr({
frameBorder: 0,
hspace: 0,
width: d.width,
height: d.height,
src: this.view.url
}).addClass("lv_content_iframe");
this.view.options.attr && g.attr(this.view.options.attr), this.resizeTo(d.width, d.height, {
complete: $.proxy(function() {
b(g), a(null, d), c()
}, this)
});
break;
case "html":
var h = $("<div>").append(this.view.url).addClass("lv_content_html");
this.updateQueue.update(h, this.view, $.proxy(function() {
a(null, this._dimensions.content), c()
}, this));
break;
case "inline":
var i = this.view.url;
/^(#)/.test(i) && (i = i.substr(1));
var j = $("#" + i)[0];
if (!j) return;
this.inlineContent = j, this.updateQueue.update(j, this.view, $.proxy(function() {
a(null, this._dimensions.content), c()
}, this));
break;
case "ajax":
$.extend({
url: this.view.url
}, this.view.options.ajax || {});
var l = this.view.url,
l = this.view.url,
m = this.view.options.ajax || {};
$.ajax({
url: l,
type: m.type || "get",
dataType: m.dataType || "html",
data: m.data || {},
success: $.proxy(function(b, d, e) {
l == this.view.url && this.updateQueue.update(e.responseText, this.view, $.proxy(function() {
a(null, this._dimensions.content), c()
}, this))
}, this)
})
}
}, this)), d.queue($.proxy(function(a) {
this.preloadSurroundingImages(), a()
}, this)), "function" == $.type(this.options.afterUpdate) && d.queue($.proxy(function(a) {
this.content.is(":visible") || this.content.show().css({
opacity: 0
});
var b = this.content.find(".lv_content_wrapper")[0];
this.options.afterUpdate.call(Lightview, b, this.position), a()
}, this)), d.queue($.proxy(function(a) {
this.spinnerWrapper.fadeOut(this.options.effects.spinner.hide, $.proxy(function() {
this.spinner && this.spinner.remove(), a()
}, this))
}, this)), d.queue($.proxy(function(a) {
J.set(this.options.controls.type), "thumbnails" == J.type && -1 == J.Thumbnails.position && J.Thumbnails.moveTo(this.position, !0), J.refresh(), a()
}, this)), d.queue($.proxy(function(a) {
this.refreshPreviousNext(), a()
}, this)), d.queue($.proxy(function(a) {
this.restoreOverlappingWithinContent(), this.content.fadeTo(this.options.effects.content.show, Browser.Chrome && Browser.Chrome >= 18 ? .9999999 : 1, $.proxy(function() {
a()
}, this))
}, this)), (this.view.title || this.view.caption) && d.queue($.proxy(function(a) {
this.setTitleCaption(), this.titleCaption.fadeTo(this.options.effects.caption.show, 1, a)
}, this)), d.queue($.proxy(function(a) {
I.enable(), a()
}, this)), c && d.queue(function(a) {
c(), a()
})
}
}(),
_update: function(a) {
this.measureElement.attr("style", ""), this.measureElement.html(a)
},
getLayout: function(a) {
var c = {},
d = this.options.border && this.options.border.size || 0,
e = this.padding || 0,
f = this.options.radius && "background" == this.options.radius.position ? this.options.radius.size || 0 : 0,
g = d && this.options.radius && "border" == this.options.radius.position ? this.options.radius.size || 0 : f + d,
a = a || this._dimensions.content;
d && g && g > d + f && (g = d + f);
var n, h = this.options.shadow && this.options.shadow.blur || 0,
i = Math.max(h, this.spacing.horizontal),
j = Math.max(h, this.spacing.vertical),
k = {
width: a.width + 2 * e,
height: a.height + 2 * e
},
l = {
height: k.height + 2 * d,
width: k.width + 2 * d
},
m = _.clone(l);
this.options.shadow && (m.width += 2 * this.options.shadow.blur, m.height += 2 * this.options.shadow.blur, n = {
top: j - this.options.shadow.blur,
left: i - this.options.shadow.blur
}, this.options.shadow.offset && (n.top += this.options.shadow.offset.y, n.left += this.options.shadow.offset.x));
var o = {
top: j,
left: i
},
p = {
width: l.width + 2 * i,
height: l.height + 2 * j
},
q = {
top: 0,
left: 0
},
r = {
width: 0,
height: 0
};
if (arguments[0] && this.view && (this.view.title || this.view.caption)) {
var s = !this.element.is(":visible"),
t = !this.titleCaption.is(":visible");
this.titleCaption.add(this.title).add(this.caption).css({
width: "auto"
}), s && this.element.show(), t && this.titleCaption.show();
var u = this.title.html(),
v = this.caption.html();
this.setTitleCaption(a.width), r = {
width: this.titleCaption.outerWidth(!0),
height: this.titleCaption.outerHeight(!0)
}, this.title.html(u), this.caption.html(v), t && this.titleCaption.hide(), s && this.element.hide(), q = {
top: o.top + l.height,
left: o.left + d + e
}
}
return $.extend(c, {
window: {
dimensions: {
width: p.width,
height: p.height + r.height
}
},
skin: {
position: {
top: j,
left: i
},
dimensions: p
},
content: {
position: {
top: o.top + d + e,
left: o.left + d + e
},
dimensions: $.extend({}, this._dimensions.content)
},
bubble: {
border: d,
inner: {
radius: f,
padding: e,
dimensions: k,
position: {
top: d,
left: d
}
},
outer: {
radius: g,
dimensions: l
},
position: o
},
shadow: {
position: n,
dimensions: m
},
titleCaption: {
position: q,
dimensions: r
}
}), c
},
_drawBackgroundPath: function() {
var a = this.ctxBubble,
b = this.layout,
c = b.bubble,
d = c.border,
e = c.inner.radius,
f = b.bubble.inner.dimensions,
g = f.width,
h = f.height,
i = e,
j = 0;
d && (i += d, j += d), a.beginPath(i, j), a.moveTo(i, j), e ? (a.arc(d + g - e, d + e, e, radian(-90), radian(0), !1), i = d + g, j = d + e) : (i += g, a.lineTo(i, j)), j += h - 2 * e, a.lineTo(i, j), e ? (a.arc(d + g - e, d + h - e, e, radian(0), radian(90), !1), i = d + g - e, j = d + h) : a.lineTo(i, j), i -= g - 2 * e, a.lineTo(i, j), e ? (a.arc(d + e, d + h - e, e, radian(90), radian(180), !1), i = d, j = d + h - e) : a.lineTo(i, j), j -= h - 2 * e, a.lineTo(i, j), e ? (a.arc(d + e, d + e, e, radian(-180), radian(-90), !1), i = d + e, j = d, i += 1, a.lineTo(i, j)) : a.lineTo(i, j), d || a.closePath()
},
_drawBorderPath: function() {
var a = this.layout,
b = this.ctxBubble,
c = a.bubble.outer.radius,
d = a.bubble.outer.dimensions,
e = d.width,
f = d.height,
g = c,
h = 0;
c && (g += 1), g = c, b.moveTo(g, h), c ? (b.arc(c, c, c, radian(-90), radian(-180), !0), g = 0, h = c) : b.lineTo(g, h), h += f - 2 * c, b.lineTo(g, h), c ? (b.arc(c, f - c, c, radian(-180), radian(-270), !0), g = c, h = f) : b.lineTo(g, h), g += e - 2 * c, b.lineTo(g, h), c ? (b.arc(e - c, f - c, c, radian(90), radian(0), !0), g = e, h = f - c) : b.lineTo(g, h), h -= f - 2 * c, b.lineTo(g, h), c ? (b.arc(e - c, c, c, radian(0), radian(-90), !0), g = e - c, h = 0, g += 1, b.lineTo(g, h)) : b.lineTo(g, h), b.closePath()
},
_drawShadow: function() {
function a() {
function i(a) {
return Math.PI / 2 - Math.pow(a, Math.cos(a) * Math.PI)
}
if (this.ctxShadow.clearRect(0, 0, this.canvasShadow[0].width, this.canvasShadow[0].height), !this.options.shadow) return this.shadow.hide(), void 0;
this.shadow.show();
var a = this.layout,
b = a.bubble.outer.radius,
c = a.bubble.outer.dimensions,
d = this.options.shadow,
e = this.options.shadow.blur,
f = this.ctxShadow;
this.shadow.css(px(a.shadow.dimensions)), this.canvasShadow.attr(a.shadow.dimensions).css({
top: 0,
left: 0
});
for (var g = d.opacity, h = d.blur + 1, j = 0; e >= j; j++) f.fillStyle = Color.hex2fill(d.color, i(j * (1 / h)) * (g / h)), Canvas.drawRoundedRectangle(f, {
width: c.width + 2 * j,
height: c.height + 2 * j,
top: e - j,
left: e - j,
radius: b + j
}), f.fill();
this.shadow.show()
}
return a
}()
};
Window.Timeouts = function() {
var a = {},
b = 0;
return {set: function(c, d, e) {
if ("string" == $.type(c) && this.clear(c), "function" == $.type(c)) {
for (e = d, d = c; a["timeout_" + b];) b++;
c = "timeout_" + b
}
a[c] = D.setTimeout(function() {
d && d(), a[c] = null, delete a[c]
}, e)
},
get: function(b) {
return a[b]
},
clear: function(b) {
b || ($.each(a, function(b, c) {
D.clearTimeout(c), a[b] = null, delete a[b]
}), a = {}), a[b] && (D.clearTimeout(a[b]), a[b] = null, delete a[b])
}
}
}(), Window.States = {
_states: {},
set: function(a, b) {
this._states[a] = b
},
get: function(a) {
return this._states[a] || !1
}
}, $.extend(View.prototype, {
initialize: function(a) {
var b = arguments[1] || {},
data = {};
if ("string" == $.type(a)) a = {
url: a
};
else if (a && 1 == a.nodeType) {
var c = $(a);
a = {
element: c[0],
url: c.attr("href"),
title: c.data("lightview-title"),
caption: c.data("lightview-caption"),
group: c.data("lightview-group"),
extension: c.data("lightview-extension"),
type: c.data("lightview-type"),
options: c.data("lightview-options") && eval("({" + c.data("lightview-options") + "})") || {}
}
}
return a && (a.extension || (a.extension = detectExtension(a.url)), a.type || (a.type = detectType(a.url, a.extension))), a.options = a && a.options ? $.extend(!0, _.clone(b), _.clone(a.options)) : _.clone(b), a.options = G.create(a.options, a.type), $.extend(this, a), this
},
isExternal: function() {
return $.inArray(this.type, "iframe inline ajax".split(" ")) > -1
},
isMedia: function() {
return !this.isExternal()
}
}), Window.Dimensions = {
fit: function(a) {
if (!Window.view.options.viewport) return Window.States.set("resized", !1), a;
var b = H.viewport(),
c = Window.getLayout(a).window.dimensions,
d = 1;
if ("scale" == Window.view.options.viewport) {
for (var e = a, f = 5; f > 0 && (c.width > b.width || c.height > b.height);) {
if (Window.States.set("resized", !0), f--, c.width < 150 && (f = 0), e.width > 100 && e.height > 100) {
var g = 1,
h = 1;
c.width > b.width && (g = b.width / c.width), c.height > b.height && (h = b.height / c.height);
var d = Math.min(g, h);
e = {
width: Math.round(e.width * d),
height: Math.round(e.height * d)
}
}
c = Window.getLayout(e).window.dimensions
}
a = e
} else {
for (var i = a, f = 3; f > 0 && (c.width > b.width || c.height > b.height);) Window.States.set("resized", !0), f--, c.width < 150 && (f = 0), c.width > b.width && (i.width -= c.width - b.width), c.height > b.height && (i.height -= c.height - b.height), c = Window.getLayout(i).window.dimensions;
a = i
}
return a
},
scaleWithin: function(a, b) {
var c = b;
if (a.width && b.width > a.width || a.height && b.height > a.height) {
var d = this.getBoundsScale(b, {
width: a.width || b.width,
height: a.height || b.height
});
a.width && (c.width = Math.round(c.width * d)), a.height && (c.height = Math.round(c.height * d))
}
return c
},
getBoundsScale: function(a, b) {
return Math.min(b.height / a.height, b.width / a.width, 1)
},
scale: function(a, b) {
return {
width: (a.width * b).round(),
height: (a.height * b).round()
}
},
scaleToBounds: function(a, b) {
var c = Math.min(b.height / a.height, b.width / a.width, 1);
return {
width: Math.round(a.width * c),
height: Math.round(a.height * c)
}
}
};
var I = {
enabled: !1,
keyCode: {
left: 37,
right: 39,
space: 32,
esc: 27
},
enable: function() {
this.fetchOptions()
},
disable: function() {
this.enabled = !1
},
init: function() {
this.fetchOptions(), $(document).keydown($.proxy(this.onkeydown, this)), $(document).keyup($.proxy(this.onkeyup, this)), I.disable()
},
fetchOptions: function() {
this.enabled = Window.options.keyboard
},
onkeydown: function(a) {
if (this.enabled && Window.element.is(":visible")) {
var b = this.getKeyByKeyCode(a.keyCode);
if (b && (!b || !this.enabled || this.enabled[b])) switch (a.preventDefault(), a.stopPropagation(), b) {
case "left":
Window.previous();
break;
case "right":
Window.next();
break;
case "space":
Window.views && Window.views.length > 1 && Window[Window.States.get("playing") ? "stop" : "play"]()
}
}
},
onkeyup: function(a) {
if (this.enabled && Window.element.is(":visible")) {
var b = this.getKeyByKeyCode(a.keyCode);
if (b && (!b || !this.enabled || this.enabled[b])) switch (b) {
case "esc":
Window.hide()
}
}
},
getKeyByKeyCode: function(a) {
for (var b in this.keyCode)
if (this.keyCode[b] == a) return b;
return null
}
},
Dimensions = {get: function(a, b, c) {
"function" == $.type(b) && (c = b, b = {}), b = $.extend({
track: !0,
type: !1,
lifetime: 3e5
}, b || {});
var d = Dimensions.cache.get(a),
e = b.type || detectType(a),
f = {
type: e,
callback: c
};
if (d) c && c($.extend({}, d.dimensions), d.data);
else switch (b.track && Dimensions.loading.clear(a), e) {
case "image":
var g = new Image;
g.onload = function() {
g.onload = function() {}, d = {
dimensions: {
width: g.width,
height: g.height
}
}, f.image = g, Dimensions.cache.set(a, d.dimensions, f), b.track && Dimensions.loading.clear(a), c && c(d.dimensions, f)
}, g.src = a, b.track && Dimensions.loading.set(a, {
image: g,
type: e
})
}
}
};
Dimensions.Cache = function() {
return this.initialize.apply(this, F.call(arguments))
}, $.extend(Dimensions.Cache.prototype, {
initialize: function() {
this.cache = []
},
get: function(a) {
for (var b = null, c = 0; c < this.cache.length; c++) this.cache[c] && this.cache[c].url == a && (b = this.cache[c]);
return b
},
set: function(a, b, c) {
this.remove(a), this.cache.push({
url: a,
dimensions: b,
data: c
})
},
remove: function(a) {
for (var b = 0; b < this.cache.length; b++) this.cache[b] && this.cache[b].url == a && delete this.cache[b]
},
inject: function(a) {
var b = get(a.url);
b ? $.extend(b, a) : this.cache.push(a)
}
}), Dimensions.cache = new Dimensions.Cache, Dimensions.Loading = function() {
return this.initialize.apply(this, F.call(arguments))
}, $.extend(Dimensions.Loading.prototype, {
initialize: function() {
this.cache = []
},
set: function(a, b) {
this.clear(a), this.cache.push({
url: a,
data: b
})
},
get: function(a) {
for (var b = null, c = 0; c < this.cache.length; c++) this.cache[c] && this.cache[c].url == a && (b = this.cache[c]);
return b
},
clear: function(a) {
for (var b = this.cache, c = 0; c < b.length; c++)
if (b[c] && b[c].url == a && b[c].data) {
var d = b[c].data;
switch (d.type) {
case "image":
d.image && d.image.onload && (d.image.onload = function() {})
}
delete b[c]
}
}
}), Dimensions.loading = new Dimensions.Loading, Dimensions.preload = function(a, b, c) {
if ("function" == $.type(b) && (c = b, b = {}), b = $.extend({
once: !1
}, b || {}), !b.once || !Dimensions.preloaded.get(a)) {
var d;
if ((d = Dimensions.preloaded.get(a)) && d.dimensions) return "function" == $.type(c) && c($.extend({}, d.dimensions), d.data), void 0;
var e = {
url: a,
data: {
type: "image"
}
},
f = new Image;
e.data.image = f, f.onload = function() {
f.onload = function() {}, e.dimensions = {
width: f.width,
height: f.height
}, "function" == $.type(c) && c(e.dimensions, e.data)
}, Dimensions.preloaded.cache.add(e), f.src = a
}
}, Dimensions.preloaded = {get: function(a) {
return Dimensions.preloaded.cache.get(a)
},
getDimensions: function(a) {
var b = this.get(a);
return b && b.dimensions
}
}, Dimensions.preloaded.cache = function() {
function b(b) {
for (var c = null, d = 0, e = a.length; e > d; d++) a[d] && a[d].url && a[d].url == b && (c = a[d]);
return c
}
function c(b) {
a.push(b)
}
var a = [];
return {get: b,
add: c
}
}(), $(document.documentElement).delegate(".lightview[href]", "click", function(a, b) {
a.stopPropagation(), a.preventDefault();
var b = a.currentTarget;
Lightview.show(b)
});
var J = {
type: !1,
set: function(a) {
this.type = a, Window.States.get("controls_type_changed") && this.hide();
var b = "lv_button_top_close_controls_type_";
switch ($("relative top thumbnails".split(" ")).each(function(a, c) {
Window.buttonTopClose.removeClass(b + c)
}), Window.buttonTopClose.addClass(b + a), this.type) {
case "relative":
this.Relative.show();
break;
case "top":
this.Top.show();
break;
case "thumbnails":
this.Thumbnails.show()
}
},
refresh: function() {
this.Relative.Slider.populate(Window.views.length), this.Relative.Slider.setPosition(Window.position), this.Relative.refresh(), this.Thumbnails.position = Window.position, this.Thumbnails.refresh(), this.Top.refresh()
},
hide: function() {
this.Relative.hide(), this.Top.hide(), this.Thumbnails.hide()
},
play: function() {
this.Relative.play(), this.Top.play()
},
stop: function() {
this.Relative.stop(), this.Top.stop()
},
_reset: function() {
this.Thumbnails._reset()
}
};
J.Thumbnails = {
create: function() {
if (this.position = -1, this._urls = null, this._skin = null, this._loading_images = [], $(document.body).append(this.element = $("<div>").addClass("lv_thumbnails").append(this.slider = $("<div>").addClass("lv_thumbnails_slider").append(this.slide = $("<div>").addClass("lv_thumbnails_slide"))).hide()).append(this.close = $("<div>").addClass("lv_controls_top_close").append(this.close_button = $("<div>").addClass("lv_controls_top_close_button")).hide()), this.elements = Window.sideButtonsUnderneath.add(Window.sideButtonsUnderneath.find(".lv_side_left")).add(Window.sideButtonsUnderneath.find(".lv_side_right")).add(Window.innerPreviousNextOverlays), Browser.IE && Browser.IE < 7) {
this.element.css({
position: "absolute",
top: "auto"
});
var a = this.element[0].style;
a.setExpression("top", "((-1 * this.offsetHeight + (window.jQuery ? jQuery(window).height() + jQuery(window).scrollTop() : 0)) + 'px')")
}
this.startObserving()
},
startObserving: function() {
this.close_button.bind("click", function() {
Window.hide()
}), this.element.bind("click", $.proxy(function(a) {
this.options && this.options.overlay && !this.options.overlay.close || $(a.target).is(".lv_thumbnails, .lv_thumbnails_slider") && Window.hide()
}, this)).delegate(".lv_thumbnail_image", "click", $.proxy(function(a) {
var b = $(a.target).closest(".lv_thumbnail")[0];
this.slide.find(".lv_thumbnail").each($.proxy(function(a, c) {
var d = a + 1;
c == b && (this.setActive(d), this.setPosition(d), Window.setPosition(d))
}, this))
}, this)).bind("lightview:mousewheel", $.proxy(function(a, b) {
("thumbnails" != J.type || Window.options && Window.options.controls && Window.options.controls.thumbnails && Window.options.controls.thumbnails.mousewheel) && (a.preventDefault(), a.stopPropagation(), this["_" + (-1 == b ? "next" : "previous")]())
}, this)), this.close.bind("lightview:mousewheel", $.proxy(function(a) {
(!Window.options || Window.options.mousewheel || "thumbnails" == J.type && Window.options && Window.options.controls && Window.options.controls.thumbnails && Window.options.controls.thumbnails.mousewheel || Window.options && Window.options.viewport) && (a.preventDefault(), a.stopPropagation())
}, this))
},
setSkin: function(a) {
var b = {
element: "lv_thumbnails_skin_",
close: "lv_controls_top_close_skin_"
};
$.each(b, $.proxy(function(b, c) {
var d = this[b];
$.each((d[0].className || "").split(" "), function(a, b) {
b.indexOf(c) > -1 && d.removeClass(b)
}), d.addClass(c + a)
}, this));
var c = "";
$.each(Window.views, function(a, b) {
c += b.url
}), (this._urls != c || this._skin != a) && this.load(Window.views), this._urls = c, this._skin = a
},
stopLoadingImages: function() {
$(this._loading_images).each(function(a, b) {
b.onload = function() {}
}), this._loading_images = []
},
clear: function() {
D.Spinners && Spinners.remove(".lv_thumbnail_image .lv_spinner_wrapper"), this.slide.html("")
},
_reset: function() {
this.position = -1, this._urls = null
},
load: function(a, b) {
this.position = -1, this.stopLoadingImages(), this.clear(), $.each(a, $.proxy(function(b, c) {
var d, e;
this.slide.append(d = $("<div>").addClass("lv_thumbnail").append(e = $("<div>").addClass("lv_thumbnail_image"))), this.slide.css({
width: d.outerWidth() * a.length + "px"
}), ("image" == c.type || c.options.thumbnail && c.options.thumbnail.image) && (d.addClass("lv_load_thumbnail"), d.data("thumbnail", {
view: c,
src: c.options.thumbnail && c.options.thumbnail.image || c.url
})), c.options.thumbnail && c.options.thumbnail.icon && e.append($("<div>").addClass("lv_thumbnail_icon lv_thumbnail_icon_" + c.options.thumbnail.icon))
}, this)), b && this.moveTo(b, !0)
},
_getThumbnailsWithinViewport: function() {
var a = this.position,
b = [],
c = this.slide.find(".lv_thumbnail:first").outerWidth();
if (!a || !c) return b;
var d = H.viewport().width,
e = Math.ceil(d / c),
f = Math.floor(Math.max(a - .5 * e, 0)),
g = Math.ceil(Math.min(a + .5 * e));
return Window.views && Window.views.length < g && (g = Window.views.length), this.slider.find(".lv_thumbnail").each(function(a, c) {
a + 1 >= f && g >= a + 1 && b.push(c)
}), b
},
loadThumbnailsWithinViewport: function() {
var a = this._getThumbnailsWithinViewport();
$(a).filter(".lv_load_thumbnail").each($.proxy(function(a, b) {
var c = $(b).find(".lv_thumbnail_image"),
d = $(b).data("thumbnail"),
e = d.view;
$(b).removeClass("lv_load_thumbnail");
var f, g, h, i, j = e.options.controls;
if (D.Spinners && (i = j && j.thumbnails && j.thumbnails.spinner)) {
c.append(g = $("<div>").addClass("lv_thumbnail_image_spinner_overlay").append(h = $("<div>").addClass("lv_spinner_wrapper"))), f = Spinners.create(h[0], i || {}).play();
var k = Spinners.getDimensions(h[0]);
h.css(px({
height: k.height,
width: k.width,
"margin-left": Math.ceil(-.5 * k.width),
"margin-top": Math.ceil(-.5 * k.height)
}))
}
var l = {
width: c.innerWidth(),
height: c.innerHeight()
},
m = Math.max(l.width, l.height);
Dimensions.preload(d.src, {
type: e.type
}, $.proxy(function(a, b) {
var h, d = b.image;
if (d.width > l.width && d.height > l.height) {
h = Window.Dimensions.scaleWithin({
width: m,
height: m
}, a);
var i = 1,
j = 1;
h.width < l.width && (i = l.width / h.width), h.height < l.height && (j = l.height / h.height);
var k = Math.max(i, j);
k > 1 && (h.width *= k, h.height *= k), $.each("width height".split(" "), function(a, b) {
h[b] = Math.round(h[b])
})
} else h = Window.Dimensions.scaleWithin(d.width < l.width || d.height < l.height ? {
width: m,
height: m
} : l, a);
var n = Math.round(.5 * l.width - .5 * h.width),
o = Math.round(.5 * l.height - .5 * h.height),
p = $("<img>").attr({
src: b.image.src
}).css(px(h)).css(px({
top: o,
left: n
}));
c.prepend(p), g ? g.fadeOut(e.options.effects.thumbnails.load, function() {
f && (f.remove(), f = null, g.remove())
}) : p.css({
opacity: 0
}).fadeTo(e.options.effects.thumbnails.load, 1)
}, this))
}, this))
},
show: function() {
this.elements.add(Window.buttonTopClose).add(this.close).hide();
var a = this.elements,
b = Window.options.controls,
c = b && b.close;
switch (c) {
case "top":
a = a.add(this.close);
break;
case "relative":
a = a.add(Window.buttonTopClose)
}
Window.refreshPreviousNext(), a.show(), Window.views && Window.views.length <= 1 || this.element.stop(1, 0).fadeTo(Window.options.effects.thumbnails.show, 1)
},
hide: function() {
this.elements.add(Window.buttonTopClose).add(this.close).hide(), this.element.stop(1, 0).fadeOut(Window.options.effects.thumbnails.hide)
},
_previous: function() {
if (!(this.position < 1)) {
var a = this.position - 1;
this.setActive(a), this.setPosition(a), Window.setPosition(a)
}
},
_next: function() {
if (!(this.position + 1 > Window.views.length)) {
var a = this.position + 1;
this.setActive(a), this.setPosition(a), Window.setPosition(a)
}
},
adjustToViewport: function() {
var a = H.viewport();
this.slider.css({
width: a.width + "px"
})
},
setPosition: function(a) {
var b = this.position < 0;
1 > a && (a = 1);
var c = this.itemCount();
a > c && (a = c), this.position = a, this.setActive(a), Window.refreshPreviousNext(), this.moveTo(a, b)
},
moveTo: function(a, b) {
this.adjustToViewport();
var c = H.viewport(),
d = c.width,
e = this.slide.find(".lv_thumbnail").outerWidth(),
g = .5 * d + -1 * (e * (a - 1) + .5 * e);
this.slide.stop(1, 0).animate({
left: g + "px"
}, b ? 0 : Window.options.effects.thumbnails.slide, $.proxy(function() {
this.loadThumbnailsWithinViewport()
}, this))
},
setActive: function(a) {
var b = this.slide.find(".lv_thumbnail").removeClass("lv_thumbnail_active");
a && $(b[a - 1]).addClass("lv_thumbnail_active")
},
refresh: function() {
this.position && this.setPosition(this.position)
},
itemCount: function() {
return this.slide.find(".lv_thumbnail").length || 0
}
}, J.Relative = {
create: function() {
this.Slider.create(), this.elements = $(this.Slider.element).add(Window.sideButtonsUnderneath).add(Window.sideButtonsUnderneath.find(".lv_side_left")).add(Window.sideButtonsUnderneath.find(".lv_side_right")).add(Window.innerPreviousNextOverlays).add(Window.innerPreviousNextOverlays.find(".lv_button"))
},
show: function() {
this.hide();
var a = this.elements,
b = Window.options.controls,
c = b && b.close;
switch (c) {
case "top":
a = a.add(J.Top.close);
break;
case "relative":
a = a.add(Window.buttonTopClose)
}
a.show(), Window.refreshPreviousNext(), (Window.view && Window.views.length > 1 && Window.mayPrevious() || Window.mayNext()) && this.Slider.show()
},
hide: function() {
this.elements.add(J.Top.close).add(Window.buttonTopClose).hide()
},
refresh: function() {
this.Slider.refresh()
},
play: function() {
this.Slider.play()
},
stop: function() {
this.Slider.stop()
}
}, J.Relative.Slider = {
setOptions: function() {
var a = Window.options,
b = a.controls && a.controls.slider || {};
this.options = {
items: b.items || 5,
duration: a.effects && a.effects.slider && a.effects.slider.slide || 100,
slideshow: a.slideshow
}
},
create: function() {
$(Window.element).append(this.element = $("<div>").addClass("lv_controls_relative").append(this.slider = $("<div>").addClass("lv_slider").append(this.slider_previous = $("<div>").addClass("lv_slider_icon lv_slider_previous").append($("<div>").addClass("lv_icon").data("side", "previous"))).append(this.slider_numbers = $("<div>").addClass("lv_slider_numbers").append(this.slider_slide = $("<div>").addClass("lv_slider_slide"))).append(this.slider_next = $("<div>").addClass("lv_slider_icon lv_slider_next").append($("<div>").addClass("lv_icon").data("side", "next"))).append(this.slider_slideshow = $("<div>").addClass("lv_slider_icon lv_slider_slideshow").append($("<div>").addClass("lv_icon lv_slider_next"))))), this.element.hide(), this.count = 0, this.position = 1, this.page = 1, this.setOptions(), this.startObserving()
},
startObserving: function() {
this.slider_slide.delegate(".lv_slider_number", "click", $.proxy(function(a) {
a.preventDefault(), a.stopPropagation();
var b = parseInt($(a.target).html());
this.setActive(b), Window.stop(), Window.setPosition(b)
}, this)), $.each("previous next".split(" "), $.proxy(function(a, b) {
this["slider_" + b].bind("click", $.proxy(this[b + "Page"], this))
}, this)), this.slider.bind("lightview:mousewheel", $.proxy(function(a, b) {
Window.options && Window.options.mousewheel && (this.count <= this.options.items || (a.preventDefault(), a.stopPropagation(), this[(b > 0 ? "previous" : "next") + "Page"]()))
}, this)), this.slider_slideshow.bind("click", $.proxy(function() {
this.slider_slideshow.hasClass("lv_slider_slideshow_disabled") || Window[Window.States.get("playing") ? "stop" : "play"](!0)
}, this))
},
refresh: function() {
this.setOptions();
var a = this.itemCount(),
b = a <= this.options.items ? a : this.options.items,
c = $(Window.element).is(":visible");
if (this.element.css({
width: "auto"
}), this.slider[a > 1 ? "show" : "hide"](), !(2 > a)) {
c || $(Window.element).show();
var d = $(document.createElement("div")).addClass("lv_slider_number");
this.slider_slide.append(d);
var e = d.outerWidth(!0);
this.nr_width = e, d.addClass("lv_slider_number_last"), this.nr_margin_last = e - d.outerWidth(!0) || 0, d.remove();
var a = this.itemCount(),
b = a <= this.options.items ? a : this.options.items,
f = this.count % this.options.items,
g = f ? this.options.items - f : 0;
this.slider_numbers.css({
width: this.nr_width * b - this.nr_margin_last + "px"
}), this.slider_slide.css({
width: this.nr_width * (this.count + g) + "px"
});
var h = Window.views && $.grep(Window.views, function(a) {
return a.options.slideshow
}).length == Window.views.length;
this.slider_slideshow.hide().removeClass("lv_slider_slideshow_disabled"), h && this.slider_slideshow.show(), this.options.slideshow || this.slider_slideshow.addClass("lv_slider_slideshow_disabled"), this.itemCount() <= this.options.items ? (this.slider_next.hide(), this.slider_previous.hide()) : (this.slider_next.show(), this.slider_previous.show()), this.element.css({
width: "auto"
}), this.slider.css({
width: "auto"
});
var i = 0,
j = jQuery.map($.makeArray(this.slider.children("div:visible")), function(a) {
var c = $(a).outerWidth(!0);
return Browser.IE && Browser.IE < 7 && (c += (parseInt($(a).css("margin-left")) || 0) + (parseInt($(a).css("margin-right")) || 0)), c
});
$.each(j, function(a, b) {
i += b
}), Browser.IE && Browser.IE < 7 && i++, this.element.css({
position: "absolute"
}), i && this.element.css({
width: i + "px"
}), i && this.slider.css({
width: i + "px"
}), this.element.css({
"margin-left": Math.ceil(-.5 * i) + "px"
});
var k = parseInt(this.slider_slide.css("left") || 0),
l = this.pageCount();
k < -1 * (l - 1) * this.options.items * this.nr_width && this.scrollToPage(l, !0), this.refreshButtonStates(), c || $(Window.element).hide(), Window.options && Window.options.controls && !Window.options.controls.slider && this.slider.hide()
}
},
itemCount: function() {
return this.slider_slide.find(".lv_slider_number").length || 0
},
pageCount: function() {
return Math.ceil(this.itemCount() / this.options.items)
},
setActive: function(a) {
$(this.slider_numbers.find(".lv_slider_number").removeClass("lv_slider_number_active")[a - 1]).addClass("lv_slider_number_active")
},
setPosition: function(a) {
1 > a && (a = 1);
var b = this.itemCount();
a > b && (a = b), this.position = a, this.setActive(a), this.scrollToPage(Math.ceil(a / this.options.items))
},
refreshButtonStates: function() {
this.slider_next.removeClass("lv_slider_next_disabled"), this.slider_previous.removeClass("lv_slider_previous_disabled"), this.page - 1 < 1 && this.slider_previous.addClass("lv_slider_previous_disabled"), this.page >= this.pageCount() && this.slider_next.addClass("lv_slider_next_disabled"), this[Window.States.get("playing") ? "play" : "stop"]()
},
scrollToPage: function(a, b) {
this.page == a || 1 > a || a > this.pageCount() || (Browser.MobileSafari && this.slider_numbers.css({
opacity: .999
}), this.slider_slide.stop(!0).animate({
left: -1 * this.options.items * this.nr_width * (a - 1) + "px"
}, b ? 0 : this.options.duration || 0, "linear", $.proxy(function() {
Browser.MobileSafari && this.slider_numbers.css({
opacity: 1
})
}, this)), this.page = a, this.refreshButtonStates())
},
previousPage: function() {
this.scrollToPage(this.page - 1)
},
nextPage: function() {
this.scrollToPage(this.page + 1)
},
populate: function(a) {
this.slider_slide.find(".lv_slider_number, .lv_slider_number_empty").remove();
for (var b = 0; a > b; b++) this.slider_slide.append($("<div>").addClass("lv_slider_number").html(b + 1));
for (var c = this.options.items, d = a % c ? c - a % c : 0, b = 0; d > b; b++) this.slider_slide.append($("<div>").addClass("lv_slider_number_empty"));
this.slider_numbers.find(".lv_slider_number, lv_slider_number_empty").removeClass("lv_slider_number_last").last().addClass("lv_slider_number_last"), this.count = a, this.refresh()
},
show: function() {
this.element.show()
},
hide: function() {
this.element.hide()
},
play: function() {
this.slider_slideshow.addClass("lv_slider_slideshow_playing")
},
stop: function() {
this.slider_slideshow.removeClass("lv_slider_slideshow_playing")
}
}, J.Top = {
create: function() {
if ($(document.body).append(this.element = $("<div>").addClass("lv_controls_top").append(this.middle = $("<div>").addClass("lv_top_middle").hide().append(this.middle_previous = $("<div>").addClass("lv_top_button lv_top_previous").data("side", "previous").append($("<div>").addClass("lv_icon").append(this.text_previous = $("<span>")))).append(this.middle_slideshow = $("<div>").addClass("lv_top_button lv_top_slideshow").append($("<div>").addClass("lv_icon"))).append(this.middle_next = $("<div>").addClass("lv_top_button lv_top_next").data("side", "next").append($("<div>").addClass("lv_icon").append(this.text_next = $("<span>"))))).hide()).append(this.close = $("<div>").addClass("lv_controls_top_close").append(this.close_button = $("<div>").addClass("lv_controls_top_close_button")).hide()), Browser.IE && Browser.IE < 7) {
var a = this.element[0].style;
a.position = "absolute", a.setExpression("top", '((!!window.jQuery && jQuery(window).scrollTop()) || 0) + "px"');
var b = this.close[0].style;
b.position = "absolute", b.setExpression("top", '((!!window.jQuery && jQuery(window).scrollTop()) || 0) + "px"')
}
this.setOptions(), this.startObserving()
},
setOptions: function() {
this.options = $.extend({
slideshow: !0,
text: {
previous: "Prev",
next: "Next"
},
close: !0
}, Window.options && Window.options.controls || {}), this.setText()
},
setSkin: function(a) {
var b = {
element: "lv_controls_top_skin_",
close: "lv_controls_top_close_skin_"
};
$.each(b, $.proxy(function(b, c) {
var d = this[b];
$.each((d[0].className || "").split(" "), function(a, b) {
b.indexOf(c) > -1 && d.removeClass(b)
}), d.addClass(c + a)
}, this))
},
setText: function() {
this.text_previous.hide(), this.text_next.hide(), this.options.text && (this.text_previous.html(this.options.text.previous).show(), this.text_next.html(this.options.text.next).show())
},
startObserving: function() {
this.middle_previous.bind("click", function() {
Window.stop(), Window.previous(), $(this).blur()
}), this.middle_slideshow.bind("click", function() {
$(this).find(".lv_icon_disabled").length > 0 || Window[Window.States.get("playing") ? "stop" : "play"](!0)
}), this.middle_next.bind("click", function() {
Window.stop(), Window.next(), $(this).blur()
}), this.close_button.bind("click", function() {
Window.hide()
}), this.element.add(this.close).bind("lightview:mousewheel", $.proxy(function(a) {
(!Window.options || !Window.options.mousewheel || Window.options && Window.options.viewport) && (a.preventDefault(), a.stopPropagation())
}, this))
},
show: function() {
var a = this.element,
b = Window.options.controls,
c = b && b.close;
switch (c) {
case "top":
a = a.add(this.close);
break;
case "relative":
a = a.add(Window.buttonTopClose)
}
a.show()
},
hide: function() {
this.element.hide(), this.close.hide()
},
refresh: function() {
this.setOptions(), this.element.find(".lv_icon_disabled").removeClass("lv_icon_disabled"), Window.mayPrevious() || this.middle_previous.find(".lv_icon").addClass("lv_icon_disabled"), Window.options.slideshow || this.middle_slideshow.find(".lv_icon").addClass("lv_icon_disabled"), Window.mayNext() || this.middle_next.find(".lv_icon").addClass("lv_icon_disabled"), this.element.removeClass("lv_controls_top_with_slideshow");
var a = Window.views && $.grep(Window.views, function(a) {
return a.options.slideshow
}).length > 0;
a && this.element.addClass("lv_controls_top_with_slideshow"), this.element["top" == J.type && Window.views.length > 1 ? "show" : "hide"](), this[Window.States.get("playing") ? "play" : "stop"]()
},
play: function() {
this.middle_slideshow.addClass("lv_top_slideshow_playing")
},
stop: function() {
this.middle_slideshow.removeClass("lv_top_slideshow_playing")
}
}, Window.updateQueue = function() {
function a() {
$(document.body).append($(document.createElement("div")).addClass("lv_update_queue").append($("<div>").addClass("lv_window").append(this.container = $("<div>").addClass("lv_content"))))
}
function b(a) {
return {
width: $(a).innerWidth(),
height: $(a).innerHeight()
}
}
function c(a) {
var c = b(a),
d = a.parentNode;
return d && $(d).css({
width: c.width + "px"
}) && b(a).height > c.height && c.width++, $(d).css({
width: "100%"
}), c
}
function d(a, b, c) {
this.container || this.build(), $.extend({
spinner: !1
}, arguments[3] || {}), (b.options.inline || _.isElement(a)) && (b.options.inline && "string" == $.type(a) && (a = $("#" + a)[0]), !Window.inlineMarker && a && _.element.isAttached(a) && ($(a).data("lv_restore_inline_display", $(a).css("display")), Window.inlineMarker = document.createElement("div"), $(a).before($(Window.inlineMarker).hide())));
var e = document.createElement("div");
this.container.append($(e).addClass("lv_content_wrapper").append(a)), _.isElement(a) && $(a).show(), b.options.wrapperClass && $(e).addClass(b.options.wrapperClass), b.options.skin && $(e).addClass("lv_content_" + b.options.skin);
var f = $(e).find("img[src]").filter(function() {
return !($(this).attr("height") && $(this).attr("width"))
});
if (f.length > 0) {
Window.States.set("preloading_images", !0);
var g = 0,
h = b.url,
i = Math.max(8e3, 750 * (f.length || 0));
Window.Timeouts.clear("preloading_images"), Window.Timeouts.set("preloading_images", $.proxy(function() {
f.each(function() {
this.onload = function() {}
}), g >= f.length || Window.view && Window.view.url != h || this._update(e, b, c)
}, this), i), Window.States.set("preloading_images", f), $.each(f, $.proxy(function(a, d) {
var i = new Image;
i.onload = $.proxy(function() {
i.onload = function() {};
var a = i.width,
j = i.height,
k = $(d).attr("width"),
l = $(d).attr("height");
if (k && l || (!k && l ? (a = Math.round(l * a / j), j = l) : !l && k && (j = Math.round(k * j / a), a = k), $(d).attr({
width: a,
height: j
})), g++, g == f.length) {
if (Window.Timeouts.clear("preloading_images"), Window.States.set("preloading_images", !1), Window.view && Window.view.url != h) return;
this._update(e, b, c)
}
}, this), i.src = d.src
}, this))
} else this._update(e, b, c)
}
function e(a, b, d) {
var e = c(a);
e = f(a, e, b), Window.resizeTo(e.width, e.height, {
complete: function() {
Window.content.html(a), d && d()
}
})
}
function f(a, b, d) {
var e = {
width: b.width - (parseInt($(a).css("padding-left")) || 0) - (parseInt($(a).css("padding-right")) || 0),
height: b.height - (parseInt($(a).css("padding-top")) || 0) - (parseInt($(a).css("padding-bottom")) || 0)
},
f = Window.options.width;
if (f && "number" == $.type(f) && e.width > f && ($(a).css({
width: f + "px"
}), b = c(a)), b = Window.Dimensions.fit(b, d), /(inline|ajax|html)/.test(d.type) && Window.States.get("resized")) {
var g = $("<div>");
g.css({
position: "absolute",
top: 0,
left: 0,
width: "100%",
height: "100%"
}), $(a).append(g);
var h = g.innerWidth();
$(a).css(px(b)).css({
overflow: "auto"
});
var i = g.innerWidth(),
j = h - i;
j && (b.width += j, $(a).css(px(b)), b = Window.Dimensions.fit(b, d)), g.remove()
}
return b
}
return {
build: a,
update: d,
_update: e,
getFittedDimensions: f,
getMeasureElementDimensions: c
}
}(), $.extend(!0, Lightview, function() {
function show(d) {
var e = arguments[1] || {},
position = arguments[2];
arguments[1] && "number" == $.type(arguments[1]) && (position = arguments[1], e = G.create({}));
var f = [],
object_type;
switch (object_type = $.type(d)) {
case "string":
case "object":
var g = new View(d, e);
if (g.group) {
if (d && 1 == d.nodeType) {
var h = $('.lightview[data-lightview-group="' + $(d).data("lightview-group") + '"]'),
j = {};
h.filter("[data-lightview-group-options]").each(function(i, a) {
$.extend(j, eval("({" + ($(a).attr("data-lightview-group-options") || "") + "})"))
}), h.each(function(a, b) {
position || b != d || (position = a + 1), f.push(new View(b, $.extend({}, j, e)))
})
}
} else {
var j = {};
d && 1 == d.nodeType && $(d).is("[data-lightview-group-options]") && ($.extend(j, eval("({" + ($(d).attr("data-lightview-group-options") || "") + "})")), g = new View(d, $.extend({}, j, e))), f.push(g)
}
break;
case "array":
$.each(d, function(a, b) {
var c = new View(b, e);
f.push(c)
})
}(!position || 1 > position) && (position = 1), position > f.length && (position = f.length), Window.load(f, position, {
initialDimensionsOnly: !0
}), Window.show(function() {
Window.setPosition(position)
})
}
function refresh() {
return Window.refresh(), this
}
function setDefaultSkin(a) {
return Window.setDefaultSkin(a), this
}
function hide() {
return Window.hide(), this
}
function play(a) {
return Window.play(a), this
}
function stop() {
return Window.stop(), this
}
return {
show: show,
hide: hide,
play: play,
stop: stop,
refresh: refresh,
setDefaultSkin: setDefaultSkin
}
}()), D.Lightview = Lightview, $(document).ready(function() {
Lightview.init()
})
}(jQuery, window);
|
#32 JavaScript::Eval (size: 7584, repeated: 1) - SHA256: 475a24821560dba005a057ec11895afebb6eccdbea55675422c4bc5c2e4df094
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */
__webpack_require__.d(__webpack_exports__, "MediaQuery", function() {
return MediaQuery;
});
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! jquery */ "jquery");
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
function _typeof(obj) {
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function _typeof(obj) {
return typeof obj;
};
} else {
_typeof = function _typeof(obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
return _typeof(obj);
}
// Default set of media queries
var defaultQueries = {
'default': 'only screen',
landscape: 'only screen and (orientation: landscape)',
portrait: 'only screen and (orientation: portrait)',
retina: 'only screen and (-webkit-min-device-pixel-ratio: 2),' + 'only screen and (min--moz-device-pixel-ratio: 2),' + 'only screen and (-o-min-device-pixel-ratio: 2/1),' + 'only screen and (min-device-pixel-ratio: 2),' + 'only screen and (min-resolution: 192dpi),' + 'only screen and (min-resolution: 2dppx)'
}; // matchMedia() polyfill - Test a CSS media type/query in JS.
// Authors & copyright(c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas, David Knight. MIT license
/* eslint-disable */
window.matchMedia || (window.matchMedia = function() {
"use strict"; // For browsers that support matchMedium api such as IE 9 and webkit
var styleMedia = window.styleMedia || window.media; // For those that don't support matchMedium
if (!styleMedia) {
var style = document.createElement('style'),
script = document.getElementsByTagName('script')[0],
info = null;
style.type = 'text/css';
style.id = 'matchmediajs-test';
if (!script) {
document.head.appendChild(style);
} else {
script.parentNode.insertBefore(style, script);
} // 'style.currentStyle' is used by IE <= 8 and 'window.getComputedStyle' for all other browsers
info = 'getComputedStyle' in window && window.getComputedStyle(style, null) || style.currentStyle;
styleMedia = {
matchMedium: function matchMedium(media) {
var text = '@media ' + media + '{ #matchmediajs-test { width: 1px; } }'; // 'style.styleSheet' is used by IE <= 8 and 'style.textContent' for all other browsers
if (style.styleSheet) {
style.styleSheet.cssText = text;
} else {
style.textContent = text;
} // Test if media query is true or false
return info.width === '1px';
}
};
}
return function(media) {
return {
matches: styleMedia.matchMedium(media || 'all'),
media: media || 'all'
};
};
}());
/* eslint-enable */
var MediaQuery = {
queries: [],
current: '',
/**
* Initializes the media query helper, by extracting the breakpoint list from the CSS and activating the breakpoint watcher.
* @function
* @private
*/
_init: function _init() {
var self = this;
var $meta = jquery__WEBPACK_IMPORTED_MODULE_0___default()('meta.foundation-mq');
if (!$meta.length) {
jquery__WEBPACK_IMPORTED_MODULE_0___default()('<meta class="foundation-mq">').appendTo(document.head);
}
var extractedStyles = jquery__WEBPACK_IMPORTED_MODULE_0___default()('.foundation-mq').css('font-family');
var namedQueries;
namedQueries = parseStyleToObject(extractedStyles);
for (var key in namedQueries) {
if (namedQueries.hasOwnProperty(key)) {
self.queries.push({
name: key,
value: "only screen and (min-width: ".concat(namedQueries[key], ")")
});
}
}
this.current = this._getCurrentSize();
this._watcher();
},
/**
* Checks if the screen is at least as wide as a breakpoint.
* @function
* @param {String} size - Name of the breakpoint to check.
* @returns {Boolean} `true` if the breakpoint matches, `false` if it's smaller.
*/
atLeast: function atLeast(size) {
var query = this.get(size);
if (query) {
return window.matchMedia(query).matches;
}
return false;
},
/**
* Checks if the screen matches to a breakpoint.
* @function
* @param {String} size - Name of the breakpoint to check, either 'small only' or 'small'. Omitting 'only' falls back to using atLeast() method.
* @returns {Boolean} `true` if the breakpoint matches, `false` if it does not.
*/
is: function is(size) {
size = size.trim().split(' ');
if (size.length > 1 && size[1] === 'only') {
if (size[0] === this._getCurrentSize()) return true;
} else {
return this.atLeast(size[0]);
}
return false;
},
/**
* Gets the media query of a breakpoint.
* @function
* @param {String} size - Name of the breakpoint to get.
* @returns {String|null} - The media query of the breakpoint, or `null` if the breakpoint doesn't exist.
*/
get: function get(size) {
for (var i in this.queries) {
if (this.queries.hasOwnProperty(i)) {
var query = this.queries[i];
if (size === query.name) return query.value;
}
}
return null;
},
/**
* Gets the current breakpoint name by testing every breakpoint and returning the last one to match (the biggest one).
* @function
* @private
* @returns {String} Name of the current breakpoint.
*/
_getCurrentSize: function _getCurrentSize() {
var matched;
for (var i = 0; i < this.queries.length; i++) {
var query = this.queries[i];
if (window.matchMedia(query.value).matches) {
matched = query;
}
}
if (_typeof(matched) === 'object') {
return matched.name;
} else {
return matched;
}
},
/**
* Activates the breakpoint watcher, which fires an event on the window whenever the breakpoint changes.
* @function
* @private
*/
_watcher: function _watcher() {
var _this = this;
jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off('resize.zf.mediaquery').on('resize.zf.mediaquery', function() {
var newSize = _this._getCurrentSize(),
currentSize = _this.current;
if (newSize !== currentSize) {
// Change the current media query
_this.current = newSize; // Broadcast the media query change on the window
jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).trigger('changed.zf.mediaquery', [newSize, currentSize]);
}
});
}
}; // Thank you: https://github.com/sindresorhus/query-string
function parseStyleToObject(str) {
var styleObject = {};
if (typeof str !== 'string') {
return styleObject;
}
str = str.trim().slice(1, -1); // browsers re-quote string style values
if (!str) {
return styleObject;
}
styleObject = str.split('&').reduce(function(ret, param) {
var parts = param.replace(/\+/g, ' ').split('=');
var key = parts[0];
var val = parts[1];
key = decodeURIComponent(key); // missing `=` should be `null`:
// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters
val = typeof val === 'undefined' ? null : decodeURIComponent(val);
if (!ret.hasOwnProperty(key)) {
ret[key] = val;
} else if (Array.isArray(ret[key])) {
ret[key].push(val);
} else {
ret[key] = [ret[key], val];
}
return ret;
}, {});
return styleObject;
}
//# sourceURL=webpack:///./js/foundation.util.mediaQuery.js?
|
#33 JavaScript::Eval (size: 6460, repeated: 1) - SHA256: 7443aab67cbb1e2634ce7c4a6700e0236dd258d27b0da478789d264d1e6a29eb
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */
__webpack_require__.d(__webpack_exports__, "Touch", function() {
return Touch;
});
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! jquery */ "jquery");
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a 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);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
//**************************************************
//**Work inspired by multiple jquery swipe plugins**
//**Done by Yohai Ararat ***************************
//**************************************************
var Touch = {};
var startPosX,
startPosY,
startTime,
elapsedTime,
startEvent,
isMoving = false,
didMoved = false;
function onTouchEnd(e) {
this.removeEventListener('touchmove', onTouchMove);
this.removeEventListener('touchend', onTouchEnd); // If the touch did not move, consider it as a "tap"
if (!didMoved) {
var tapEvent = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event('tap', startEvent || e);
jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger(tapEvent);
}
startEvent = null;
isMoving = false;
didMoved = false;
}
function onTouchMove(e) {
if (jquery__WEBPACK_IMPORTED_MODULE_0___default.a.spotSwipe.preventDefault) {
e.preventDefault();
}
if (isMoving) {
var x = e.touches[0].pageX;
var y = e.touches[0].pageY;
var dx = startPosX - x;
var dy = startPosY - y;
var dir;
didMoved = true;
elapsedTime = new Date().getTime() - startTime;
if (Math.abs(dx) >= jquery__WEBPACK_IMPORTED_MODULE_0___default.a.spotSwipe.moveThreshold && elapsedTime <= jquery__WEBPACK_IMPORTED_MODULE_0___default.a.spotSwipe.timeThreshold) {
dir = dx > 0 ? 'left' : 'right';
} // else if(Math.abs(dy) >= $.spotSwipe.moveThreshold && elapsedTime <= $.spotSwipe.timeThreshold) {
// dir = dy > 0 ? 'down' : 'up';
// }
if (dir) {
e.preventDefault();
onTouchEnd.apply(this, arguments);
jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger(jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event('swipe', e), dir).trigger(jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event("swipe".concat(dir), e));
}
}
}
function onTouchStart(e) {
if (e.touches.length == 1) {
startPosX = e.touches[0].pageX;
startPosY = e.touches[0].pageY;
startEvent = e;
isMoving = true;
didMoved = false;
startTime = new Date().getTime();
this.addEventListener('touchmove', onTouchMove, false);
this.addEventListener('touchend', onTouchEnd, false);
}
}
function init() {
this.addEventListener && this.addEventListener('touchstart', onTouchStart, false);
}
function teardown() {
this.removeEventListener('touchstart', onTouchStart);
}
var SpotSwipe =
/*#__PURE__*/
function() {
function SpotSwipe($) {
_classCallCheck(this, SpotSwipe);
this.version = '1.0.0';
this.enabled = 'ontouchstart' in document.documentElement;
this.preventDefault = false;
this.moveThreshold = 75;
this.timeThreshold = 200;
this.$ = $;
this._init();
}
_createClass(SpotSwipe, [{
key: "_init",
value: function _init() {
var $ = this.$;
$.event.special.swipe = {
setup: init
};
$.event.special.tap = {
setup: init
};
$.each(['left', 'up', 'down', 'right'], function() {
$.event.special["swipe".concat(this)] = {
setup: function setup() {
$(this).on('swipe', $.noop);
}
};
});
}
}]);
return SpotSwipe;
}();
/****************************************************
* As far as I can tell, both setupSpotSwipe and *
* setupTouchHandler should be idempotent, *
* because they directly replace functions & *
* values, and do not add event handlers directly. *
****************************************************/
Touch.setupSpotSwipe = function($) {
$.spotSwipe = new SpotSwipe($);
};
/****************************************************
* Method for adding pseudo drag events to elements *
***************************************************/
Touch.setupTouchHandler = function($) {
$.fn.addTouch = function() {
this.each(function(i, el) {
$(el).bind('touchstart touchmove touchend touchcancel', function(event) {
//we pass the original event object because the jQuery event
//object is normalized to w3c specs and does not provide the TouchList
handleTouch(event);
});
});
var handleTouch = function handleTouch(event) {
var touches = event.changedTouches,
first = touches[0],
eventTypes = {
touchstart: 'mousedown',
touchmove: 'mousemove',
touchend: 'mouseup'
},
type = eventTypes[event.type],
simulatedEvent;
if ('MouseEvent' in window && typeof window.MouseEvent === 'function') {
simulatedEvent = new window.MouseEvent(type, {
'bubbles': true,
'cancelable': true,
'screenX': first.screenX,
'screenY': first.screenY,
'clientX': first.clientX,
'clientY': first.clientY
});
} else {
simulatedEvent = document.createEvent('MouseEvent');
simulatedEvent.initMouseEvent(type, true, true, window, 1, first.screenX, first.screenY, first.clientX, first.clientY, false, false, false, false, 0
/*left*/
, null);
}
first.target.dispatchEvent(simulatedEvent);
};
};
};
Touch.init = function($) {
if (typeof $.spotSwipe === 'undefined') {
Touch.setupSpotSwipe($);
Touch.setupTouchHandler($);
}
};
//# sourceURL=webpack:///./js/foundation.util.touch.js?
|
#34 JavaScript::Eval (size: 10839, repeated: 1) - SHA256: 3d2718c385a8ee3f1df7f353f04aa5c5ed79f8275bb179705eb5fdb57b282c9d
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */
__webpack_require__.d(__webpack_exports__, "Positionable", function() {
return Positionable;
});
/* harmony import */
var _foundation_util_box__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! ./foundation.util.box */ "./js/foundation.util.box.js");
/* harmony import */
var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! ./foundation.core.plugin */ "./js/foundation.core.plugin.js");
/* harmony import */
var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
function _typeof(obj) {
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function _typeof(obj) {
return typeof obj;
};
} else {
_typeof = function _typeof(obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
return _typeof(obj);
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a 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);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
function _possibleConstructorReturn(self, call) {
if (call && (_typeof(call) === "object" || typeof call === "function")) {
return call;
}
return _assertThisInitialized(self);
}
function _assertThisInitialized(self) {
if (self === void 0) {
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}
return self;
}
function _getPrototypeOf(o) {
_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
return o.__proto__ || Object.getPrototypeOf(o);
};
return _getPrototypeOf(o);
}
function _inherits(subClass, superClass) {
if (typeof superClass !== "function" && superClass !== null) {
throw new TypeError("Super expression must either be null or a function");
}
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
writable: true,
configurable: true
}
});
if (superClass) _setPrototypeOf(subClass, superClass);
}
function _setPrototypeOf(o, p) {
_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
o.__proto__ = p;
return o;
};
return _setPrototypeOf(o, p);
}
var POSITIONS = ['left', 'right', 'top', 'bottom'];
var VERTICAL_ALIGNMENTS = ['top', 'bottom', 'center'];
var HORIZONTAL_ALIGNMENTS = ['left', 'right', 'center'];
var ALIGNMENTS = {
'left': VERTICAL_ALIGNMENTS,
'right': VERTICAL_ALIGNMENTS,
'top': HORIZONTAL_ALIGNMENTS,
'bottom': HORIZONTAL_ALIGNMENTS
};
function nextItem(item, array) {
var currentIdx = array.indexOf(item);
if (currentIdx === array.length - 1) {
return array[0];
} else {
return array[currentIdx + 1];
}
}
var Positionable =
/*#__PURE__*/
function(_Plugin) {
_inherits(Positionable, _Plugin);
function Positionable() {
_classCallCheck(this, Positionable);
return _possibleConstructorReturn(this, _getPrototypeOf(Positionable).apply(this, arguments));
}
_createClass(Positionable, [{
key: "_init",
/**
* Abstract class encapsulating the tether-like explicit positioning logic
* including repositioning based on overlap.
* Expects classes to define defaults for vOffset, hOffset, position,
* alignment, allowOverlap, and allowBottomOverlap. They can do this by
* extending the defaults, or (for now recommended due to the way docs are
* generated) by explicitly declaring them.
*
**/
value: function _init() {
this.triedPositions = {};
this.position = this.options.position === 'auto' ? this._getDefaultPosition() : this.options.position;
this.alignment = this.options.alignment === 'auto' ? this._getDefaultAlignment() : this.options.alignment;
this.originalPosition = this.position;
this.originalAlignment = this.alignment;
}
}, {
key: "_getDefaultPosition",
value: function _getDefaultPosition() {
return 'bottom';
}
}, {
key: "_getDefaultAlignment",
value: function _getDefaultAlignment() {
switch (this.position) {
case 'bottom':
case 'top':
return Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["rtl"])() ? 'right' : 'left';
case 'left':
case 'right':
return 'bottom';
}
}
/**
* Adjusts the positionable possible positions by iterating through alignments
* and positions.
* @function
* @private
*/
}, {
key: "_reposition",
value: function _reposition() {
if (this._alignmentsExhausted(this.position)) {
this.position = nextItem(this.position, POSITIONS);
this.alignment = ALIGNMENTS[this.position][0];
} else {
this._realign();
}
}
/**
* Adjusts the dropdown pane possible positions by iterating through alignments
* on the current position.
* @function
* @private
*/
}, {
key: "_realign",
value: function _realign() {
this._addTriedPosition(this.position, this.alignment);
this.alignment = nextItem(this.alignment, ALIGNMENTS[this.position]);
}
}, {
key: "_addTriedPosition",
value: function _addTriedPosition(position, alignment) {
this.triedPositions[position] = this.triedPositions[position] || [];
this.triedPositions[position].push(alignment);
}
}, {
key: "_positionsExhausted",
value: function _positionsExhausted() {
var isExhausted = true;
for (var i = 0; i < POSITIONS.length; i++) {
isExhausted = isExhausted && this._alignmentsExhausted(POSITIONS[i]);
}
return isExhausted;
}
}, {
key: "_alignmentsExhausted",
value: function _alignmentsExhausted(position) {
return this.triedPositions[position] && this.triedPositions[position].length == ALIGNMENTS[position].length;
} // When we're trying to center, we don't want to apply offset that's going to
// take us just off center, so wrap around to return 0 for the appropriate
// offset in those alignments. TODO: Figure out if we want to make this
// configurable behavior... it feels more intuitive, especially for tooltips, but
// it's possible someone might actually want to start from center and then nudge
// slightly off.
}, {
key: "_getVOffset",
value: function _getVOffset() {
return this.options.vOffset;
}
}, {
key: "_getHOffset",
value: function _getHOffset() {
return this.options.hOffset;
}
}, {
key: "_setPosition",
value: function _setPosition($anchor, $element, $parent) {
if ($anchor.attr('aria-expanded') === 'false') {
return false;
}
var $eleDims = _foundation_util_box__WEBPACK_IMPORTED_MODULE_0__["Box"].GetDimensions($element),
$anchorDims = _foundation_util_box__WEBPACK_IMPORTED_MODULE_0__["Box"].GetDimensions($anchor);
if (!this.options.allowOverlap) {
// restore original position & alignment before checking overlap
this.position = this.originalPosition;
this.alignment = this.originalAlignment;
}
$element.offset(_foundation_util_box__WEBPACK_IMPORTED_MODULE_0__["Box"].GetExplicitOffsets($element, $anchor, this.position, this.alignment, this._getVOffset(), this._getHOffset()));
if (!this.options.allowOverlap) {
var overlaps = {};
var minOverlap = 100000000; // default coordinates to how we start, in case we can't figure out better
var minCoordinates = {
position: this.position,
alignment: this.alignment
};
while (!this._positionsExhausted()) {
var overlap = _foundation_util_box__WEBPACK_IMPORTED_MODULE_0__["Box"].OverlapArea($element, $parent, false, false, this.options.allowBottomOverlap);
if (overlap === 0) {
return;
}
if (overlap < minOverlap) {
minOverlap = overlap;
minCoordinates = {
position: this.position,
alignment: this.alignment
};
}
this._reposition();
$element.offset(_foundation_util_box__WEBPACK_IMPORTED_MODULE_0__["Box"].GetExplicitOffsets($element, $anchor, this.position, this.alignment, this._getVOffset(), this._getHOffset()));
} // If we get through the entire loop, there was no non-overlapping
// position available. Pick the version with least overlap.
this.position = minCoordinates.position;
this.alignment = minCoordinates.alignment;
$element.offset(_foundation_util_box__WEBPACK_IMPORTED_MODULE_0__["Box"].GetExplicitOffsets($element, $anchor, this.position, this.alignment, this._getVOffset(), this._getHOffset()));
}
}
}]);
return Positionable;
}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["Plugin"]);
Positionable.defaults = {
/**
* Position of positionable relative to anchor. Can be left, right, bottom, top, or auto.
* @option
* @type {string}
* @default 'auto'
*/
position: 'auto',
/**
* Alignment of positionable relative to anchor. Can be left, right, bottom, top, center, or auto.
* @option
* @type {string}
* @default 'auto'
*/
alignment: 'auto',
/**
* Allow overlap of container/window. If false, dropdown positionable first
* try to position as defined by data-position and data-alignment, but
* reposition if it would cause an overflow.
* @option
* @type {boolean}
* @default false
*/
allowOverlap: false,
/**
* Allow overlap of only the bottom of the container. This is the most common
* behavior for dropdowns, allowing the dropdown to extend the bottom of the
* screen but not otherwise influence or break out of the container.
* @option
* @type {boolean}
* @default true
*/
allowBottomOverlap: true,
/**
* Number of pixels the positionable should be separated vertically from anchor
* @option
* @type {number}
* @default 0
*/
vOffset: 0,
/**
* Number of pixels the positionable should be separated horizontally from anchor
* @option
* @type {number}
* @default 0
*/
hOffset: 0
};
//# sourceURL=webpack:///./js/foundation.positionable.js?
|
#35 JavaScript::Eval (size: 17716, repeated: 1) - SHA256: e34dcb6b21ac30c6eaa792dbab097f8c19ae726cdbec9706ca09f3f11703c568
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */
__webpack_require__.d(__webpack_exports__, "Tooltip", function() {
return Tooltip;
});
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! jquery */ "jquery");
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */
var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
/* harmony import */
var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! ./foundation.util.mediaQuery */ "./js/foundation.util.mediaQuery.js");
/* harmony import */
var _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! ./foundation.util.triggers */ "./js/foundation.util.triggers.js");
/* harmony import */
var _foundation_positionable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( /*! ./foundation.positionable */ "./js/foundation.positionable.js");
function _typeof(obj) {
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function _typeof(obj) {
return typeof obj;
};
} else {
_typeof = function _typeof(obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
return _typeof(obj);
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a 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);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
function _possibleConstructorReturn(self, call) {
if (call && (_typeof(call) === "object" || typeof call === "function")) {
return call;
}
return _assertThisInitialized(self);
}
function _assertThisInitialized(self) {
if (self === void 0) {
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}
return self;
}
function _get(target, property, receiver) {
if (typeof Reflect !== "undefined" && Reflect.get) {
_get = Reflect.get;
} else {
_get = function _get(target, property, receiver) {
var base = _superPropBase(target, property);
if (!base) return;
var desc = Object.getOwnPropertyDescriptor(base, property);
if (desc.get) {
return desc.get.call(receiver);
}
return desc.value;
};
}
return _get(target, property, receiver || target);
}
function _superPropBase(object, property) {
while (!Object.prototype.hasOwnProperty.call(object, property)) {
object = _getPrototypeOf(object);
if (object === null) break;
}
return object;
}
function _getPrototypeOf(o) {
_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
return o.__proto__ || Object.getPrototypeOf(o);
};
return _getPrototypeOf(o);
}
function _inherits(subClass, superClass) {
if (typeof superClass !== "function" && superClass !== null) {
throw new TypeError("Super expression must either be null or a function");
}
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
writable: true,
configurable: true
}
});
if (superClass) _setPrototypeOf(subClass, superClass);
}
function _setPrototypeOf(o, p) {
_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
o.__proto__ = p;
return o;
};
return _setPrototypeOf(o, p);
}
/**
* Tooltip module.
* @module foundation.tooltip
* @requires foundation.util.box
* @requires foundation.util.mediaQuery
* @requires foundation.util.triggers
*/
var Tooltip =
/*#__PURE__*/
function(_Positionable) {
_inherits(Tooltip, _Positionable);
function Tooltip() {
_classCallCheck(this, Tooltip);
return _possibleConstructorReturn(this, _getPrototypeOf(Tooltip).apply(this, arguments));
}
_createClass(Tooltip, [{
key: "_setup",
/**
* Creates a new instance of a Tooltip.
* @class
* @name Tooltip
* @fires Tooltip#init
* @param {jQuery} element - jQuery object to attach a tooltip to.
* @param {Object} options - object to extend the default configuration.
*/
value: function _setup(element, options) {
this.$element = element;
this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, Tooltip.defaults, this.$element.data(), options);
this.className = 'Tooltip'; // ie9 back compat
this.isActive = false;
this.isClick = false; // Triggers init is idempotent, just need to make sure it is initialized
_foundation_util_triggers__WEBPACK_IMPORTED_MODULE_3__["Triggers"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a);
this._init();
}
/**
* Initializes the tooltip by setting the creating the tip element, adding it's text, setting private variables and setting attributes on the anchor.
* @private
*/
}, {
key: "_init",
value: function _init() {
_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_2__["MediaQuery"]._init();
var elemId = this.$element.attr('aria-describedby') || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["GetYoDigits"])(6, 'tooltip');
this.options.tipText = this.options.tipText || this.$element.attr('title');
this.template = this.options.template ? jquery__WEBPACK_IMPORTED_MODULE_0___default()(this.options.template) : this._buildTemplate(elemId);
if (this.options.allowHtml) {
this.template.appendTo(document.body).html(this.options.tipText).hide();
} else {
this.template.appendTo(document.body).text(this.options.tipText).hide();
}
this.$element.attr({
'title': '',
'aria-describedby': elemId,
'data-yeti-box': elemId,
'data-toggle': elemId,
'data-resize': elemId
}).addClass(this.options.triggerClass);
_get(_getPrototypeOf(Tooltip.prototype), "_init", this).call(this);
this._events();
}
}, {
key: "_getDefaultPosition",
value: function _getDefaultPosition() {
// handle legacy classnames
var position = this.$element[0].className.match(/\b(top|left|right|bottom)\b/g);
return position ? position[0] : 'top';
}
}, {
key: "_getDefaultAlignment",
value: function _getDefaultAlignment() {
return 'center';
}
}, {
key: "_getHOffset",
value: function _getHOffset() {
if (this.position === 'left' || this.position === 'right') {
return this.options.hOffset + this.options.tooltipWidth;
} else {
return this.options.hOffset;
}
}
}, {
key: "_getVOffset",
value: function _getVOffset() {
if (this.position === 'top' || this.position === 'bottom') {
return this.options.vOffset + this.options.tooltipHeight;
} else {
return this.options.vOffset;
}
}
/**
* builds the tooltip element, adds attributes, and returns the template.
* @private
*/
}, {
key: "_buildTemplate",
value: function _buildTemplate(id) {
var templateClasses = "".concat(this.options.tooltipClass, " ").concat(this.options.templateClasses).trim();
var $template = jquery__WEBPACK_IMPORTED_MODULE_0___default()('<div></div>').addClass(templateClasses).attr({
'role': 'tooltip',
'aria-hidden': true,
'data-is-active': false,
'data-is-focus': false,
'id': id
});
return $template;
}
/**
* sets the position class of an element and recursively calls itself until there are no more possible positions to attempt, or the tooltip element is no longer colliding.
* if the tooltip is larger than the screen width, default to full width - any user selected margin
* @private
*/
}, {
key: "_setPosition",
value: function _setPosition() {
_get(_getPrototypeOf(Tooltip.prototype), "_setPosition", this).call(this, this.$element, this.template);
}
/**
* reveals the tooltip, and fires an event to close any other open tooltips on the page
* @fires Tooltip#closeme
* @fires Tooltip#show
* @function
*/
}, {
key: "show",
value: function show() {
if (this.options.showOn !== 'all' && !_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_2__["MediaQuery"].is(this.options.showOn)) {
// console.error('The screen is too small to display this tooltip');
return false;
}
var _this = this;
this.template.css('visibility', 'hidden').show();
this._setPosition();
this.template.removeClass('top bottom left right').addClass(this.position);
this.template.removeClass('align-top align-bottom align-left align-right align-center').addClass('align-' + this.alignment);
/**
* Fires to close all other open tooltips on the page
* @event Closeme#tooltip
*/
this.$element.trigger('closeme.zf.tooltip', this.template.attr('id'));
this.template.attr({
'data-is-active': true,
'aria-hidden': false
});
_this.isActive = true; // console.log(this.template);
this.template.stop().hide().css('visibility', '').fadeIn(this.options.fadeInDuration, function() { //maybe do stuff?
});
/**
* Fires when the tooltip is shown
* @event Tooltip#show
*/
this.$element.trigger('show.zf.tooltip');
}
/**
* Hides the current tooltip, and resets the positioning class if it was changed due to collision
* @fires Tooltip#hide
* @function
*/
}, {
key: "hide",
value: function hide() {
// console.log('hiding', this.$element.data('yeti-box'));
var _this = this;
this.template.stop().attr({
'aria-hidden': true,
'data-is-active': false
}).fadeOut(this.options.fadeOutDuration, function() {
_this.isActive = false;
_this.isClick = false;
});
/**
* fires when the tooltip is hidden
* @event Tooltip#hide
*/
this.$element.trigger('hide.zf.tooltip');
}
/**
* adds event listeners for the tooltip and its anchor
* TODO combine some of the listeners like focus and mouseenter, etc.
* @private
*/
}, {
key: "_events",
value: function _events() {
var _this = this;
var $template = this.template;
var isFocus = false;
if (!this.options.disableHover) {
this.$element.on('mouseenter.zf.tooltip', function(e) {
if (!_this.isActive) {
_this.timeout = setTimeout(function() {
_this.show();
}, _this.options.hoverDelay);
}
}).on('mouseleave.zf.tooltip', Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["ignoreMousedisappear"])(function(e) {
clearTimeout(_this.timeout);
if (!isFocus || _this.isClick && !_this.options.clickOpen) {
_this.hide();
}
}));
}
if (this.options.clickOpen) {
this.$element.on('mousedown.zf.tooltip', function(e) {
e.stopImmediatePropagation();
if (_this.isClick) { //_this.hide();
// _this.isClick = false;
} else {
_this.isClick = true;
if ((_this.options.disableHover || !_this.$element.attr('tabindex')) && !_this.isActive) {
_this.show();
}
}
});
} else {
this.$element.on('mousedown.zf.tooltip', function(e) {
e.stopImmediatePropagation();
_this.isClick = true;
});
}
if (!this.options.disableForTouch) {
this.$element.on('tap.zf.tooltip touchend.zf.tooltip', function(e) {
_this.isActive ? _this.hide() : _this.show();
});
}
this.$element.on({
// 'toggle.zf.trigger': this.toggle.bind(this),
// 'close.zf.trigger': this.hide.bind(this)
'close.zf.trigger': this.hide.bind(this)
});
this.$element.on('focus.zf.tooltip', function(e) {
isFocus = true;
if (_this.isClick) {
// If we're not showing open on clicks, we need to pretend a click-launched focus isn't
// a real focus, otherwise on hover and come back we get bad behavior
if (!_this.options.clickOpen) {
isFocus = false;
}
return false;
} else {
_this.show();
}
}).on('focusout.zf.tooltip', function(e) {
isFocus = false;
_this.isClick = false;
_this.hide();
}).on('resizeme.zf.trigger', function() {
if (_this.isActive) {
_this._setPosition();
}
});
}
/**
* adds a toggle method, in addition to the static show() & hide() functions
* @function
*/
}, {
key: "toggle",
value: function toggle() {
if (this.isActive) {
this.hide();
} else {
this.show();
}
}
/**
* Destroys an instance of tooltip, removes template element from the view.
* @function
*/
}, {
key: "_destroy",
value: function _destroy() {
this.$element.attr('title', this.template.text()).off('.zf.trigger .zf.tooltip').removeClass(this.options.triggerClass).removeClass('top right left bottom').removeAttr('aria-describedby data-disable-hover data-resize data-toggle data-tooltip data-yeti-box');
this.template.remove();
}
}]);
return Tooltip;
}(_foundation_positionable__WEBPACK_IMPORTED_MODULE_4__["Positionable"]);
Tooltip.defaults = {
disableForTouch: false,
/**
* Time, in ms, before a tooltip should open on hover.
* @option
* @type {number}
* @default 200
*/
hoverDelay: 200,
/**
* Time, in ms, a tooltip should take to fade into view.
* @option
* @type {number}
* @default 150
*/
fadeInDuration: 150,
/**
* Time, in ms, a tooltip should take to fade out of view.
* @option
* @type {number}
* @default 150
*/
fadeOutDuration: 150,
/**
* Disables hover events from opening the tooltip if set to true
* @option
* @type {boolean}
* @default false
*/
disableHover: false,
/**
* Optional addtional classes to apply to the tooltip template on init.
* @option
* @type {string}
* @default ''
*/
templateClasses: '',
/**
* Non-optional class added to tooltip templates. Foundation default is 'tooltip'.
* @option
* @type {string}
* @default 'tooltip'
*/
tooltipClass: 'tooltip',
/**
* Class applied to the tooltip anchor element.
* @option
* @type {string}
* @default 'has-tip'
*/
triggerClass: 'has-tip',
/**
* Minimum breakpoint size at which to open the tooltip.
* @option
* @type {string}
* @default 'small'
*/
showOn: 'small',
/**
* Custom template to be used to generate markup for tooltip.
* @option
* @type {string}
* @default ''
*/
template: '',
/**
* Text displayed in the tooltip template on open.
* @option
* @type {string}
* @default ''
*/
tipText: '',
touchCloseText: 'Tap to close.',
/**
* Allows the tooltip to remain open if triggered with a click or touch event.
* @option
* @type {boolean}
* @default true
*/
clickOpen: true,
/**
* Position of tooltip. Can be left, right, bottom, top, or auto.
* @option
* @type {string}
* @default 'auto'
*/
position: 'auto',
/**
* Alignment of tooltip relative to anchor. Can be left, right, bottom, top, center, or auto.
* @option
* @type {string}
* @default 'auto'
*/
alignment: 'auto',
/**
* Allow overlap of container/window. If false, tooltip will first try to
* position as defined by data-position and data-alignment, but reposition if
* it would cause an overflow. @option
* @type {boolean}
* @default false
*/
allowOverlap: false,
/**
* Allow overlap of only the bottom of the container. This is the most common
* behavior for dropdowns, allowing the dropdown to extend the bottom of the
* screen but not otherwise influence or break out of the container.
* Less common for tooltips.
* @option
* @type {boolean}
* @default false
*/
allowBottomOverlap: false,
/**
* Distance, in pixels, the template should push away from the anchor on the Y axis.
* @option
* @type {number}
* @default 0
*/
vOffset: 0,
/**
* Distance, in pixels, the template should push away from the anchor on the X axis
* @option
* @type {number}
* @default 0
*/
hOffset: 0,
/**
* Distance, in pixels, the template spacing auto-adjust for a vertical tooltip
* @option
* @type {number}
* @default 14
*/
tooltipHeight: 14,
/**
* Distance, in pixels, the template spacing auto-adjust for a horizontal tooltip
* @option
* @type {number}
* @default 12
*/
tooltipWidth: 12,
/**
* Allow HTML in tooltip. Warning: If you are loading user-generated content into tooltips,
* allowing HTML may open yourself up to XSS attacks.
* @option
* @type {boolean}
* @default false
*/
allowHtml: false
};
/**
* TODO utilize resize event trigger
*/
//# sourceURL=webpack:///./js/foundation.tooltip.js?
|
#36 JavaScript::Eval (size: 8615, repeated: 1) - SHA256: b1318b1e3ca5a09fdeadac65b1fd6a4ba48b0b18de1d214188f7506b4859519e
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */
__webpack_require__.d(__webpack_exports__, "ResponsiveToggle", function() {
return ResponsiveToggle;
});
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! jquery */ "jquery");
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */
var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! ./foundation.util.mediaQuery */ "./js/foundation.util.mediaQuery.js");
/* harmony import */
var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! ./foundation.util.motion */ "./js/foundation.util.motion.js");
/* harmony import */
var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! ./foundation.core.plugin */ "./js/foundation.core.plugin.js");
function _typeof(obj) {
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function _typeof(obj) {
return typeof obj;
};
} else {
_typeof = function _typeof(obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
return _typeof(obj);
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a 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);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
function _possibleConstructorReturn(self, call) {
if (call && (_typeof(call) === "object" || typeof call === "function")) {
return call;
}
return _assertThisInitialized(self);
}
function _assertThisInitialized(self) {
if (self === void 0) {
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}
return self;
}
function _getPrototypeOf(o) {
_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
return o.__proto__ || Object.getPrototypeOf(o);
};
return _getPrototypeOf(o);
}
function _inherits(subClass, superClass) {
if (typeof superClass !== "function" && superClass !== null) {
throw new TypeError("Super expression must either be null or a function");
}
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
writable: true,
configurable: true
}
});
if (superClass) _setPrototypeOf(subClass, superClass);
}
function _setPrototypeOf(o, p) {
_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
o.__proto__ = p;
return o;
};
return _setPrototypeOf(o, p);
}
/**
* ResponsiveToggle module.
* @module foundation.responsiveToggle
* @requires foundation.util.mediaQuery
* @requires foundation.util.motion
*/
var ResponsiveToggle =
/*#__PURE__*/
function(_Plugin) {
_inherits(ResponsiveToggle, _Plugin);
function ResponsiveToggle() {
_classCallCheck(this, ResponsiveToggle);
return _possibleConstructorReturn(this, _getPrototypeOf(ResponsiveToggle).apply(this, arguments));
}
_createClass(ResponsiveToggle, [{
key: "_setup",
/**
* Creates a new instance of Tab Bar.
* @class
* @name ResponsiveToggle
* @fires ResponsiveToggle#init
* @param {jQuery} element - jQuery object to attach tab bar functionality to.
* @param {Object} options - Overrides to the default plugin settings.
*/
value: function _setup(element, options) {
this.$element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element);
this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, ResponsiveToggle.defaults, this.$element.data(), options);
this.className = 'ResponsiveToggle'; // ie9 back compat
this._init();
this._events();
}
/**
* Initializes the tab bar by finding the target element, toggling element, and running update().
* @function
* @private
*/
}, {
key: "_init",
value: function _init() {
_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"]._init();
var targetID = this.$element.data('responsive-toggle');
if (!targetID) {
console.error('Your tab bar needs an ID of a Menu as the value of data-tab-bar.');
}
this.$targetMenu = jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(targetID));
this.$toggler = this.$element.find('[data-toggle]').filter(function() {
var target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('toggle');
return target === targetID || target === "";
});
this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, this.options, this.$targetMenu.data()); // If they were set, parse the animation classes
if (this.options.animate) {
var input = this.options.animate.split(' ');
this.animationIn = input[0];
this.animationOut = input[1] || null;
}
this._update();
}
/**
* Adds necessary event handlers for the tab bar to work.
* @function
* @private
*/
}, {
key: "_events",
value: function _events() {
var _this = this;
this._updateMqHandler = this._update.bind(this);
jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('changed.zf.mediaquery', this._updateMqHandler);
this.$toggler.on('click.zf.responsiveToggle', this.toggleMenu.bind(this));
}
/**
* Checks the current media query to determine if the tab bar should be visible or hidden.
* @function
* @private
*/
}, {
key: "_update",
value: function _update() {
// Mobile
if (!_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"].atLeast(this.options.hideFor)) {
this.$element.show();
this.$targetMenu.hide();
} // Desktop
else {
this.$element.hide();
this.$targetMenu.show();
}
}
/**
* Toggles the element attached to the tab bar. The toggle only happens if the screen is small enough to allow it.
* @function
* @fires ResponsiveToggle#toggled
*/
}, {
key: "toggleMenu",
value: function toggleMenu() {
var _this2 = this;
if (!_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"].atLeast(this.options.hideFor)) {
/**
* Fires when the element attached to the tab bar toggles.
* @event ResponsiveToggle#toggled
*/
if (this.options.animate) {
if (this.$targetMenu.is(':hidden')) {
_foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__["Motion"].animateIn(this.$targetMenu, this.animationIn, function() {
_this2.$element.trigger('toggled.zf.responsiveToggle');
_this2.$targetMenu.find('[data-mutate]').triggerHandler('mutateme.zf.trigger');
});
} else {
_foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__["Motion"].animateOut(this.$targetMenu, this.animationOut, function() {
_this2.$element.trigger('toggled.zf.responsiveToggle');
});
}
} else {
this.$targetMenu.toggle(0);
this.$targetMenu.find('[data-mutate]').trigger('mutateme.zf.trigger');
this.$element.trigger('toggled.zf.responsiveToggle');
}
}
}
}, {
key: "_destroy",
value: function _destroy() {
this.$element.off('.zf.responsiveToggle');
this.$toggler.off('.zf.responsiveToggle');
jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off('changed.zf.mediaquery', this._updateMqHandler);
}
}]);
return ResponsiveToggle;
}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_3__["Plugin"]);
ResponsiveToggle.defaults = {
/**
* The breakpoint after which the menu is always shown, and the tab bar is hidden.
* @option
* @type {string}
* @default 'medium'
*/
hideFor: 'medium',
/**
* To decide if the toggle should be animated or not.
* @option
* @type {boolean}
* @default false
*/
animate: false
};
//# sourceURL=webpack:///./js/foundation.responsiveToggle.js?
|
#37 JavaScript::Eval (size: 8984, repeated: 1) - SHA256: abe0613dfac413588f18be22b01c9d966ebf0682065594e9ae4f31ec660b048a
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */
__webpack_require__.d(__webpack_exports__, "Toggler", function() {
return Toggler;
});
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! jquery */ "jquery");
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */
var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! ./foundation.util.motion */ "./js/foundation.util.motion.js");
/* harmony import */
var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! ./foundation.core.plugin */ "./js/foundation.core.plugin.js");
/* harmony import */
var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
/* harmony import */
var _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( /*! ./foundation.util.triggers */ "./js/foundation.util.triggers.js");
function _typeof(obj) {
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function _typeof(obj) {
return typeof obj;
};
} else {
_typeof = function _typeof(obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
return _typeof(obj);
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a 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);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
function _possibleConstructorReturn(self, call) {
if (call && (_typeof(call) === "object" || typeof call === "function")) {
return call;
}
return _assertThisInitialized(self);
}
function _assertThisInitialized(self) {
if (self === void 0) {
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}
return self;
}
function _getPrototypeOf(o) {
_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
return o.__proto__ || Object.getPrototypeOf(o);
};
return _getPrototypeOf(o);
}
function _inherits(subClass, superClass) {
if (typeof superClass !== "function" && superClass !== null) {
throw new TypeError("Super expression must either be null or a function");
}
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
writable: true,
configurable: true
}
});
if (superClass) _setPrototypeOf(subClass, superClass);
}
function _setPrototypeOf(o, p) {
_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
o.__proto__ = p;
return o;
};
return _setPrototypeOf(o, p);
}
/**
* Toggler module.
* @module foundation.toggler
* @requires foundation.util.motion
* @requires foundation.util.triggers
*/
var Toggler =
/*#__PURE__*/
function(_Plugin) {
_inherits(Toggler, _Plugin);
function Toggler() {
_classCallCheck(this, Toggler);
return _possibleConstructorReturn(this, _getPrototypeOf(Toggler).apply(this, arguments));
}
_createClass(Toggler, [{
key: "_setup",
/**
* Creates a new instance of Toggler.
* @class
* @name Toggler
* @fires Toggler#init
* @param {Object} element - jQuery object to add the trigger to.
* @param {Object} options - Overrides to the default plugin settings.
*/
value: function _setup(element, options) {
this.$element = element;
this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, Toggler.defaults, element.data(), options);
this.className = '';
this.className = 'Toggler'; // ie9 back compat
// Triggers init is idempotent, just need to make sure it is initialized
_foundation_util_triggers__WEBPACK_IMPORTED_MODULE_4__["Triggers"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a);
this._init();
this._events();
}
/**
* Initializes the Toggler plugin by parsing the toggle class from data-toggler, or animation classes from data-animate.
* @function
* @private
*/
}, {
key: "_init",
value: function _init() {
var input; // Parse animation classes if they were set
if (this.options.animate) {
input = this.options.animate.split(' ');
this.animationIn = input[0];
this.animationOut = input[1] || null;
} // Otherwise, parse toggle class
else {
input = this.$element.data('toggler'); // Allow for a . at the beginning of the string
this.className = input[0] === '.' ? input.slice(1) : input;
} // Add ARIA attributes to triggers:
var id = this.$element[0].id,
$triggers = jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-open~=\"".concat(id, "\"], [data-close~=\"").concat(id, "\"], [data-toggle~=\"").concat(id, "\"]")); // - aria-expanded: according to the element visibility.
$triggers.attr('aria-expanded', !this.$element.is(':hidden')); // - aria-controls: adding the element id to it if not already in it.
$triggers.each(function(index, trigger) {
var $trigger = jquery__WEBPACK_IMPORTED_MODULE_0___default()(trigger);
var controls = $trigger.attr('aria-controls') || '';
var containsId = new RegExp("\\b".concat(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["RegExpEscape"])(id), "\\b")).test(controls);
if (!containsId) $trigger.attr('aria-controls', controls ? "".concat(controls, " ").concat(id) : id);
});
}
/**
* Initializes events for the toggle trigger.
* @function
* @private
*/
}, {
key: "_events",
value: function _events() {
this.$element.off('toggle.zf.trigger').on('toggle.zf.trigger', this.toggle.bind(this));
}
/**
* Toggles the target class on the target element. An event is fired from the original trigger depending on if the resultant state was "on" or "off".
* @function
* @fires Toggler#on
* @fires Toggler#off
*/
}, {
key: "toggle",
value: function toggle() {
this[this.options.animate ? '_toggleAnimate' : '_toggleClass']();
}
}, {
key: "_toggleClass",
value: function _toggleClass() {
this.$element.toggleClass(this.className);
var isOn = this.$element.hasClass(this.className);
if (isOn) {
/**
* Fires if the target element has the class after a toggle.
* @event Toggler#on
*/
this.$element.trigger('on.zf.toggler');
} else {
/**
* Fires if the target element does not have the class after a toggle.
* @event Toggler#off
*/
this.$element.trigger('off.zf.toggler');
}
this._updateARIA(isOn);
this.$element.find('[data-mutate]').trigger('mutateme.zf.trigger');
}
}, {
key: "_toggleAnimate",
value: function _toggleAnimate() {
var _this = this;
if (this.$element.is(':hidden')) {
_foundation_util_motion__WEBPACK_IMPORTED_MODULE_1__["Motion"].animateIn(this.$element, this.animationIn, function() {
_this._updateARIA(true);
this.trigger('on.zf.toggler');
this.find('[data-mutate]').trigger('mutateme.zf.trigger');
});
} else {
_foundation_util_motion__WEBPACK_IMPORTED_MODULE_1__["Motion"].animateOut(this.$element, this.animationOut, function() {
_this._updateARIA(false);
this.trigger('off.zf.toggler');
this.find('[data-mutate]').trigger('mutateme.zf.trigger');
});
}
}
}, {
key: "_updateARIA",
value: function _updateARIA(isOn) {
var id = this.$element[0].id;
jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-open=\"".concat(id, "\"], [data-close=\"").concat(id, "\"], [data-toggle=\"").concat(id, "\"]")).attr({
'aria-expanded': isOn ? true : false
});
}
/**
* Destroys the instance of Toggler on the element.
* @function
*/
}, {
key: "_destroy",
value: function _destroy() {
this.$element.off('.zf.toggler');
}
}]);
return Toggler;
}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2__["Plugin"]);
Toggler.defaults = {
/**
* Tells the plugin if the element should animated when toggled.
* @option
* @type {boolean}
* @default false
*/
animate: false
};
//# sourceURL=webpack:///./js/foundation.toggler.js?
|
#38 JavaScript::Eval (size: 14546, repeated: 1) - SHA256: b5f310a398cfd610f38603c8b6ddca4c7ef86ae39297661df784b9874c244860
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */
__webpack_require__.d(__webpack_exports__, "Equalizer", function() {
return Equalizer;
});
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! jquery */ "jquery");
/* harmony import */
var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */
var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__( /*! ./foundation.util.mediaQuery */ "./js/foundation.util.mediaQuery.js");
/* harmony import */
var _foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__( /*! ./foundation.util.imageLoader */ "./js/foundation.util.imageLoader.js");
/* harmony import */
var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__( /*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
/* harmony import */
var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__( /*! ./foundation.core.plugin */ "./js/foundation.core.plugin.js");
function _typeof(obj) {
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function _typeof(obj) {
return typeof obj;
};
} else {
_typeof = function _typeof(obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
return _typeof(obj);
}
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a 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);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
function _possibleConstructorReturn(self, call) {
if (call && (_typeof(call) === "object" || typeof call === "function")) {
return call;
}
return _assertThisInitialized(self);
}
function _assertThisInitialized(self) {
if (self === void 0) {
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}
return self;
}
function _getPrototypeOf(o) {
_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
return o.__proto__ || Object.getPrototypeOf(o);
};
return _getPrototypeOf(o);
}
function _inherits(subClass, superClass) {
if (typeof superClass !== "function" && superClass !== null) {
throw new TypeError("Super expression must either be null or a function");
}
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
writable: true,
configurable: true
}
});
if (superClass) _setPrototypeOf(subClass, superClass);
}
function _setPrototypeOf(o, p) {
_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
o.__proto__ = p;
return o;
};
return _setPrototypeOf(o, p);
}
/**
* Equalizer module.
* @module foundation.equalizer
* @requires foundation.util.mediaQuery
* @requires foundation.util.imageLoader if equalizer contains images
*/
var Equalizer =
/*#__PURE__*/
function(_Plugin) {
_inherits(Equalizer, _Plugin);
function Equalizer() {
_classCallCheck(this, Equalizer);
return _possibleConstructorReturn(this, _getPrototypeOf(Equalizer).apply(this, arguments));
}
_createClass(Equalizer, [{
key: "_setup",
/**
* Creates a new instance of Equalizer.
* @class
* @name Equalizer
* @fires Equalizer#init
* @param {Object} element - jQuery object to add the trigger to.
* @param {Object} options - Overrides to the default plugin settings.
*/
value: function _setup(element, options) {
this.$element = element;
this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, Equalizer.defaults, this.$element.data(), options);
this.className = 'Equalizer'; // ie9 back compat
this._init();
}
/**
* Initializes the Equalizer plugin and calls functions to get equalizer functioning on load.
* @private
*/
}, {
key: "_init",
value: function _init() {
var eqId = this.$element.attr('data-equalizer') || '';
var $watched = this.$element.find("[data-equalizer-watch=\"".concat(eqId, "\"]"));
_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"]._init();
this.$watched = $watched.length ? $watched : this.$element.find('[data-equalizer-watch]');
this.$element.attr('data-resize', eqId || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["GetYoDigits"])(6, 'eq'));
this.$element.attr('data-mutate', eqId || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["GetYoDigits"])(6, 'eq'));
this.hasNested = this.$element.find('[data-equalizer]').length > 0;
this.isNested = this.$element.parentsUntil(document.body, '[data-equalizer]').length > 0;
this.isOn = false;
this._bindHandler = {
onResizeMeBound: this._onResizeMe.bind(this),
onPostEqualizedBound: this._onPostEqualized.bind(this)
};
var imgs = this.$element.find('img');
var tooSmall;
if (this.options.equalizeOn) {
tooSmall = this._checkMQ();
jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('changed.zf.mediaquery', this._checkMQ.bind(this));
} else {
this._events();
}
if (typeof tooSmall !== 'undefined' && tooSmall === false || typeof tooSmall === 'undefined') {
if (imgs.length) {
Object(_foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_2__["onImagesLoaded"])(imgs, this._reflow.bind(this));
} else {
this._reflow();
|