Newer
Older
ubFramework / Portal / docroot / js / plugins / jsTree / ngJsTree.min.js
@Christopher W. Olsen Christopher W. Olsen on 10 Dec 2017 2 KB Cleaning Up Making It A Sub Module
!function(a){"use strict";function b(){var b=1;this.nodesFingerprint=function(a){return a.__uiNodeId||(a.__uiNodeId=b++),""+a.__uiNodeId+(a.id||"")+(a.text||"")+(a.type||"")},this.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(){return{restrict:"A",scope:{treeData:"=ngModel",shouldApply:"&"},controller:"jsTreeCtrl",link:function(b,c,d,e){function f(a,b,c){if(c.treeEvents)for(var d=c.treeEvents.split(";"),e=0;e<d.length;e++)if(d[e].length>0){var f=d[e].split(":")[0],g=f+".jstree",h=d[e].split(":")[1];a.tree.on(g,a.$parent.$eval(h))}}function g(){var c=d.jsTree?b.$parent.$eval(d.jsTree):{};h={},a.copy(c,h);var e=JSON.stringify(h);return h.core?h.core.data=b.treeData:h.core={data:b.treeData},e}var h=null,i=e.changeWatcher(b.treeData,e.nodesFingerprint),j=!1;b.destroy=function(){if(d.tree)if(-1!==d.tree.indexOf(".")){var a=d.tree.split(".");b.tree=b.$parent[a[0]][a[1]]=c}else b.tree=b.$parent[d.tree]=c;else b.tree=c;b.tree.jstree("destroy")},b.init=function(){b.tree.jstree(h),f(b,c,d)},i.onChanged=function(c){a.isDefined(b.tree.jstree(!0).set_type)&&b.tree.jstree(!0).set_type(c.id,c.type),b.tree.jstree(!0).rename_node(c.id,c.text)},i.onAdded=function(a){for(;j;);j=!0;var c=b.tree.jstree(!0).get_node(a.parent),d=b.tree.jstree(!0).create_node(c,a,"inside",function(){j=!1});d||(j=!1)},i.onRemoved=function(a){b.tree.jstree(!0).delete_node(a.id)},i.subscribe(b,function(){return b.shouldApply?b.shouldApply():!0}),b.$watch(g,function(){b.destroy(),b.init()})}}}var d=a.module("ngJsTree",[]);d.controller("jsTreeCtrl",b),d.directive("jsTree",c)}(angular);