PageSourceSearch

https://www.jetfm.fr/wp-content/plugins/ns-category-widget/public/assets/js/jstree.state.js?ver=3.3.11

js jetfm.fr collected 2026-10-03 21:23:37 UTC 4,612 bytes, 138 lines download raw bytes

1/**
2 * ### State plugin
3 *
4 * Saves the state of the tree (selected nodes, opened nodes) on the user's computer using available options (localStorage, cookies, etc)
5 */
6/*globals jQuery, define, exports, require */
7(function (factory) {
8	"use strict";
9	if (typeof define === 'function' && define.amd) {
10		define('jstree.state', ['jquery','./jstree.js'], factory);
11	}
12	else if(typeof exports === 'object') {
13		factory(require('jquery'), require('./jstree.js'));
14	}
15	else {
16		factory(jQuery, jQuery.jstree);
17	}
18}(function ($, jstree, undefined) {
19	"use strict";
20
21	if($.jstree.plugins.state) { return; }
22
23	var to = false;
24	/**
25	 * stores all defaults for the state plugin
26	 * @name $.jstree.defaults.state
27	 * @plugin state
28	 */
29	$.jstree.defaults.state = {
30		/**
31		 * A string for the key to use when saving the current tree (change if using multiple trees in your project). Defaults to `jstree`.
32		 * @name $.jstree.defaults.state.key
33		 * @plugin state
34		 */
35		key		: 'jstree',
36		/**
37		 * A space separated list of events that trigger a state save. Defaults to `changed.jstree open_node.jstree close_node.jstree`.
38		 * @name $.jstree.defaults.state.events
39		 * @plugin state
40		 */
41		events	: 'changed.jstree open_node.jstree close_node.jstree check_node.jstree uncheck_node.jstree',
42		/**
43		 * Time in milliseconds after which the state will expire. Defaults to 'false' meaning - no expire.
44		 * @name $.jstree.defaults.state.ttl
45		 * @plugin state
46		 */
47		ttl		: false,
48		/**
49		 * 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.
50		 * @name $.jstree.defaults.state.filter
51		 * @plugin state
52		 */
53		filter	: false,
54		/**
55		 * Should loaded nodes be restored (setting this to true means that it is possible that the whole tree will be loaded for some users - use with caution). Defaults to `false`
56		 * @name $.jstree.defaults.state.preserve_loaded
57		 * @plugin state
58		 */
59		preserve_loaded : false
60	};
61	$.jstree.plugins.state = function (options, parent) {
62		this.bind = function () {
63			parent.bind.call(this);
64			var bind = $.proxy(function () {
65				this.element.on(this.settings.state.events, $.proxy(function () {
66					if(to) { clearTimeout(to); }
67					to = setTimeout($.proxy(function () { this.save_state(); }, this), 100);
68				}, this));
69				/**
70				 * triggered when the state plugin is finished restoring the state (and immediately after ready if there is no state to restore).
71				 * @event
72				 * @name state_ready.jstree
73				 * @plugin state
74				 */
75				this.trigger('state_ready');
76			}, this);
77			this.element
78				.on("ready.jstree", $.proxy(function (e, data) {
79						this.element.one("restore_state.jstree", bind);
80						if(!this.restore_state()) { bind(); }
81					}, this));
82		};
83		/**
84		 * save the state
85		 * @name save_state()
86		 * @plugin state
87		 */
88		this.save_state = function () {
89			var tm = this.get_state();
90			if (!this.settings.state.preserve_loaded) {
91				delete tm.core.loaded;
92			}
93			var st = { 'state' : tm, 'ttl' : this.settings.state.ttl, 'sec' : +(new Date()) };
94			$.vakata.storage.set(this.settings.state.key, JSON.stringify(st));
95		};
96		/**
97		 * restore the state from the user's computer
98		 * @name restore_state()
99		 * @plugin state
100		 */
101		this.restore_state = function () {
102			var k = $.vakata.storage.get(this.settings.state.key);
103			if(!!k) { try { k = JSON.parse(k); } catch(ex) { return false; } }
104			if(!!k && k.ttl && k.sec && +(new Date()) - k.sec > k.ttl) { return false; }
105			if(!!k && k.state) { k = k.state; }
106			if(!!k && $.isFunction(this.settings.state.filter)) { k = this.settings.state.filter.call(this, k); }
107			if(!!k) {
108				if (!this.settings.state.preserve_loaded) {
109					delete k.core.loaded;
110				}
111				this.element.one("set_state.jstree", function (e, data) { data.instance.trigger('restore_state', { 'state' : $.extend(true, {}, k) }); });
112				this.set_state(k);
113				return true;
114			}
115			return false;
116		};
117		/**
118		 * clear the state on the user's computer
119		 * @name clear_state()
120		 * @plugin state
121		 */
122		this.clear_state = function () {
123			return $.vakata.storage.del(this.settings.state.key);
124		};
125	};
126
127	(function ($, undefined) {
128		$.vakata.storage = {
129			// simply specifying the functions in FF throws an error
130			set : function (key, val) { return window.localStorage.setItem(key, val); },
131			get : function (key) { return window.localStorage.getItem(key); },
132			del : function (key) { return window.localStorage.removeItem(key); }
133		};
134	}($));
135
136	// include the state plugin by default
137	// $.jstree.defaults.plugins.push("state");
138}));

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.