/*global angular */ ! function () {
"use strict";
var e = {
is: function (e, a) {
return Object.prototype.toString.call(e).slice(8, -1) === a
},
whatClass: function (e) {
return Object.prototype.toString.call(e).slice(8, -1)
},
forKeys: function (e, a) {
for (var n in e)
if (e.hasOwnProperty(n) && "function" != typeof e[n] && a(n, e[n])) break
}
};
angular.module("angular-json-tree", ["ajs.RecursiveDirectiveHelper"]).directive("jsonTree", [function () {
return {
restrict: "E",
scope: {
object: "=",
startExpanded: "&?",
rootName: "&?"
},
template: ''
}
}]).directive("jsonNode", ["ajsRecursiveDirectiveHelper", function (a) {
return {
restrict: "E",
scope: {
key: "=",
value: "=",
startExpanded: "&?"
},
compile: function (e) {
return a.compile(e, this)
},
template: ' {{key}} {{value}} {{preview}}
',
pre: function (a, n, s) {
if (n.addClass(e.whatClass(a.value).toLowerCase()), e.is(a.value, "Object") || e.is(a.value, "Array")) {
a.isExpandable = !0, n.addClass("expandable");
var t = e.is(a.value, "Array");
a.preview = t ? "[ " : "{ ", e.forKeys(a.value, function (e, n) {
t ? a.preview += n + ", " : a.preview += e + ": " + n + ", "
}), a.preview = a.preview.substring(0, a.preview.length - (a.preview.length > 2 ? 2 : 0)) + (t ? " ]" : " }"), a.startExpanded && a.startExpanded() && (a.shouldRender = !0, n.addClass("expanded")), a.isExpanded = a.startExpanded ? a.startExpanded() : !1, a.toggleExpanded = function () {
a.isExpanded = !a.isExpanded, a.isExpanded ? n.addClass("expanded") : n.removeClass("expanded"), a.shouldRender = !0
}
} else a.isExpandable = !1, n.addClass("not-expandable")
}
}
}]), angular.module("ajs.RecursiveDirectiveHelper", []).factory("ajsRecursiveDirectiveHelper", ["$compile", function (e) {
return {
compile: function (a, n) {
angular.isFunction(n) && (n = {
post: n
});
var s, t = a.contents().remove();
return {
pre: n && n.pre ? n.pre : null,
post: function (a, r) {
s || (s = e(t)), s(a, function (e) {
r.append(e)
}), n && n.post && n.post.apply(null, arguments)
}
}
}
}
}])
}();