/pack-rat/003_pack_rat/pack-rat/node_modules/jstree/src/jstree.changed.js |
@@ -0,0 +1,69 @@ |
/** |
* ### Changed plugin |
* |
* This plugin adds more information to the `changed.jstree` event. The new data is contained in the `changed` event data property, and contains a lists of `selected` and `deselected` nodes. |
*/ |
/*globals jQuery, define, exports, require, document */ |
(function (factory) { |
"use strict"; |
if (typeof define === 'function' && define.amd) { |
define('jstree.changed', ['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.changed) { return; } |
|
$.jstree.plugins.changed = function (options, parent) { |
var last = []; |
this.trigger = function (ev, data) { |
var i, j; |
if(!data) { |
data = {}; |
} |
if(ev.replace('.jstree','') === 'changed') { |
data.changed = { selected : [], deselected : [] }; |
var tmp = {}; |
for(i = 0, j = last.length; i < j; i++) { |
tmp[last[i]] = 1; |
} |
for(i = 0, j = data.selected.length; i < j; i++) { |
if(!tmp[data.selected[i]]) { |
data.changed.selected.push(data.selected[i]); |
} |
else { |
tmp[data.selected[i]] = 2; |
} |
} |
for(i = 0, j = last.length; i < j; i++) { |
if(tmp[last[i]] === 1) { |
data.changed.deselected.push(last[i]); |
} |
} |
last = data.selected.slice(); |
} |
/** |
* triggered when selection changes (the "changed" plugin enhances the original event with more data) |
* @event |
* @name changed.jstree |
* @param {Object} node |
* @param {Object} action the action that caused the selection to change |
* @param {Array} selected the current selection |
* @param {Object} changed an object containing two properties `selected` and `deselected` - both arrays of node IDs, which were selected or deselected since the last changed event |
* @param {Object} event the event (if any) that triggered this changed event |
* @plugin changed |
*/ |
parent.trigger.call(this, ev, data); |
}; |
this.refresh = function (skip_loading, forget_state) { |
last = []; |
return parent.refresh.apply(this, arguments); |
}; |
}; |
})); |