ab-mediaquery
Version:
AB-mediaQuery is the JavaScript side of media queries. It proposes you some very useful methods for your scripts
271 lines (222 loc) • 7.17 kB
JavaScript
// modules are defined as an array
// [ module function, map of requires ]
//
// map of requires is short require name -> numeric require
//
// anything defined in a previous bundle is accessed via the
// orig method which is the require for previous bundles
parcelRequire = (function (modules, cache, entry, globalName) {
// Save the require from previous bundle to this closure if any
var previousRequire = typeof parcelRequire === 'function' && parcelRequire;
var nodeRequire = typeof require === 'function' && require;
function newRequire(name, jumped) {
if (!cache[name]) {
if (!modules[name]) {
// if we cannot find the module within our internal map or
// cache jump to the current global require ie. the last bundle
// that was added to the page.
var currentRequire = typeof parcelRequire === 'function' && parcelRequire;
if (!jumped && currentRequire) {
return currentRequire(name, true);
}
// If there are other bundles on this page the require from the
// previous one is saved to 'previousRequire'. Repeat this as
// many times as there are bundles until the module is found or
// we exhaust the require chain.
if (previousRequire) {
return previousRequire(name, true);
}
// Try the node require function if it exists.
if (nodeRequire && typeof name === 'string') {
return nodeRequire(name);
}
var err = new Error('Cannot find module \'' + name + '\'');
err.code = 'MODULE_NOT_FOUND';
throw err;
}
localRequire.resolve = resolve;
localRequire.cache = {};
var module = cache[name] = new newRequire.Module(name);
modules[name][0].call(module.exports, localRequire, module, module.exports, this);
}
return cache[name].exports;
function localRequire(x){
return newRequire(localRequire.resolve(x));
}
function resolve(x){
return modules[name][1][x] || x;
}
}
function Module(moduleName) {
this.id = moduleName;
this.bundle = newRequire;
this.exports = {};
}
newRequire.isParcelRequire = true;
newRequire.Module = Module;
newRequire.modules = modules;
newRequire.cache = cache;
newRequire.parent = previousRequire;
newRequire.register = function (id, exports) {
modules[id] = [function (require, module) {
module.exports = exports;
}, {}];
};
var error;
for (var i = 0; i < entry.length; i++) {
try {
newRequire(entry[i]);
} catch (e) {
// Save first error but execute all entries
if (!error) {
error = e;
}
}
}
if (entry.length) {
// Expose entry point to Node, AMD or browser globals
// Based on https://github.com/ForbesLindesay/umd/blob/master/template.js
var mainExports = newRequire(entry[entry.length - 1]);
// CommonJS
if (typeof exports === "object" && typeof module !== "undefined") {
module.exports = mainExports;
// RequireJS
} else if (typeof define === "function" && define.amd) {
define(function () {
return mainExports;
});
// <script>
} else if (globalName) {
this[globalName] = mainExports;
}
}
// Override the current require with this new one
parcelRequire = newRequire;
if (error) {
// throw error from earlier, _after updating parcelRequire_
throw error;
}
return newRequire;
})({"cnAZ":[function(require,module,exports) {
// polyfill customEvent pour IE
;(function() {
if (typeof window.CustomEvent === "function") return false;
function CustomEvent ( event, params ) {
params = params || { bubbles: false, cancelable: false, detail: undefined };
var evt = document.createEvent('CustomEvent');
evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
return evt;
}
CustomEvent.prototype = window.Event.prototype;
window.CustomEvent = CustomEvent;
})();
// throttle events with requestAnimationFrame
(function() {
var throttle = function(type, name) {
var running = false;
var func = function() {
if (running) return;
running = true;
window.requestAnimationFrame(function() {
window.dispatchEvent(new CustomEvent(name));
running = false;
});
};
window.addEventListener(type, func);
};
/* init - you can init any event */
throttle("resize", "ab-resize");
throttle("scroll", "ab-scroll");
throttle("mousemove", "ab-mousemove");
throttle("touchmove", "ab-touchmove");
})();
window.AB = {
// deep extend function
extend: function() {
var extended = {},
deep = false,
i = 0,
length = arguments.length;
if (Object.prototype.toString.call(arguments[0]) === '[object Boolean]'){
deep = arguments[0];
i++;
}
var merge = function(obj) {
for (var prop in obj) {
if (Object.prototype.hasOwnProperty.call(obj, prop)) {
if (deep && Object.prototype.toString.call(obj[prop]) === '[object Object]') {
extended[prop] = window.AB.extend(true, extended[prop], obj[prop]);
} else {
extended[prop] = obj[prop];
}
}
}
};
for (; i < length; i++) {
merge(arguments[i]);
}
return extended;
},
// test if a string is a JSON
isJson: function(str) {
try {
JSON.parse(str);
} catch(e) {
return false;
}
return true;
},
runUpdaters: function(plugin) {
if (window.AB.options[plugin]) {
window.AB.plugins[plugin](window.AB.options[plugin]);
} else {
for(var options in AB.options){
if(window.AB.options.hasOwnProperty(options))
window.AB.plugins[options](window.AB.options[options]);
}
}
},
plugins: {},
options: {}
};
module.exports = window.AB;
},{}],"Focm":[function(require,module,exports) {
;
window.AB = require('another-brick');
var mediaQuery = function mediaQuery(opt) {
window.AB.mediaQuery = function () {
var _settings = opt || {
bp: {}
};
function _getCurrent() {
var sizes = [];
for (var key in _settings.bp) {
if (_settings.bp.hasOwnProperty(key) && window.matchMedia(_settings.bp[key]).matches) {
sizes.push(key);
}
}
return sizes;
}
function _updateSizes() {
var newSize = _getCurrent(); // check if it's updated
if (newSize.join('|') !== _currentStore.join('|')) {
_currentStore = newSize;
window.dispatchEvent(new CustomEvent('changed.ab-mediaquery'));
}
}
function is(size) {
return _settings.bp[size] ? window.matchMedia(_settings.bp[size]).matches : false;
} // get current breakpoints
var _currentStore = _getCurrent(); // change on resize
window.addEventListener('ab-resize', _updateSizes);
return {
get current() {
return _currentStore;
},
is: is
};
}();
};
window.AB.plugins.mediaQuery = mediaQuery;
module.exports = window.AB;
},{"another-brick":"cnAZ"}]},{},["Focm"], null)