mirror of https://github.com/status-im/codimd.git
Add missing vendor code hard to deal with
This commit is contained in:
parent
fc213127a3
commit
93f3664c88
|
@ -0,0 +1,2 @@
|
||||||
|
/*! Idle.Js, copyright 2015-01-01, Shawn Mclean*/
|
||||||
|
(function(){var a;document.addEventListener||(document.addEventListener=document.attachEvent?function(a,b,c){return document.attachEvent("on"+a,b,c)}:function(){return{}}),document.removeEventListener||(document.removeEventListener=document.detachEvent?function(a,b){return document.detachEvent("on"+a,b)}:function(){return{}}),a={},a=function(){function a(a){var b,c;a&&(this.awayTimeout=parseInt(a.awayTimeout,10),this.onAway=a.onAway,this.onAwayBack=a.onAwayBack,this.onVisible=a.onVisible,this.onHidden=a.onHidden),c=this,b=function(){return c.onActive()},window.onclick=b,window.onmousemove=b,window.onmouseenter=b,window.onkeydown=b,window.onscroll=b,window.onmousewheel=b}return a.isAway=!1,a.awayTimeout=3e3,a.awayTimestamp=0,a.awayTimer=null,a.onAway=null,a.onAwayBack=null,a.onVisible=null,a.onHidden=null,a.prototype.onActive=function(){return this.awayTimestamp=(new Date).getTime()+this.awayTimeout,this.isAway&&(this.onAwayBack&&this.onAwayBack(),this.start()),this.isAway=!1,!0},a.prototype.start=function(){var a;return this.listener||(this.listener=function(){return a.handleVisibilityChange()},document.addEventListener("visibilitychange",this.listener,!1),document.addEventListener("webkitvisibilitychange",this.listener,!1),document.addEventListener("msvisibilitychange",this.listener,!1)),this.awayTimestamp=(new Date).getTime()+this.awayTimeout,null!==this.awayTimer&&clearTimeout(this.awayTimer),a=this,this.awayTimer=setTimeout(function(){return a.checkAway()},this.awayTimeout+100),this},a.prototype.stop=function(){return null!==this.awayTimer&&clearTimeout(this.awayTimer),null!==this.listener&&(document.removeEventListener("visibilitychange",this.listener),document.removeEventListener("webkitvisibilitychange",this.listener),document.removeEventListener("msvisibilitychange",this.listener),this.listener=null),this},a.prototype.setAwayTimeout=function(a){return this.awayTimeout=parseInt(a,10),this},a.prototype.checkAway=function(){var a,b;return b=(new Date).getTime(),b<this.awayTimestamp?(this.isAway=!1,a=this,void(this.awayTimer=setTimeout(function(){return a.checkAway()},this.awayTimestamp-b+100))):(null!==this.awayTimer&&clearTimeout(this.awayTimer),this.isAway=!0,this.onAway?this.onAway():void 0)},a.prototype.handleVisibilityChange=function(){if(document.hidden||document.msHidden||document.webkitHidden){if(this.onHidden)return this.onHidden()}else if(this.onVisible)return this.onVisible()},a}(),"function"==typeof define&&define.amd?define([],a):"object"==typeof exports?module.exports=a:window.Idle=a}).call(this);
|
|
@ -0,0 +1,267 @@
|
||||||
|
/*
|
||||||
|
* jQuery ScrollSpy Plugin
|
||||||
|
* Author: @sxalexander, softwarespot
|
||||||
|
* Licensed under the MIT license
|
||||||
|
*/
|
||||||
|
(function jQueryScrollspy(window, $) {
|
||||||
|
// Plugin Logic
|
||||||
|
|
||||||
|
$.fn.extend({
|
||||||
|
scrollspy: function scrollspy(options, action) {
|
||||||
|
// If the options parameter is a string, then assume it's an 'action', therefore swap the parameters around
|
||||||
|
if (_isString(options)) {
|
||||||
|
var tempOptions = action;
|
||||||
|
|
||||||
|
// Set the action as the option parameter
|
||||||
|
action = options;
|
||||||
|
|
||||||
|
// Set to be the reference action pointed to
|
||||||
|
options = tempOptions;
|
||||||
|
}
|
||||||
|
|
||||||
|
// override the default options with those passed to the plugin
|
||||||
|
options = $.extend({}, _defaults, options);
|
||||||
|
|
||||||
|
// sanitize the following option with the default value if the predicate fails
|
||||||
|
_sanitizeOption(options, _defaults, 'container', _isObject);
|
||||||
|
|
||||||
|
// cache the jQuery object
|
||||||
|
var $container = $(options.container);
|
||||||
|
|
||||||
|
// check if it's a valid jQuery selector
|
||||||
|
if ($container.length === 0) {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
// sanitize the following option with the default value if the predicate fails
|
||||||
|
_sanitizeOption(options, _defaults, 'namespace', _isString);
|
||||||
|
|
||||||
|
// check if the action is set to DESTROY/destroy
|
||||||
|
if (_isString(action) && action.toUpperCase() === 'DESTROY') {
|
||||||
|
$container.off('scroll.' + options.namespace);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
// sanitize the following options with the default values if the predicates fails
|
||||||
|
_sanitizeOption(options, _defaults, 'buffer', $.isNumeric);
|
||||||
|
_sanitizeOption(options, _defaults, 'max', $.isNumeric);
|
||||||
|
_sanitizeOption(options, _defaults, 'min', $.isNumeric);
|
||||||
|
|
||||||
|
// callbacks
|
||||||
|
_sanitizeOption(options, _defaults, 'onEnter', $.isFunction);
|
||||||
|
_sanitizeOption(options, _defaults, 'onLeave', $.isFunction);
|
||||||
|
_sanitizeOption(options, _defaults, 'onLeaveTop', $.isFunction);
|
||||||
|
_sanitizeOption(options, _defaults, 'onLeaveBottom', $.isFunction);
|
||||||
|
_sanitizeOption(options, _defaults, 'onTick', $.isFunction);
|
||||||
|
|
||||||
|
if ($.isFunction(options.max)) {
|
||||||
|
options.max = options.max();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($.isFunction(options.min)) {
|
||||||
|
options.min = options.min();
|
||||||
|
}
|
||||||
|
|
||||||
|
// check if the mode is set to VERTICAL/vertical
|
||||||
|
var isVertical = window.String(options.mode).toUpperCase() === 'VERTICAL';
|
||||||
|
|
||||||
|
return this.each(function each() {
|
||||||
|
// cache this
|
||||||
|
var _this = this;
|
||||||
|
|
||||||
|
// cache the jQuery object
|
||||||
|
var $element = $(_this);
|
||||||
|
|
||||||
|
// count the number of times a container is entered
|
||||||
|
var enters = 0;
|
||||||
|
|
||||||
|
// determine if the scroll is with inside the container
|
||||||
|
var inside = false;
|
||||||
|
|
||||||
|
// count the number of times a container is left
|
||||||
|
var leaves = 0;
|
||||||
|
|
||||||
|
// create a scroll listener for the container
|
||||||
|
$container.on('scroll.' + options.namespace, function onScroll() {
|
||||||
|
// cache the jQuery object
|
||||||
|
var $this = $(this);
|
||||||
|
|
||||||
|
// create a position object literal
|
||||||
|
var position = {
|
||||||
|
top: $this.scrollTop(),
|
||||||
|
left: $this.scrollLeft(),
|
||||||
|
};
|
||||||
|
|
||||||
|
var containerHeight = $container.height();
|
||||||
|
|
||||||
|
var max = options.max;
|
||||||
|
|
||||||
|
var min = options.min;
|
||||||
|
|
||||||
|
var xAndY = isVertical ? position.top + options.buffer : position.left + options.buffer;
|
||||||
|
|
||||||
|
if (max === 0) {
|
||||||
|
// get the maximum value based on either the height or the outer width
|
||||||
|
max = isVertical ? containerHeight : $container.outerWidth() + $element.outerWidth();
|
||||||
|
}
|
||||||
|
|
||||||
|
// if we have reached the minimum bound, though are below the max
|
||||||
|
if (xAndY >= min && xAndY <= max) {
|
||||||
|
// trigger the 'scrollEnter' event
|
||||||
|
if (!inside) {
|
||||||
|
inside = true;
|
||||||
|
enters++;
|
||||||
|
|
||||||
|
// trigger the 'scrollEnter' event
|
||||||
|
$element.trigger('scrollEnter', {
|
||||||
|
position: position,
|
||||||
|
});
|
||||||
|
|
||||||
|
// call the 'onEnter' function
|
||||||
|
if (options.onEnter !== null) {
|
||||||
|
options.onEnter(_this, position);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// trigger the 'scrollTick' event
|
||||||
|
$element.trigger('scrollTick', {
|
||||||
|
position: position,
|
||||||
|
inside: inside,
|
||||||
|
enters: enters,
|
||||||
|
leaves: leaves,
|
||||||
|
});
|
||||||
|
|
||||||
|
// call the 'onTick' function
|
||||||
|
if (options.onTick !== null) {
|
||||||
|
options.onTick(_this, position, inside, enters, leaves);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (inside) {
|
||||||
|
inside = false;
|
||||||
|
leaves++;
|
||||||
|
|
||||||
|
// trigger the 'scrollLeave' event
|
||||||
|
$element.trigger('scrollLeave', {
|
||||||
|
position: position,
|
||||||
|
leaves: leaves,
|
||||||
|
});
|
||||||
|
|
||||||
|
// call the 'onLeave' function
|
||||||
|
if (options.onLeave !== null) {
|
||||||
|
options.onLeave(_this, position);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (xAndY <= min) {
|
||||||
|
// trigger the 'scrollLeaveTop' event
|
||||||
|
$element.trigger('scrollLeaveTop', {
|
||||||
|
position: position,
|
||||||
|
leaves: leaves,
|
||||||
|
});
|
||||||
|
|
||||||
|
// call the 'onLeaveTop' function
|
||||||
|
if (options.onLeaveTop !== null) {
|
||||||
|
options.onLeaveTop(_this, position);
|
||||||
|
}
|
||||||
|
} else if (xAndY >= max) {
|
||||||
|
// trigger the 'scrollLeaveBottom' event
|
||||||
|
$element.trigger('scrollLeaveBottom', {
|
||||||
|
position: position,
|
||||||
|
leaves: leaves,
|
||||||
|
});
|
||||||
|
|
||||||
|
// call the 'onLeaveBottom' function
|
||||||
|
if (options.onLeaveBottom !== null) {
|
||||||
|
options.onLeaveBottom(_this, position);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Idea taken from: http://stackoverflow.com/questions/5353934/check-if-element-is-visible-on-screen
|
||||||
|
var containerScrollTop = $container.scrollTop();
|
||||||
|
|
||||||
|
// Get the element height
|
||||||
|
var elementHeight = $element.height();
|
||||||
|
|
||||||
|
// Get the element offset
|
||||||
|
var elementOffsetTop = $element.offset().top;
|
||||||
|
|
||||||
|
if ((elementOffsetTop < (containerHeight + containerScrollTop)) && (elementOffsetTop > (containerScrollTop - elementHeight))) {
|
||||||
|
// trigger the 'scrollView' event
|
||||||
|
$element.trigger('scrollView', {
|
||||||
|
position: position,
|
||||||
|
});
|
||||||
|
|
||||||
|
// call the 'onView' function
|
||||||
|
if (options.onView !== null) {
|
||||||
|
options.onView(_this, position);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
// Fields (Private)
|
||||||
|
|
||||||
|
// Defaults
|
||||||
|
|
||||||
|
// default options
|
||||||
|
var _defaults = {
|
||||||
|
// the offset to be applied to the left and top positions of the container
|
||||||
|
buffer: 0,
|
||||||
|
|
||||||
|
// the element to apply the 'scrolling' event to (default window)
|
||||||
|
container: window,
|
||||||
|
|
||||||
|
// the maximum value of the X or Y coordinate, depending on mode the selected
|
||||||
|
max: 0,
|
||||||
|
|
||||||
|
// the maximum value of the X or Y coordinate, depending on mode the selected
|
||||||
|
min: 0,
|
||||||
|
|
||||||
|
// whether to listen to the X (horizontal) or Y (vertical) scrolling
|
||||||
|
mode: 'vertical',
|
||||||
|
|
||||||
|
// namespace to append to the 'scroll' event
|
||||||
|
namespace: 'scrollspy',
|
||||||
|
|
||||||
|
// call the following callback function every time the user enters the min / max zone
|
||||||
|
onEnter: null,
|
||||||
|
|
||||||
|
// call the following callback function every time the user leaves the min / max zone
|
||||||
|
onLeave: null,
|
||||||
|
|
||||||
|
// call the following callback function every time the user leaves the top zone
|
||||||
|
onLeaveTop: null,
|
||||||
|
|
||||||
|
// call the following callback function every time the user leaves the bottom zone
|
||||||
|
onLeaveBottom: null,
|
||||||
|
|
||||||
|
// call the following callback function on each scroll event within the min and max parameters
|
||||||
|
onTick: null,
|
||||||
|
|
||||||
|
// call the following callback function on each scroll event when the element is inside the viewable view port
|
||||||
|
onView: null,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Methods (Private)
|
||||||
|
|
||||||
|
// check if a value is an object datatype
|
||||||
|
function _isObject(value) {
|
||||||
|
return $.type(value) === 'object';
|
||||||
|
}
|
||||||
|
|
||||||
|
// check if a value is a string datatype with a length greater than zero when whitespace is stripped
|
||||||
|
function _isString(value) {
|
||||||
|
return $.type(value) === 'string' && $.trim(value).length > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// check if an option is correctly formatted using a predicate; otherwise, return the default value
|
||||||
|
function _sanitizeOption(options, defaults, property, predicate) {
|
||||||
|
// set the property to the default value if the predicate returned false
|
||||||
|
if (!predicate(options[property])) {
|
||||||
|
options[property] = defaults[property];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}(window, window.jQuery));
|
Loading…
Reference in New Issue