mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
update components
This commit is contained in:
parent
697257670c
commit
02ae9ec81e
123 changed files with 13600 additions and 531 deletions
125
dashboard-ui/bower_components/jstree/src/jstree.state.js
vendored
Normal file
125
dashboard-ui/bower_components/jstree/src/jstree.state.js
vendored
Normal file
|
@ -0,0 +1,125 @@
|
|||
/**
|
||||
* ### State plugin
|
||||
*
|
||||
* Saves the state of the tree (selected nodes, opened nodes) on the user's computer using available options (localStorage, cookies, etc)
|
||||
*/
|
||||
/*globals jQuery, define, exports, require */
|
||||
(function (factory) {
|
||||
"use strict";
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
define('jstree.state', ['jquery','jstree'], factory);
|
||||
}
|
||||
else if(typeof exports === 'object') {
|
||||
factory(require('jquery'), require('jstree'));
|
||||
}
|
||||
else {
|
||||
factory(jQuery, jQuery.jstree);
|
||||
}
|
||||
}(function ($, jstree, undefined) {
|
||||
"use strict";
|
||||
|
||||
if($.jstree.plugins.state) { return; }
|
||||
|
||||
var to = false;
|
||||
/**
|
||||
* stores all defaults for the state plugin
|
||||
* @name $.jstree.defaults.state
|
||||
* @plugin state
|
||||
*/
|
||||
$.jstree.defaults.state = {
|
||||
/**
|
||||
* A string for the key to use when saving the current tree (change if using multiple trees in your project). Defaults to `jstree`.
|
||||
* @name $.jstree.defaults.state.key
|
||||
* @plugin state
|
||||
*/
|
||||
key : 'jstree',
|
||||
/**
|
||||
* A space separated list of events that trigger a state save. Defaults to `changed.jstree open_node.jstree close_node.jstree`.
|
||||
* @name $.jstree.defaults.state.events
|
||||
* @plugin state
|
||||
*/
|
||||
events : 'changed.jstree open_node.jstree close_node.jstree check_node.jstree uncheck_node.jstree',
|
||||
/**
|
||||
* Time in milliseconds after which the state will expire. Defaults to 'false' meaning - no expire.
|
||||
* @name $.jstree.defaults.state.ttl
|
||||
* @plugin state
|
||||
*/
|
||||
ttl : false,
|
||||
/**
|
||||
* A function that will be executed prior to restoring state with one argument - the state object. Can be used to clear unwanted parts of the state.
|
||||
* @name $.jstree.defaults.state.filter
|
||||
* @plugin state
|
||||
*/
|
||||
filter : false
|
||||
};
|
||||
$.jstree.plugins.state = function (options, parent) {
|
||||
this.bind = function () {
|
||||
parent.bind.call(this);
|
||||
var bind = $.proxy(function () {
|
||||
this.element.on(this.settings.state.events, $.proxy(function () {
|
||||
if(to) { clearTimeout(to); }
|
||||
to = setTimeout($.proxy(function () { this.save_state(); }, this), 100);
|
||||
}, this));
|
||||
/**
|
||||
* triggered when the state plugin is finished restoring the state (and immediately after ready if there is no state to restore).
|
||||
* @event
|
||||
* @name state_ready.jstree
|
||||
* @plugin state
|
||||
*/
|
||||
this.trigger('state_ready');
|
||||
}, this);
|
||||
this.element
|
||||
.on("ready.jstree", $.proxy(function (e, data) {
|
||||
this.element.one("restore_state.jstree", bind);
|
||||
if(!this.restore_state()) { bind(); }
|
||||
}, this));
|
||||
};
|
||||
/**
|
||||
* save the state
|
||||
* @name save_state()
|
||||
* @plugin state
|
||||
*/
|
||||
this.save_state = function () {
|
||||
var st = { 'state' : this.get_state(), 'ttl' : this.settings.state.ttl, 'sec' : +(new Date()) };
|
||||
$.vakata.storage.set(this.settings.state.key, JSON.stringify(st));
|
||||
};
|
||||
/**
|
||||
* restore the state from the user's computer
|
||||
* @name restore_state()
|
||||
* @plugin state
|
||||
*/
|
||||
this.restore_state = function () {
|
||||
var k = $.vakata.storage.get(this.settings.state.key);
|
||||
if(!!k) { try { k = JSON.parse(k); } catch(ex) { return false; } }
|
||||
if(!!k && k.ttl && k.sec && +(new Date()) - k.sec > k.ttl) { return false; }
|
||||
if(!!k && k.state) { k = k.state; }
|
||||
if(!!k && $.isFunction(this.settings.state.filter)) { k = this.settings.state.filter.call(this, k); }
|
||||
if(!!k) {
|
||||
this.element.one("set_state.jstree", function (e, data) { data.instance.trigger('restore_state', { 'state' : $.extend(true, {}, k) }); });
|
||||
this.set_state(k);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
/**
|
||||
* clear the state on the user's computer
|
||||
* @name clear_state()
|
||||
* @plugin state
|
||||
*/
|
||||
this.clear_state = function () {
|
||||
return $.vakata.storage.del(this.settings.state.key);
|
||||
};
|
||||
};
|
||||
|
||||
(function ($, undefined) {
|
||||
$.vakata.storage = {
|
||||
// simply specifying the functions in FF throws an error
|
||||
set : function (key, val) { return window.localStorage.setItem(key, val); },
|
||||
get : function (key) { return window.localStorage.getItem(key); },
|
||||
del : function (key) { return window.localStorage.removeItem(key); }
|
||||
};
|
||||
}($));
|
||||
|
||||
// include the state plugin by default
|
||||
// $.jstree.defaults.plugins.push("state");
|
||||
}));
|
Loading…
Add table
Add a link
Reference in a new issue