mirror of
https://github.com/overleaf/overleaf.git
synced 2024-12-27 13:20:59 +00:00
82 lines
3 KiB
JavaScript
82 lines
3 KiB
JavaScript
/*!
|
|
* jquery.storage.js 0.0.3 - https://github.com/yckart/jquery.storage.js
|
|
* The client-side storage for every browser, on any device.
|
|
*
|
|
* Copyright (c) 2012 Yannick Albert (http://yckart.com)
|
|
* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php).
|
|
* 2013/02/10
|
|
**/
|
|
;(function($, window, document) {
|
|
'use strict';
|
|
|
|
$.map(['localStorage', 'sessionStorage'], function( method ) {
|
|
var defaults = {
|
|
cookiePrefix : 'fallback:' + method + ':',
|
|
cookieOptions : {
|
|
path : '/',
|
|
domain : document.domain,
|
|
expires : ('localStorage' === method) ? { expires: 365 } : undefined
|
|
}
|
|
};
|
|
|
|
try {
|
|
$.support[method] = method in window && window[method] !== null;
|
|
} catch (e) {
|
|
$.support[method] = false;
|
|
}
|
|
|
|
$[method] = function(key, value) {
|
|
var options = $.extend({}, defaults, $[method].options);
|
|
|
|
this.getItem = function( key ) {
|
|
var returns = function(key){
|
|
return JSON.parse($.support[method] ? window[method].getItem(key) : $.cookie(options.cookiePrefix + key));
|
|
};
|
|
if(typeof key === 'string') return returns(key);
|
|
|
|
var arr = [],
|
|
i = key.length;
|
|
while(i--) arr[i] = returns(key[i]);
|
|
return arr;
|
|
};
|
|
|
|
this.setItem = function( key, value ) {
|
|
value = JSON.stringify(value);
|
|
return $.support[method] ? window[method].setItem(key, value) : $.cookie(options.cookiePrefix + key, value, options.cookieOptions);
|
|
};
|
|
|
|
this.removeItem = function( key ) {
|
|
return $.support[method] ? window[method].removeItem(key) : $.cookie(options.cookiePrefix + key, null, $.extend(options.cookieOptions, {
|
|
expires: -1
|
|
}));
|
|
};
|
|
|
|
this.clear = function() {
|
|
if($.support[method]) {
|
|
return window[method].clear();
|
|
} else {
|
|
var reg = new RegExp('^' + options.cookiePrefix, ''),
|
|
opts = $.extend(options.cookieOptions, {
|
|
expires: -1
|
|
});
|
|
|
|
if(document.cookie && document.cookie !== ''){
|
|
$.map(document.cookie.split(';'), function( cookie ){
|
|
if(reg.test(cookie = $.trim(cookie))) {
|
|
$.cookie( cookie.substr(0,cookie.indexOf('=')), null, opts);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
};
|
|
|
|
if (typeof key !== "undefined") {
|
|
return typeof value !== "undefined" ? ( value === null ? this.removeItem(key) : this.setItem(key, value) ) : this.getItem(key);
|
|
}
|
|
|
|
return this;
|
|
};
|
|
|
|
$[method].options = defaults;
|
|
});
|
|
}(jQuery, window, document));
|