mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
get headroom from bower
This commit is contained in:
parent
77e3111ad1
commit
27c3bdc042
58 changed files with 1224 additions and 3803 deletions
41
dashboard-ui/bower_components/headroom.js/.bower.json
vendored
Normal file
41
dashboard-ui/bower_components/headroom.js/.bower.json
vendored
Normal file
|
@ -0,0 +1,41 @@
|
|||
{
|
||||
"name": "headroom.js",
|
||||
"version": "0.7.0",
|
||||
"main": [
|
||||
"dist/headroom.js",
|
||||
"dist/jQuery.headroom.js",
|
||||
"dist/angular.headroom.js"
|
||||
],
|
||||
"ignore": [
|
||||
"**/.*",
|
||||
"node_modules",
|
||||
"components",
|
||||
"spec",
|
||||
"Gruntfile.js",
|
||||
"src",
|
||||
"bower_components",
|
||||
"test",
|
||||
"tests"
|
||||
],
|
||||
"homepage": "http://wicky.nillia.ms/headroom.js/",
|
||||
"authors": [
|
||||
"WickyNilliams"
|
||||
],
|
||||
"description": "Hide your header until you need it",
|
||||
"keywords": [
|
||||
"header",
|
||||
"js",
|
||||
"scroll"
|
||||
],
|
||||
"license": "MIT",
|
||||
"_release": "0.7.0",
|
||||
"_resolution": {
|
||||
"type": "version",
|
||||
"tag": "v0.7.0",
|
||||
"commit": "d08c6be31172d0ba821e7bbe6b20892377d8c363"
|
||||
},
|
||||
"_source": "git://github.com/WickyNilliams/headroom.js.git",
|
||||
"_target": "~0.7.0",
|
||||
"_originalSource": "headroom.js",
|
||||
"_direct": true
|
||||
}
|
21
dashboard-ui/bower_components/headroom.js/LICENSE
vendored
Normal file
21
dashboard-ui/bower_components/headroom.js/LICENSE
vendored
Normal file
|
@ -0,0 +1,21 @@
|
|||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2013 Nick Williams
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
27
dashboard-ui/bower_components/headroom.js/bower.json
vendored
Normal file
27
dashboard-ui/bower_components/headroom.js/bower.json
vendored
Normal file
|
@ -0,0 +1,27 @@
|
|||
{
|
||||
"name": "headroom.js",
|
||||
"version": "0.7.0",
|
||||
"main": ["dist/headroom.js", "dist/jQuery.headroom.js", "dist/angular.headroom.js"],
|
||||
"ignore": [
|
||||
"**/.*",
|
||||
"node_modules",
|
||||
"components",
|
||||
"spec",
|
||||
"Gruntfile.js",
|
||||
"src",
|
||||
"bower_components",
|
||||
"test",
|
||||
"tests"
|
||||
],
|
||||
"homepage": "http://wicky.nillia.ms/headroom.js/",
|
||||
"authors": [
|
||||
"WickyNilliams"
|
||||
],
|
||||
"description": "Hide your header until you need it",
|
||||
"keywords": [
|
||||
"header",
|
||||
"js",
|
||||
"scroll"
|
||||
],
|
||||
"license": "MIT"
|
||||
}
|
43
dashboard-ui/bower_components/headroom.js/dist/angular.headroom.js
vendored
Normal file
43
dashboard-ui/bower_components/headroom.js/dist/angular.headroom.js
vendored
Normal file
|
@ -0,0 +1,43 @@
|
|||
/*!
|
||||
* headroom.js v0.7.0 - Give your page some headroom. Hide your header until you need it
|
||||
* Copyright (c) 2014 Nick Williams - http://wicky.nillia.ms/headroom.js
|
||||
* License: MIT
|
||||
*/
|
||||
|
||||
(function(angular) {
|
||||
|
||||
if(!angular) {
|
||||
return;
|
||||
}
|
||||
|
||||
///////////////
|
||||
// Directive //
|
||||
///////////////
|
||||
|
||||
angular.module('headroom', []).directive('headroom', function() {
|
||||
return {
|
||||
restrict: 'EA',
|
||||
scope: {
|
||||
tolerance: '=',
|
||||
offset: '=',
|
||||
classes: '=',
|
||||
scroller: '@'
|
||||
},
|
||||
link: function(scope, element) {
|
||||
var options = {};
|
||||
angular.forEach(Headroom.options, function(value, key) {
|
||||
options[key] = scope[key] || Headroom.options[key];
|
||||
});
|
||||
if (options.scroller) {
|
||||
options.scroller = angular.element(options.scroller)[0];
|
||||
}
|
||||
var headroom = new Headroom(element[0], options);
|
||||
headroom.init();
|
||||
scope.$on('destroy', function() {
|
||||
headroom.destroy();
|
||||
});
|
||||
}
|
||||
};
|
||||
});
|
||||
|
||||
}(window.angular));
|
7
dashboard-ui/bower_components/headroom.js/dist/angular.headroom.min.js
vendored
Normal file
7
dashboard-ui/bower_components/headroom.js/dist/angular.headroom.min.js
vendored
Normal file
|
@ -0,0 +1,7 @@
|
|||
/*!
|
||||
* headroom.js v0.7.0 - Give your page some headroom. Hide your header until you need it
|
||||
* Copyright (c) 2014 Nick Williams - http://wicky.nillia.ms/headroom.js
|
||||
* License: MIT
|
||||
*/
|
||||
|
||||
!function(a){a&&a.module("headroom",[]).directive("headroom",function(){return{restrict:"EA",scope:{tolerance:"=",offset:"=",classes:"=",scroller:"@"},link:function(b,c){var d={};a.forEach(Headroom.options,function(a,c){d[c]=b[c]||Headroom.options[c]}),d.scroller&&(d.scroller=a.element(d.scroller)[0]);var e=new Headroom(c[0],d);e.init(),b.$on("destroy",function(){e.destroy()})}}})}(window.angular);
|
390
dashboard-ui/bower_components/headroom.js/dist/headroom.js
vendored
Normal file
390
dashboard-ui/bower_components/headroom.js/dist/headroom.js
vendored
Normal file
|
@ -0,0 +1,390 @@
|
|||
/*!
|
||||
* headroom.js v0.7.0 - Give your page some headroom. Hide your header until you need it
|
||||
* Copyright (c) 2014 Nick Williams - http://wicky.nillia.ms/headroom.js
|
||||
* License: MIT
|
||||
*/
|
||||
|
||||
(function(window, document) {
|
||||
|
||||
'use strict';
|
||||
|
||||
/* exported features */
|
||||
|
||||
var features = {
|
||||
bind : !!(function(){}.bind),
|
||||
classList : 'classList' in document.documentElement,
|
||||
rAF : !!(window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame)
|
||||
};
|
||||
window.requestAnimationFrame = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame;
|
||||
|
||||
/**
|
||||
* Handles debouncing of events via requestAnimationFrame
|
||||
* @see http://www.html5rocks.com/en/tutorials/speed/animations/
|
||||
* @param {Function} callback The callback to handle whichever event
|
||||
*/
|
||||
function Debouncer (callback) {
|
||||
this.callback = callback;
|
||||
this.ticking = false;
|
||||
}
|
||||
Debouncer.prototype = {
|
||||
constructor : Debouncer,
|
||||
|
||||
/**
|
||||
* dispatches the event to the supplied callback
|
||||
* @private
|
||||
*/
|
||||
update : function() {
|
||||
this.callback && this.callback();
|
||||
this.ticking = false;
|
||||
},
|
||||
|
||||
/**
|
||||
* ensures events don't get stacked
|
||||
* @private
|
||||
*/
|
||||
requestTick : function() {
|
||||
if(!this.ticking) {
|
||||
requestAnimationFrame(this.rafCallback || (this.rafCallback = this.update.bind(this)));
|
||||
this.ticking = true;
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Attach this as the event listeners
|
||||
*/
|
||||
handleEvent : function() {
|
||||
this.requestTick();
|
||||
}
|
||||
};
|
||||
/**
|
||||
* Check if object is part of the DOM
|
||||
* @constructor
|
||||
* @param {Object} obj element to check
|
||||
*/
|
||||
function isDOMElement(obj) {
|
||||
return obj && typeof window !== 'undefined' && (obj === window || obj.nodeType);
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper function for extending objects
|
||||
*/
|
||||
function extend (object /*, objectN ... */) {
|
||||
if(arguments.length <= 0) {
|
||||
throw new Error('Missing arguments in extend function');
|
||||
}
|
||||
|
||||
var result = object || {},
|
||||
key,
|
||||
i;
|
||||
|
||||
for (i = 1; i < arguments.length; i++) {
|
||||
var replacement = arguments[i] || {};
|
||||
|
||||
for (key in replacement) {
|
||||
// Recurse into object except if the object is a DOM element
|
||||
if(typeof result[key] === 'object' && ! isDOMElement(result[key])) {
|
||||
result[key] = extend(result[key], replacement[key]);
|
||||
}
|
||||
else {
|
||||
result[key] = result[key] || replacement[key];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper function for normalizing tolerance option to object format
|
||||
*/
|
||||
function normalizeTolerance (t) {
|
||||
return t === Object(t) ? t : { down : t, up : t };
|
||||
}
|
||||
|
||||
/**
|
||||
* UI enhancement for fixed headers.
|
||||
* Hides header when scrolling down
|
||||
* Shows header when scrolling up
|
||||
* @constructor
|
||||
* @param {DOMElement} elem the header element
|
||||
* @param {Object} options options for the widget
|
||||
*/
|
||||
function Headroom (elem, options) {
|
||||
options = extend(options, Headroom.options);
|
||||
|
||||
this.lastKnownScrollY = 0;
|
||||
this.elem = elem;
|
||||
this.debouncer = new Debouncer(this.update.bind(this));
|
||||
this.tolerance = normalizeTolerance(options.tolerance);
|
||||
this.classes = options.classes;
|
||||
this.offset = options.offset;
|
||||
this.scroller = options.scroller;
|
||||
this.initialised = false;
|
||||
this.onPin = options.onPin;
|
||||
this.onUnpin = options.onUnpin;
|
||||
this.onTop = options.onTop;
|
||||
this.onNotTop = options.onNotTop;
|
||||
}
|
||||
Headroom.prototype = {
|
||||
constructor : Headroom,
|
||||
|
||||
/**
|
||||
* Initialises the widget
|
||||
*/
|
||||
init : function() {
|
||||
if(!Headroom.cutsTheMustard) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.elem.classList.add(this.classes.initial);
|
||||
|
||||
// defer event registration to handle browser
|
||||
// potentially restoring previous scroll position
|
||||
setTimeout(this.attachEvent.bind(this), 100);
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
/**
|
||||
* Unattaches events and removes any classes that were added
|
||||
*/
|
||||
destroy : function() {
|
||||
var classes = this.classes;
|
||||
|
||||
this.initialised = false;
|
||||
this.elem.classList.remove(classes.unpinned, classes.pinned, classes.top, classes.initial);
|
||||
this.scroller.removeEventListener('scroll', this.debouncer, false);
|
||||
},
|
||||
|
||||
/**
|
||||
* Attaches the scroll event
|
||||
* @private
|
||||
*/
|
||||
attachEvent : function() {
|
||||
if(!this.initialised){
|
||||
this.lastKnownScrollY = this.getScrollY();
|
||||
this.initialised = true;
|
||||
this.scroller.addEventListener('scroll', this.debouncer, false);
|
||||
|
||||
this.debouncer.handleEvent();
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Unpins the header if it's currently pinned
|
||||
*/
|
||||
unpin : function() {
|
||||
var classList = this.elem.classList,
|
||||
classes = this.classes;
|
||||
|
||||
if(classList.contains(classes.pinned) || !classList.contains(classes.unpinned)) {
|
||||
classList.add(classes.unpinned);
|
||||
classList.remove(classes.pinned);
|
||||
this.onUnpin && this.onUnpin.call(this);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Pins the header if it's currently unpinned
|
||||
*/
|
||||
pin : function() {
|
||||
var classList = this.elem.classList,
|
||||
classes = this.classes;
|
||||
|
||||
if(classList.contains(classes.unpinned)) {
|
||||
classList.remove(classes.unpinned);
|
||||
classList.add(classes.pinned);
|
||||
this.onPin && this.onPin.call(this);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Handles the top states
|
||||
*/
|
||||
top : function() {
|
||||
var classList = this.elem.classList,
|
||||
classes = this.classes;
|
||||
|
||||
if(!classList.contains(classes.top)) {
|
||||
classList.add(classes.top);
|
||||
classList.remove(classes.notTop);
|
||||
this.onTop && this.onTop.call(this);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Handles the not top state
|
||||
*/
|
||||
notTop : function() {
|
||||
var classList = this.elem.classList,
|
||||
classes = this.classes;
|
||||
|
||||
if(!classList.contains(classes.notTop)) {
|
||||
classList.add(classes.notTop);
|
||||
classList.remove(classes.top);
|
||||
this.onNotTop && this.onNotTop.call(this);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Gets the Y scroll position
|
||||
* @see https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollY
|
||||
* @return {Number} pixels the page has scrolled along the Y-axis
|
||||
*/
|
||||
getScrollY : function() {
|
||||
return (this.scroller.pageYOffset !== undefined)
|
||||
? this.scroller.pageYOffset
|
||||
: (this.scroller.scrollTop !== undefined)
|
||||
? this.scroller.scrollTop
|
||||
: (document.documentElement || document.body.parentNode || document.body).scrollTop;
|
||||
},
|
||||
|
||||
/**
|
||||
* Gets the height of the viewport
|
||||
* @see http://andylangton.co.uk/blog/development/get-viewport-size-width-and-height-javascript
|
||||
* @return {int} the height of the viewport in pixels
|
||||
*/
|
||||
getViewportHeight : function () {
|
||||
return window.innerHeight
|
||||
|| document.documentElement.clientHeight
|
||||
|| document.body.clientHeight;
|
||||
},
|
||||
|
||||
/**
|
||||
* Gets the height of the document
|
||||
* @see http://james.padolsey.com/javascript/get-document-height-cross-browser/
|
||||
* @return {int} the height of the document in pixels
|
||||
*/
|
||||
getDocumentHeight : function () {
|
||||
var body = document.body,
|
||||
documentElement = document.documentElement;
|
||||
|
||||
return Math.max(
|
||||
body.scrollHeight, documentElement.scrollHeight,
|
||||
body.offsetHeight, documentElement.offsetHeight,
|
||||
body.clientHeight, documentElement.clientHeight
|
||||
);
|
||||
},
|
||||
|
||||
/**
|
||||
* Gets the height of the DOM element
|
||||
* @param {Object} elm the element to calculate the height of which
|
||||
* @return {int} the height of the element in pixels
|
||||
*/
|
||||
getElementHeight : function (elm) {
|
||||
return Math.max(
|
||||
elm.scrollHeight,
|
||||
elm.offsetHeight,
|
||||
elm.clientHeight
|
||||
);
|
||||
},
|
||||
|
||||
/**
|
||||
* Gets the height of the scroller element
|
||||
* @return {int} the height of the scroller element in pixels
|
||||
*/
|
||||
getScrollerHeight : function () {
|
||||
return (this.scroller === window || this.scroller === document.body)
|
||||
? this.getDocumentHeight()
|
||||
: this.getElementHeight(this.scroller);
|
||||
},
|
||||
|
||||
/**
|
||||
* determines if the scroll position is outside of document boundaries
|
||||
* @param {int} currentScrollY the current y scroll position
|
||||
* @return {bool} true if out of bounds, false otherwise
|
||||
*/
|
||||
isOutOfBounds : function (currentScrollY) {
|
||||
var pastTop = currentScrollY < 0,
|
||||
pastBottom = currentScrollY + this.getViewportHeight() > this.getScrollerHeight();
|
||||
|
||||
return pastTop || pastBottom;
|
||||
},
|
||||
|
||||
/**
|
||||
* determines if the tolerance has been exceeded
|
||||
* @param {int} currentScrollY the current scroll y position
|
||||
* @return {bool} true if tolerance exceeded, false otherwise
|
||||
*/
|
||||
toleranceExceeded : function (currentScrollY, direction) {
|
||||
return Math.abs(currentScrollY-this.lastKnownScrollY) >= this.tolerance[direction];
|
||||
},
|
||||
|
||||
/**
|
||||
* determine if it is appropriate to unpin
|
||||
* @param {int} currentScrollY the current y scroll position
|
||||
* @param {bool} toleranceExceeded has the tolerance been exceeded?
|
||||
* @return {bool} true if should unpin, false otherwise
|
||||
*/
|
||||
shouldUnpin : function (currentScrollY, toleranceExceeded) {
|
||||
var scrollingDown = currentScrollY > this.lastKnownScrollY,
|
||||
pastOffset = currentScrollY >= this.offset;
|
||||
|
||||
return scrollingDown && pastOffset && toleranceExceeded;
|
||||
},
|
||||
|
||||
/**
|
||||
* determine if it is appropriate to pin
|
||||
* @param {int} currentScrollY the current y scroll position
|
||||
* @param {bool} toleranceExceeded has the tolerance been exceeded?
|
||||
* @return {bool} true if should pin, false otherwise
|
||||
*/
|
||||
shouldPin : function (currentScrollY, toleranceExceeded) {
|
||||
var scrollingUp = currentScrollY < this.lastKnownScrollY,
|
||||
pastOffset = currentScrollY <= this.offset;
|
||||
|
||||
return (scrollingUp && toleranceExceeded) || pastOffset;
|
||||
},
|
||||
|
||||
/**
|
||||
* Handles updating the state of the widget
|
||||
*/
|
||||
update : function() {
|
||||
var currentScrollY = this.getScrollY(),
|
||||
scrollDirection = currentScrollY > this.lastKnownScrollY ? 'down' : 'up',
|
||||
toleranceExceeded = this.toleranceExceeded(currentScrollY, scrollDirection);
|
||||
|
||||
if(this.isOutOfBounds(currentScrollY)) { // Ignore bouncy scrolling in OSX
|
||||
return;
|
||||
}
|
||||
|
||||
if (currentScrollY <= this.offset ) {
|
||||
this.top();
|
||||
} else {
|
||||
this.notTop();
|
||||
}
|
||||
|
||||
if(this.shouldUnpin(currentScrollY, toleranceExceeded)) {
|
||||
this.unpin();
|
||||
}
|
||||
else if(this.shouldPin(currentScrollY, toleranceExceeded)) {
|
||||
this.pin();
|
||||
}
|
||||
|
||||
this.lastKnownScrollY = currentScrollY;
|
||||
}
|
||||
};
|
||||
/**
|
||||
* Default options
|
||||
* @type {Object}
|
||||
*/
|
||||
Headroom.options = {
|
||||
tolerance : {
|
||||
up : 0,
|
||||
down : 0
|
||||
},
|
||||
offset : 0,
|
||||
scroller: window,
|
||||
classes : {
|
||||
pinned : 'headroom--pinned',
|
||||
unpinned : 'headroom--unpinned',
|
||||
top : 'headroom--top',
|
||||
notTop : 'headroom--not-top',
|
||||
initial : 'headroom'
|
||||
}
|
||||
};
|
||||
Headroom.cutsTheMustard = typeof features !== 'undefined' && features.rAF && features.bind && features.classList;
|
||||
|
||||
window.Headroom = Headroom;
|
||||
|
||||
}(window, document));
|
7
dashboard-ui/bower_components/headroom.js/dist/headroom.min.js
vendored
Normal file
7
dashboard-ui/bower_components/headroom.js/dist/headroom.min.js
vendored
Normal file
|
@ -0,0 +1,7 @@
|
|||
/*!
|
||||
* headroom.js v0.7.0 - Give your page some headroom. Hide your header until you need it
|
||||
* Copyright (c) 2014 Nick Williams - http://wicky.nillia.ms/headroom.js
|
||||
* License: MIT
|
||||
*/
|
||||
|
||||
!function(a,b){"use strict";function c(a){this.callback=a,this.ticking=!1}function d(b){return b&&"undefined"!=typeof a&&(b===a||b.nodeType)}function e(a){if(arguments.length<=0)throw new Error("Missing arguments in extend function");var b,c,f=a||{};for(c=1;c<arguments.length;c++){var g=arguments[c]||{};for(b in g)f[b]="object"!=typeof f[b]||d(f[b])?f[b]||g[b]:e(f[b],g[b])}return f}function f(a){return a===Object(a)?a:{down:a,up:a}}function g(a,b){b=e(b,g.options),this.lastKnownScrollY=0,this.elem=a,this.debouncer=new c(this.update.bind(this)),this.tolerance=f(b.tolerance),this.classes=b.classes,this.offset=b.offset,this.scroller=b.scroller,this.initialised=!1,this.onPin=b.onPin,this.onUnpin=b.onUnpin,this.onTop=b.onTop,this.onNotTop=b.onNotTop}var h={bind:!!function(){}.bind,classList:"classList"in b.documentElement,rAF:!!(a.requestAnimationFrame||a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame)};a.requestAnimationFrame=a.requestAnimationFrame||a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame,c.prototype={constructor:c,update:function(){this.callback&&this.callback(),this.ticking=!1},requestTick:function(){this.ticking||(requestAnimationFrame(this.rafCallback||(this.rafCallback=this.update.bind(this))),this.ticking=!0)},handleEvent:function(){this.requestTick()}},g.prototype={constructor:g,init:function(){return g.cutsTheMustard?(this.elem.classList.add(this.classes.initial),setTimeout(this.attachEvent.bind(this),100),this):void 0},destroy:function(){var a=this.classes;this.initialised=!1,this.elem.classList.remove(a.unpinned,a.pinned,a.top,a.initial),this.scroller.removeEventListener("scroll",this.debouncer,!1)},attachEvent:function(){this.initialised||(this.lastKnownScrollY=this.getScrollY(),this.initialised=!0,this.scroller.addEventListener("scroll",this.debouncer,!1),this.debouncer.handleEvent())},unpin:function(){var a=this.elem.classList,b=this.classes;(a.contains(b.pinned)||!a.contains(b.unpinned))&&(a.add(b.unpinned),a.remove(b.pinned),this.onUnpin&&this.onUnpin.call(this))},pin:function(){var a=this.elem.classList,b=this.classes;a.contains(b.unpinned)&&(a.remove(b.unpinned),a.add(b.pinned),this.onPin&&this.onPin.call(this))},top:function(){var a=this.elem.classList,b=this.classes;a.contains(b.top)||(a.add(b.top),a.remove(b.notTop),this.onTop&&this.onTop.call(this))},notTop:function(){var a=this.elem.classList,b=this.classes;a.contains(b.notTop)||(a.add(b.notTop),a.remove(b.top),this.onNotTop&&this.onNotTop.call(this))},getScrollY:function(){return void 0!==this.scroller.pageYOffset?this.scroller.pageYOffset:void 0!==this.scroller.scrollTop?this.scroller.scrollTop:(b.documentElement||b.body.parentNode||b.body).scrollTop},getViewportHeight:function(){return a.innerHeight||b.documentElement.clientHeight||b.body.clientHeight},getDocumentHeight:function(){var a=b.body,c=b.documentElement;return Math.max(a.scrollHeight,c.scrollHeight,a.offsetHeight,c.offsetHeight,a.clientHeight,c.clientHeight)},getElementHeight:function(a){return Math.max(a.scrollHeight,a.offsetHeight,a.clientHeight)},getScrollerHeight:function(){return this.scroller===a||this.scroller===b.body?this.getDocumentHeight():this.getElementHeight(this.scroller)},isOutOfBounds:function(a){var b=0>a,c=a+this.getViewportHeight()>this.getScrollerHeight();return b||c},toleranceExceeded:function(a,b){return Math.abs(a-this.lastKnownScrollY)>=this.tolerance[b]},shouldUnpin:function(a,b){var c=a>this.lastKnownScrollY,d=a>=this.offset;return c&&d&&b},shouldPin:function(a,b){var c=a<this.lastKnownScrollY,d=a<=this.offset;return c&&b||d},update:function(){var a=this.getScrollY(),b=a>this.lastKnownScrollY?"down":"up",c=this.toleranceExceeded(a,b);this.isOutOfBounds(a)||(a<=this.offset?this.top():this.notTop(),this.shouldUnpin(a,c)?this.unpin():this.shouldPin(a,c)&&this.pin(),this.lastKnownScrollY=a)}},g.options={tolerance:{up:0,down:0},offset:0,scroller:a,classes:{pinned:"headroom--pinned",unpinned:"headroom--unpinned",top:"headroom--top",notTop:"headroom--not-top",initial:"headroom"}},g.cutsTheMustard="undefined"!=typeof h&&h.rAF&&h.bind&&h.classList,a.Headroom=g}(window,document);
|
45
dashboard-ui/bower_components/headroom.js/dist/jQuery.headroom.js
vendored
Normal file
45
dashboard-ui/bower_components/headroom.js/dist/jQuery.headroom.js
vendored
Normal file
|
@ -0,0 +1,45 @@
|
|||
/*!
|
||||
* headroom.js v0.7.0 - Give your page some headroom. Hide your header until you need it
|
||||
* Copyright (c) 2014 Nick Williams - http://wicky.nillia.ms/headroom.js
|
||||
* License: MIT
|
||||
*/
|
||||
|
||||
(function($) {
|
||||
|
||||
if(!$) {
|
||||
return;
|
||||
}
|
||||
|
||||
////////////
|
||||
// Plugin //
|
||||
////////////
|
||||
|
||||
$.fn.headroom = function(option) {
|
||||
return this.each(function() {
|
||||
var $this = $(this),
|
||||
data = $this.data('headroom'),
|
||||
options = typeof option === 'object' && option;
|
||||
|
||||
options = $.extend(true, {}, Headroom.options, options);
|
||||
|
||||
if (!data) {
|
||||
data = new Headroom(this, options);
|
||||
data.init();
|
||||
$this.data('headroom', data);
|
||||
}
|
||||
if (typeof option === 'string') {
|
||||
data[option]();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
//////////////
|
||||
// Data API //
|
||||
//////////////
|
||||
|
||||
$('[data-headroom]').each(function() {
|
||||
var $this = $(this);
|
||||
$this.headroom($this.data());
|
||||
});
|
||||
|
||||
}(window.Zepto || window.jQuery));
|
7
dashboard-ui/bower_components/headroom.js/dist/jQuery.headroom.min.js
vendored
Normal file
7
dashboard-ui/bower_components/headroom.js/dist/jQuery.headroom.min.js
vendored
Normal file
|
@ -0,0 +1,7 @@
|
|||
/*!
|
||||
* headroom.js v0.7.0 - Give your page some headroom. Hide your header until you need it
|
||||
* Copyright (c) 2014 Nick Williams - http://wicky.nillia.ms/headroom.js
|
||||
* License: MIT
|
||||
*/
|
||||
|
||||
!function(a){a&&(a.fn.headroom=function(b){return this.each(function(){var c=a(this),d=c.data("headroom"),e="object"==typeof b&&b;e=a.extend(!0,{},Headroom.options,e),d||(d=new Headroom(this,e),d.init(),c.data("headroom",d)),"string"==typeof b&&d[b]()})},a("[data-headroom]").each(function(){var b=a(this);b.headroom(b.data())}))}(window.Zepto||window.jQuery);
|
40
dashboard-ui/bower_components/headroom.js/package.json
vendored
Normal file
40
dashboard-ui/bower_components/headroom.js/package.json
vendored
Normal file
|
@ -0,0 +1,40 @@
|
|||
{
|
||||
"name": "headroom.js",
|
||||
"version": "0.7.0",
|
||||
"description": "Give your page some headroom. Hide your header until you need it",
|
||||
"main": "dist/headroom.js",
|
||||
"scripts": {
|
||||
"test": "grunt test --verbose"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/WickyNilliams/headroom.js"
|
||||
},
|
||||
"keywords": [
|
||||
"header",
|
||||
"fixed",
|
||||
"scroll",
|
||||
"menu"
|
||||
],
|
||||
"author": "Nick Williams",
|
||||
"homepage": "http://wicky.nillia.ms/headroom.js",
|
||||
"license": "MIT",
|
||||
"bugs": {
|
||||
"url": "https://github.com/WickyNilliams/headroom.js/issues"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "grunt dist --verbose"
|
||||
},
|
||||
"devDependencies": {
|
||||
"grunt": "~0.4.1",
|
||||
"grunt-contrib-uglify": "~0.2.2",
|
||||
"grunt-rigger": "~0.5.0",
|
||||
"grunt-contrib-jshint": "~0.6.2",
|
||||
"grunt-contrib-watch": "~0.5.1",
|
||||
"karma": "~0.10.8",
|
||||
"grunt-karma": "~0.6.2",
|
||||
"karma-firefox-launcher": "~0.1.2",
|
||||
"karma-safari-launcher": "~0.1.1",
|
||||
"karma-opera-launcher": "~0.1.0"
|
||||
}
|
||||
}
|
22
dashboard-ui/bower_components/isMobile/.bower.json
vendored
Normal file
22
dashboard-ui/bower_components/isMobile/.bower.json
vendored
Normal file
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
"name": "isMobile",
|
||||
"version": "0.3.9",
|
||||
"main": "isMobile.js",
|
||||
"ignore": [
|
||||
"**/.*",
|
||||
"CONTRIBUTORS.md",
|
||||
"Gruntfile.js",
|
||||
"tests"
|
||||
],
|
||||
"homepage": "https://github.com/kaimallea/isMobile",
|
||||
"_release": "0.3.9",
|
||||
"_resolution": {
|
||||
"type": "version",
|
||||
"tag": "0.3.9",
|
||||
"commit": "84c93a48e09506267241f9f33fd3ae97743f52db"
|
||||
},
|
||||
"_source": "git://github.com/kaimallea/isMobile.git",
|
||||
"_target": "~0.3.9",
|
||||
"_originalSource": "isMobile",
|
||||
"_direct": true
|
||||
}
|
11
dashboard-ui/bower_components/isMobile/bower.json
vendored
Normal file
11
dashboard-ui/bower_components/isMobile/bower.json
vendored
Normal file
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"name": "isMobile",
|
||||
"version": "0.3.9",
|
||||
"main": "isMobile.js",
|
||||
"ignore": [
|
||||
"**/.*",
|
||||
"CONTRIBUTORS.md",
|
||||
"Gruntfile.js",
|
||||
"tests"
|
||||
]
|
||||
}
|
126
dashboard-ui/bower_components/isMobile/isMobile.js
vendored
Normal file
126
dashboard-ui/bower_components/isMobile/isMobile.js
vendored
Normal file
|
@ -0,0 +1,126 @@
|
|||
/**
|
||||
* isMobile.js v0.3.9
|
||||
*
|
||||
* A simple library to detect Apple phones and tablets,
|
||||
* Android phones and tablets, other mobile devices (like blackberry, mini-opera and windows phone),
|
||||
* and any kind of seven inch device, via user agent sniffing.
|
||||
*
|
||||
* @author: Kai Mallea (kmallea@gmail.com)
|
||||
*
|
||||
* @license: http://creativecommons.org/publicdomain/zero/1.0/
|
||||
*/
|
||||
(function (global) {
|
||||
|
||||
var apple_phone = /iPhone/i,
|
||||
apple_ipod = /iPod/i,
|
||||
apple_tablet = /iPad/i,
|
||||
android_phone = /(?=.*\bAndroid\b)(?=.*\bMobile\b)/i, // Match 'Android' AND 'Mobile'
|
||||
android_tablet = /Android/i,
|
||||
amazon_phone = /(?=.*\bAndroid\b)(?=.*\bSD4930UR\b)/i,
|
||||
amazon_tablet = /(?=.*\bAndroid\b)(?=.*\b(?:KFOT|KFTT|KFJWI|KFJWA|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|KFARWI|KFASWI|KFSAWI|KFSAWA)\b)/i,
|
||||
windows_phone = /IEMobile/i,
|
||||
windows_tablet = /(?=.*\bWindows\b)(?=.*\bARM\b)/i, // Match 'Windows' AND 'ARM'
|
||||
other_blackberry = /BlackBerry/i,
|
||||
other_blackberry_10 = /BB10/i,
|
||||
other_opera = /Opera Mini/i,
|
||||
other_chrome = /(CriOS|Chrome)(?=.*\bMobile\b)/i,
|
||||
other_firefox = /(?=.*\bFirefox\b)(?=.*\bMobile\b)/i, // Match 'Firefox' AND 'Mobile'
|
||||
seven_inch = new RegExp(
|
||||
'(?:' + // Non-capturing group
|
||||
|
||||
'Nexus 7' + // Nexus 7
|
||||
|
||||
'|' + // OR
|
||||
|
||||
'BNTV250' + // B&N Nook Tablet 7 inch
|
||||
|
||||
'|' + // OR
|
||||
|
||||
'Kindle Fire' + // Kindle Fire
|
||||
|
||||
'|' + // OR
|
||||
|
||||
'Silk' + // Kindle Fire, Silk Accelerated
|
||||
|
||||
'|' + // OR
|
||||
|
||||
'GT-P1000' + // Galaxy Tab 7 inch
|
||||
|
||||
')', // End non-capturing group
|
||||
|
||||
'i'); // Case-insensitive matching
|
||||
|
||||
var match = function(regex, userAgent) {
|
||||
return regex.test(userAgent);
|
||||
};
|
||||
|
||||
var IsMobileClass = function(userAgent) {
|
||||
var ua = userAgent || navigator.userAgent;
|
||||
// Facebook mobile app's integrated browser adds a bunch of strings that
|
||||
// match everything. Strip it out if it exists.
|
||||
var tmp = ua.split('[FBAN');
|
||||
if (typeof tmp[1] !== 'undefined') {
|
||||
ua = tmp[0];
|
||||
}
|
||||
|
||||
this.apple = {
|
||||
phone: match(apple_phone, ua),
|
||||
ipod: match(apple_ipod, ua),
|
||||
tablet: !match(apple_phone, ua) && match(apple_tablet, ua),
|
||||
device: match(apple_phone, ua) || match(apple_ipod, ua) || match(apple_tablet, ua)
|
||||
};
|
||||
this.amazon = {
|
||||
phone: match(amazon_phone, ua),
|
||||
tablet: !match(amazon_phone, ua) && match(amazon_tablet, ua),
|
||||
device: match(amazon_phone, ua) || match(amazon_tablet, ua)
|
||||
};
|
||||
this.android = {
|
||||
phone: match(amazon_phone, ua) || match(android_phone, ua),
|
||||
tablet: !match(amazon_phone, ua) && !match(android_phone, ua) && (match(amazon_tablet, ua) || match(android_tablet, ua)),
|
||||
device: match(amazon_phone, ua) || match(amazon_tablet, ua) || match(android_phone, ua) || match(android_tablet, ua)
|
||||
};
|
||||
this.windows = {
|
||||
phone: match(windows_phone, ua),
|
||||
tablet: match(windows_tablet, ua),
|
||||
device: match(windows_phone, ua) || match(windows_tablet, ua)
|
||||
};
|
||||
this.other = {
|
||||
blackberry: match(other_blackberry, ua),
|
||||
blackberry10: match(other_blackberry_10, ua),
|
||||
opera: match(other_opera, ua),
|
||||
firefox: match(other_firefox, ua),
|
||||
chrome: match(other_chrome, ua),
|
||||
device: match(other_blackberry, ua) || match(other_blackberry_10, ua) || match(other_opera, ua) || match(other_firefox, ua) || match(other_chrome, ua)
|
||||
};
|
||||
this.seven_inch = match(seven_inch, ua);
|
||||
this.any = this.apple.device || this.android.device || this.windows.device || this.other.device || this.seven_inch;
|
||||
// excludes 'other' devices and ipods, targeting touchscreen phones
|
||||
this.phone = this.apple.phone || this.android.phone || this.windows.phone;
|
||||
// excludes 7 inch devices, classifying as phone or tablet is left to the user
|
||||
this.tablet = this.apple.tablet || this.android.tablet || this.windows.tablet;
|
||||
|
||||
if (typeof window === 'undefined') {
|
||||
return this;
|
||||
}
|
||||
};
|
||||
|
||||
var instantiate = function() {
|
||||
var IM = new IsMobileClass();
|
||||
IM.Class = IsMobileClass;
|
||||
return IM;
|
||||
};
|
||||
|
||||
if (typeof module != 'undefined' && module.exports && typeof window === 'undefined') {
|
||||
//node
|
||||
module.exports = IsMobileClass;
|
||||
} else if (typeof module != 'undefined' && module.exports && typeof window !== 'undefined') {
|
||||
//browserify
|
||||
module.exports = instantiate();
|
||||
} else if (typeof define === 'function' && define.amd) {
|
||||
//AMD
|
||||
define('isMobile', [], global.isMobile = instantiate());
|
||||
} else {
|
||||
global.isMobile = instantiate();
|
||||
}
|
||||
|
||||
})(this);
|
1
dashboard-ui/bower_components/isMobile/isMobile.min.js
vendored
Normal file
1
dashboard-ui/bower_components/isMobile/isMobile.min.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
!function(a){var b=/iPhone/i,c=/iPod/i,d=/iPad/i,e=/(?=.*\bAndroid\b)(?=.*\bMobile\b)/i,f=/Android/i,g=/(?=.*\bAndroid\b)(?=.*\bSD4930UR\b)/i,h=/(?=.*\bAndroid\b)(?=.*\b(?:KFOT|KFTT|KFJWI|KFJWA|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|KFARWI|KFASWI|KFSAWI|KFSAWA)\b)/i,i=/IEMobile/i,j=/(?=.*\bWindows\b)(?=.*\bARM\b)/i,k=/BlackBerry/i,l=/BB10/i,m=/Opera Mini/i,n=/(CriOS|Chrome)(?=.*\bMobile\b)/i,o=/(?=.*\bFirefox\b)(?=.*\bMobile\b)/i,p=new RegExp("(?:Nexus 7|BNTV250|Kindle Fire|Silk|GT-P1000)","i"),q=function(a,b){return a.test(b)},r=function(a){var r=a||navigator.userAgent,s=r.split("[FBAN");return"undefined"!=typeof s[1]&&(r=s[0]),this.apple={phone:q(b,r),ipod:q(c,r),tablet:!q(b,r)&&q(d,r),device:q(b,r)||q(c,r)||q(d,r)},this.amazon={phone:q(g,r),tablet:!q(g,r)&&q(h,r),device:q(g,r)||q(h,r)},this.android={phone:q(g,r)||q(e,r),tablet:!q(g,r)&&!q(e,r)&&(q(h,r)||q(f,r)),device:q(g,r)||q(h,r)||q(e,r)||q(f,r)},this.windows={phone:q(i,r),tablet:q(j,r),device:q(i,r)||q(j,r)},this.other={blackberry:q(k,r),blackberry10:q(l,r),opera:q(m,r),firefox:q(o,r),chrome:q(n,r),device:q(k,r)||q(l,r)||q(m,r)||q(o,r)||q(n,r)},this.seven_inch=q(p,r),this.any=this.apple.device||this.android.device||this.windows.device||this.other.device||this.seven_inch,this.phone=this.apple.phone||this.android.phone||this.windows.phone,this.tablet=this.apple.tablet||this.android.tablet||this.windows.tablet,"undefined"==typeof window?this:void 0},s=function(){var a=new r;return a.Class=r,a};"undefined"!=typeof module&&module.exports&&"undefined"==typeof window?module.exports=r:"undefined"!=typeof module&&module.exports&&"undefined"!=typeof window?module.exports=s():"function"==typeof define&&define.amd?define("isMobile",[],a.isMobile=s()):a.isMobile=s()}(this);
|
28
dashboard-ui/bower_components/isMobile/package.json
vendored
Normal file
28
dashboard-ui/bower_components/isMobile/package.json
vendored
Normal file
|
@ -0,0 +1,28 @@
|
|||
{
|
||||
"name": "ismobilejs",
|
||||
"version": "0.3.9",
|
||||
"description": "A simple JS library that detects mobile devices.",
|
||||
"keywords": [
|
||||
"ismobile",
|
||||
"device detection",
|
||||
"mobile devices",
|
||||
"useragent"
|
||||
],
|
||||
"homepage": "https://github.com/kaimallea/isMobile",
|
||||
"license": "CC0-1.0",
|
||||
"author": {
|
||||
"name": "Kai Mallea",
|
||||
"email": "kmallea@gmail.com"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/kaimallea/isMobile.git"
|
||||
},
|
||||
"main": "./isMobile",
|
||||
"devDependencies": {
|
||||
"grunt": "0.4.x",
|
||||
"grunt-contrib-jshint": "0.11.x",
|
||||
"grunt-contrib-uglify": "0.9.x",
|
||||
"grunt-contrib-jasmine": "0.8.x"
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue