UNPKG

ng-js-tree

Version:

Angular Directive for the famous JsTree

1 lines 3.56 kB
!function(a,b){"use strict";a.jstree.defaults.alltrigger=null,a.jstree.plugins.alltrigger=function(b,c){this.init=function(d,e){if(b){this.trigger=function(a,d){c.trigger.call(this,a,d),b(a.replace(".jstree","")+".jstree",d)};var f=a.vakata.context._trigger;a.vakata.context._trigger=function(a){f(a),b("context_"+a+".vakata")};var g=a.vakata.dnd._trigger;a.vakata.dnd._trigger=function(a,c,d){g(a,c,d),b("dnd_"+a+".vakata",c,d)}}c.init.call(this,d,e)}}}(jQuery),function(a){"use strict";function b(){var b=1,c=this;c.nodesFingerprint=function(a){return a.__uiNodeId||(a.__uiNodeId=b++),""+a.__uiNodeId+(a.id||"")+(a.text||"")+(a.type||"")},c.changeWatcher=function(b,c){var d,e=function(){var d,e,f=[];if(b)for(var h=a.isFunction(b)?b():b,i=0,j=h.length;j>i;i++)e=h[i],d=c(e),g[d]=e,f.push(d);return f},f=function(a,b){var c,d,e=[],f={};for(c=0,d=b.length;d>c;c++)f[b[c]]=!0;for(c=0,d=a.length;d>c;c++)f[a[c]]||e.push(a[c]);return e},g={},h=function(a,b){var e,h,i,j,k={},l=f(b,a);for(e=0,h=l.length;h>e;e++){var m=l[e];i=g[m],delete g[m];var n=c(i);n===m?d.onRemoved(i):(k[n]=m,d.onChanged(i))}var o=f(a,b);for(e=0,h=o.length;h>e;e++)j=o[e],i=g[j],k[j]||d.onAdded(i)};return d={subscribe:function(a,b){a.$watch(e,function(a,c){b&&b(a,c)===!1||h(a,c)},!0)},onAdded:a.noop,onChanged:a.noop,onRemoved:a.noop}}}function c(b){return{restrict:"A",scope:{treeData:"=ngModel",treeEventsObj:"=?treeEventsObj",shouldApply:"&"},controller:"jsTreeCtrl",link:function(c,d,e,f){function g(a,b){return function(){var c=arguments,d=a.$parent.$eval(b);a.$root.$$phase?d.apply(a.$parent,c):a.$parent.$apply(function(){d.apply(a.$parent,c)})}}function h(b,c,d){if(d.treeEvents)for(var e=d.treeEvents.split(";"),f=0;f<e.length;f++)if(e[f].length>0){var h=e[f].split(":")[0],i=e[f].split(":")[1];-1===h.indexOf(".")&&(h+=".jstree"),l.push(h),-1===h.indexOf(".vakata")?b.tree.on(h,g(b,i)):$(document).on(h,g(b,i))}a.isObject(b.treeEventsObj)&&a.forEach(b.treeEventsObj,function(a,c){-1===c.indexOf(".")&&(c+=".jstree"),l.push(c),-1===c.indexOf(".vakata")?b.tree.on(c,function(){var c=arguments;b.$root.$$phase?a.apply(b.$parent,c):b.$parent.$apply(function(){a.apply(b.$parent,c)})}):$(document).on(c,function(){var c=arguments;b.$root.$$phase?a.apply(b.$parent,c):b.$parent.$apply(function(){a.apply(b.$parent,c)})})})}function i(){var b=e.jsTree?c.$parent.$eval(e.jsTree):{};j={},a.copy(b,j);var d=JSON.stringify(j);return j.core?j.core.data=c.treeData:j.core={data:c.treeData},j.plugins?j.plugins.push("alltrigger"):j.plugins=["alltrigger"],j.alltrigger=function(a){c.$root.$$phase||-1!==l.indexOf(a)||c.$apply()},d}var j=null,k=f.changeWatcher(c.treeData,f.nodesFingerprint),l=[],m=!1;c.destroy=function(){if(l=[],e.tree)if(-1!==e.tree.indexOf(".")){for(var a=e.tree.split("."),b=a.pop(),f=c.$parent,g=0;g<a.length;g++)f=f[a[g]];c.tree=f[b]=d}else c.tree=c.$parent[e.tree]=d;else c.tree=d;c.tree.jstree("destroy")},c.init=function(){c.tree.jstree(j),b(function(){h(c,d,e)})},k.onChanged=function(b){a.isDefined(c.tree.jstree(!0).set_type)&&c.tree.jstree(!0).set_type(b.id,b.type),c.tree.jstree(!0).rename_node(b.id,b.text)},k.onAdded=function(a){b(function(){for(;m;);m=!0;var b=c.tree.jstree(!0).get_node(a.parent),d=c.tree.jstree(!0).create_node(b,a,"inside",function(){m=!1});d||(m=!1)})},k.onRemoved=function(a){c.tree.jstree(!0).delete_node(a.id)},k.subscribe(c,function(){return c.shouldApply?c.shouldApply():!0}),c.$watch(i,function(){c.destroy(),c.init()})}}}var d=a.module("ngJsTree",[]);d.controller("jsTreeCtrl",b),d.directive("jsTree",["$timeout",c])}(angular);