static.swagger.lib.jsoneditor.min.js Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of api-audit Show documentation
Show all versions of api-audit Show documentation
Hygieia Audit Rest API Layer
/*! JSON Editor v0.7.22 - JSON Schema -> HTML Editor
* By Jeremy Dorn - https://github.com/jdorn/json-editor/
* Released under the MIT license
*
* Date: 2015-08-12
*/
!function () {
var a;
!function () {
var b = !1, c = /xyz/.test(function () {
window.postMessage("xyz")
}) ? /\b_super\b/ : /.*/;
return a = function () {
}, a.extend = function (a) {
function d() {
!b && this.init && this.init.apply(this, arguments)
}
var e = this.prototype;
b = !0;
var f = new this;
b = !1;
for (var g in a)f[g] = "function" == typeof a[g] && "function" == typeof e[g] && c.test(a[g]) ? function (a, b) {
return function () {
var c = this._super;
this._super = e[a];
var d = b.apply(this, arguments);
return this._super = c, d
}
}(g, a[g]) : a[g];
return d.prototype = f, d.prototype.constructor = d, d.extend = arguments.callee, d
}, a
}(), function () {
function a(a, b) {
b = b || {bubbles: !1, cancelable: !1, detail: void 0};
var c = document.createEvent("CustomEvent");
return c.initCustomEvent(a, b.bubbles, b.cancelable, b.detail), c
}
a.prototype = window.Event.prototype, window.CustomEvent = a
}(), function () {
for (var a = 0, b = ["ms", "moz", "webkit", "o"], c = 0; c < b.length && !window.requestAnimationFrame; ++c)window.requestAnimationFrame = window[b[c] + "RequestAnimationFrame"], window.cancelAnimationFrame = window[b[c] + "CancelAnimationFrame"] || window[b[c] + "CancelRequestAnimationFrame"];
window.requestAnimationFrame || (window.requestAnimationFrame = function (b, c) {
var d = (new Date).getTime(), e = Math.max(0, 16 - (d - a)), f = window.setTimeout(function () {
b(d + e)
}, e);
return a = d + e, f
}), window.cancelAnimationFrame || (window.cancelAnimationFrame = function (a) {
clearTimeout(a)
})
}(), function () {
Array.isArray || (Array.isArray = function (a) {
return "[object Array]" === Object.prototype.toString.call(a)
})
}();
var b = function (a) {
return "object" != typeof a || a.nodeType || null !== a && a === a.window ? !1 : a.constructor && !Object.prototype.hasOwnProperty.call(a.constructor.prototype, "isPrototypeOf") ? !1 : !0
}, c = function (a) {
var d, e, f;
for (e = 1; e < arguments.length; e++) {
d = arguments[e];
for (f in d)d.hasOwnProperty(f) && (d[f] && b(d[f]) ? (a.hasOwnProperty(f) || (a[f] = {}), c(a[f], d[f])) : a[f] = d[f])
}
return a
}, d = function (a, b) {
if (a && "object" == typeof a) {
var c;
if (Array.isArray(a) || "number" == typeof a.length && a.length > 0 && a.length - 1 in a) {
for (c = 0; c < a.length; c++)if (b(c, a[c]) === !1)return
} else if (Object.keys) {
var d = Object.keys(a);
for (c = 0; c < d.length; c++)if (b(d[c], a[d[c]]) === !1)return
} else for (c in a)if (a.hasOwnProperty(c) && b(c, a[c]) === !1)return
}
}, e = function (a, b) {
var c = document.createEvent("HTMLEvents");
c.initEvent(b, !0, !0), a.dispatchEvent(c)
}, f = function (a, b) {
if (!(a instanceof Element))throw new Error("element should be an instance of Element");
b = c({}, f.defaults.options, b || {}), this.element = a, this.options = b, this.init()
};
f.prototype = {
constructor: f, init: function () {
var a = this;
this.ready = !1;
var b = f.defaults.themes[this.options.theme || f.defaults.theme];
if (!b)throw"Unknown theme " + (this.options.theme || f.defaults.theme);
this.schema = this.options.schema, this.theme = new b, this.template = this.options.template, this.refs = this.options.refs || {}, this.uuid = 0, this.__data = {};
var c = f.defaults.iconlibs[this.options.iconlib || f.defaults.iconlib];
c && (this.iconlib = new c), this.root_container = this.theme.getContainer(), this.element.appendChild(this.root_container), this.translate = this.options.translate || f.defaults.translate, this._loadExternalRefs(this.schema, function () {
a._getDefinitions(a.schema), a.validator = new f.Validator(a);
var b = a.getEditorClass(a.schema);
a.root = a.createEditor(b, {
jsoneditor: a,
schema: a.schema,
required: !0,
container: a.root_container
}), a.root.preBuild(), a.root.build(), a.root.postBuild(), a.options.startval && a.root.setValue(a.options.startval), a.validation_results = a.validator.validate(a.root.getValue()), a.root.showValidationErrors(a.validation_results), a.ready = !0, window.requestAnimationFrame(function () {
a.ready && (a.validation_results = a.validator.validate(a.root.getValue()), a.root.showValidationErrors(a.validation_results), a.trigger("ready"), a.trigger("change"))
})
})
}, getValue: function () {
if (!this.ready)throw"JSON Editor not ready yet. Listen for 'ready' event before getting the value";
return this.root.getValue()
}, setValue: function (a) {
if (!this.ready)throw"JSON Editor not ready yet. Listen for 'ready' event before setting the value";
return this.root.setValue(a), this
}, validate: function (a) {
if (!this.ready)throw"JSON Editor not ready yet. Listen for 'ready' event before validating";
return 1 === arguments.length ? this.validator.validate(a) : this.validation_results
}, destroy: function () {
this.destroyed || this.ready && (this.schema = null, this.options = null, this.root.destroy(), this.root = null, this.root_container = null, this.validator = null, this.validation_results = null, this.theme = null, this.iconlib = null, this.template = null, this.__data = null, this.ready = !1, this.element.innerHTML = "", this.destroyed = !0)
}, on: function (a, b) {
return this.callbacks = this.callbacks || {}, this.callbacks[a] = this.callbacks[a] || [], this.callbacks[a].push(b), this
}, off: function (a, b) {
if (a && b) {
this.callbacks = this.callbacks || {}, this.callbacks[a] = this.callbacks[a] || [];
for (var c = [], d = 0; d < this.callbacks[a].length; d++)this.callbacks[a][d] !== b && c.push(this.callbacks[a][d]);
this.callbacks[a] = c
} else a ? (this.callbacks = this.callbacks || {}, this.callbacks[a] = []) : this.callbacks = {};
return this
}, trigger: function (a) {
if (this.callbacks && this.callbacks[a] && this.callbacks[a].length)for (var b = 0; b < this.callbacks[a].length; b++)this.callbacks[a][b]();
return this
}, setOption: function (a, b) {
if ("show_errors" !== a)throw"Option " + a + " must be set during instantiation and cannot be changed later";
return this.options.show_errors = b, this.onChange(), this
}, getEditorClass: function (a) {
var b;
if (a = this.expandSchema(a), d(f.defaults.resolvers, function (c, d) {
var e = d(a);
return e && f.defaults.editors[e] ? (b = e, !1) : void 0
}), !b)throw"Unknown editor for schema " + JSON.stringify(a);
if (!f.defaults.editors[b])throw"Unknown editor " + b;
return f.defaults.editors[b]
}, createEditor: function (a, b) {
return b = c({}, a.options || {}, b), new a(b)
}, onChange: function () {
if (this.ready && !this.firing_change) {
this.firing_change = !0;
var a = this;
return window.requestAnimationFrame(function () {
a.firing_change = !1, a.ready && (a.validation_results = a.validator.validate(a.root.getValue()), "never" !== a.options.show_errors ? a.root.showValidationErrors(a.validation_results) : a.root.showValidationErrors([]), a.trigger("change"))
}), this
}
}, compileTemplate: function (a, b) {
b = b || f.defaults.template;
var c;
if ("string" == typeof b) {
if (!f.defaults.templates[b])throw"Unknown template engine " + b;
if (c = f.defaults.templates[b](), !c)throw"Template engine " + b + " missing required library."
} else c = b;
if (!c)throw"No template engine set";
if (!c.compile)throw"Invalid template engine set";
return c.compile(a)
}, _data: function (a, b, c) {
if (3 !== arguments.length)return a.hasAttribute("data-jsoneditor-" + b) ? this.__data[a.getAttribute("data-jsoneditor-" + b)] : null;
var d;
a.hasAttribute("data-jsoneditor-" + b) ? d = a.getAttribute("data-jsoneditor-" + b) : (d = this.uuid++, a.setAttribute("data-jsoneditor-" + b, d)), this.__data[d] = c
}, registerEditor: function (a) {
return this.editors = this.editors || {}, this.editors[a.path] = a, this
}, unregisterEditor: function (a) {
return this.editors = this.editors || {}, this.editors[a.path] = null, this
}, getEditor: function (a) {
return this.editors ? this.editors[a] : void 0
}, watch: function (a, b) {
return this.watchlist = this.watchlist || {}, this.watchlist[a] = this.watchlist[a] || [], this.watchlist[a].push(b), this
}, unwatch: function (a, b) {
if (!this.watchlist || !this.watchlist[a])return this;
if (!b)return this.watchlist[a] = null, this;
for (var c = [], d = 0; d < this.watchlist[a].length; d++)this.watchlist[a][d] !== b && c.push(this.watchlist[a][d]);
return this.watchlist[a] = c.length ? c : null, this
}, notifyWatchers: function (a) {
if (!this.watchlist || !this.watchlist[a])return this;
for (var b = 0; b < this.watchlist[a].length; b++)this.watchlist[a][b]()
}, isEnabled: function () {
return !this.root || this.root.isEnabled()
}, enable: function () {
this.root.enable()
}, disable: function () {
this.root.disable()
}, _getDefinitions: function (a, b) {
if (b = b || "#/definitions/", a.definitions)for (var c in a.definitions)a.definitions.hasOwnProperty(c) && (this.refs[b + c] = a.definitions[c], a.definitions[c].definitions && this._getDefinitions(a.definitions[c], b + c + "/definitions/"))
}, _getExternalRefs: function (a) {
var b = {}, c = function (a) {
for (var c in a)a.hasOwnProperty(c) && (b[c] = !0)
};
a.$ref && "object" != typeof a.$ref && "#" !== a.$ref.substr(0, 1) && !this.refs[a.$ref] && (b[a.$ref] = !0);
for (var d in a)if (a.hasOwnProperty(d))if (a[d] && "object" == typeof a[d] && Array.isArray(a[d]))for (var e = 0; e < a[d].length; e++)"object" == typeof a[d][e] && c(this._getExternalRefs(a[d][e])); else a[d] && "object" == typeof a[d] && c(this._getExternalRefs(a[d]));
return b
}, _loadExternalRefs: function (a, b) {
var c = this, e = this._getExternalRefs(a), f = 0, g = 0, h = !1;
d(e, function (a) {
if (!c.refs[a]) {
if (!c.options.ajax)throw"Must set ajax option to true to load external ref " + a;
c.refs[a] = "loading", g++;
var d = new XMLHttpRequest;
d.open("GET", a, !0), d.onreadystatechange = function () {
if (4 == d.readyState) {
if (200 !== d.status)throw window.console.log(d), "Failed to fetch ref via ajax- " + a;
var e;
try {
e = JSON.parse(d.responseText)
} catch (i) {
throw window.console.log(i), "Failed to parse external ref " + a
}
if (!e || "object" != typeof e)throw"External ref does not contain a valid schema - " + a;
c.refs[a] = e, c._loadExternalRefs(e, function () {
f++, f >= g && !h && (h = !0, b())
})
}
}, d.send()
}
}), g || b()
}, expandRefs: function (a) {
for (a = c({}, a); a.$ref;) {
var b = a.$ref;
delete a.$ref, this.refs[b] || (b = decodeURIComponent(b)), a = this.extendSchemas(a, this.refs[b])
}
return a
}, expandSchema: function (a) {
var b, e = this, f = c({}, a);
if ("object" == typeof a.type && (Array.isArray(a.type) ? d(a.type, function (b, c) {
"object" == typeof c && (a.type[b] = e.expandSchema(c))
}) : a.type = e.expandSchema(a.type)), "object" == typeof a.disallow && (Array.isArray(a.disallow) ? d(a.disallow, function (b, c) {
"object" == typeof c && (a.disallow[b] = e.expandSchema(c))
}) : a.disallow = e.expandSchema(a.disallow)), a.anyOf && d(a.anyOf, function (b, c) {
a.anyOf[b] = e.expandSchema(c)
}), a.dependencies && d(a.dependencies, function (b, c) {
"object" != typeof c || Array.isArray(c) || (a.dependencies[b] = e.expandSchema(c))
}), a.not && (a.not = this.expandSchema(a.not)), a.allOf) {
for (b = 0; b < a.allOf.length; b++)f = this.extendSchemas(f, this.expandSchema(a.allOf[b]));
delete f.allOf
}
if (a["extends"]) {
if (Array.isArray(a["extends"]))for (b = 0; b < a["extends"].length; b++)f = this.extendSchemas(f, this.expandSchema(a["extends"][b])); else f = this.extendSchemas(f, this.expandSchema(a["extends"]));
delete f["extends"]
}
if (a.oneOf) {
var g = c({}, f);
for (delete g.oneOf, b = 0; b < a.oneOf.length; b++)f.oneOf[b] = this.extendSchemas(this.expandSchema(a.oneOf[b]), g)
}
return this.expandRefs(f)
}, extendSchemas: function (a, b) {
a = c({}, a), b = c({}, b);
var e = this, f = {};
return d(a, function (a, c) {
"undefined" != typeof b[a] ? "required" === a && "object" == typeof c && Array.isArray(c) ? f.required = c.concat(b[a]).reduce(function (a, b) {
return a.indexOf(b) < 0 && a.push(b), a
}, []) : "type" !== a || "string" != typeof c && !Array.isArray(c) ? "object" == typeof c && Array.isArray(c) ? f[a] = c.filter(function (c) {
return -1 !== b[a].indexOf(c)
}) : "object" == typeof c && null !== c ? f[a] = e.extendSchemas(c, b[a]) : f[a] = c : ("string" == typeof c && (c = [c]), "string" == typeof b.type && (b.type = [b.type]), f.type = c.filter(function (a) {
return -1 !== b.type.indexOf(a)
}), 1 === f.type.length && "string" == typeof f.type[0] && (f.type = f.type[0])) : f[a] = c
}), d(b, function (b, c) {
"undefined" == typeof a[b] && (f[b] = c)
}), f
}
}, f.defaults = {
themes: {},
templates: {},
iconlibs: {},
editors: {},
languages: {},
resolvers: [],
custom_validators: []
}, f.Validator = a.extend({
init: function (a, b) {
this.jsoneditor = a, this.schema = b || this.jsoneditor.schema, this.options = {}, this.translate = this.jsoneditor.translate || f.defaults.translate
}, validate: function (a) {
return this._validateSchema(this.schema, a)
}, _validateSchema: function (a, b, e) {
var g, h, i, j = this, k = [], l = JSON.stringify(b);
if (e = e || "root", a = c({}, this.jsoneditor.expandRefs(a)), a.required && a.required === !0) {
if ("undefined" == typeof b)return k.push({
path: e,
property: "required",
message: this.translate("error_notset")
}), k
} else if ("undefined" == typeof b) {
if (!this.jsoneditor.options.required_by_default)return k;
k.push({path: e, property: "required", message: this.translate("error_notset")})
}
if (a["enum"]) {
for (g = !1, h = 0; h < a["enum"].length; h++)l === JSON.stringify(a["enum"][h]) && (g = !0);
g || k.push({path: e, property: "enum", message: this.translate("error_enum")})
}
if (a["extends"])for (h = 0; h < a["extends"].length; h++)k = k.concat(this._validateSchema(a["extends"][h], b, e));
if (a.allOf)for (h = 0; h < a.allOf.length; h++)k = k.concat(this._validateSchema(a.allOf[h], b, e));
if (a.anyOf) {
for (g = !1, h = 0; h < a.anyOf.length; h++)if (!this._validateSchema(a.anyOf[h], b, e).length) {
g = !0;
break
}
g || k.push({path: e, property: "anyOf", message: this.translate("error_anyOf")})
}
if (a.oneOf) {
g = 0;
var m = [];
for (h = 0; h < a.oneOf.length; h++) {
var n = this._validateSchema(a.oneOf[h], b, e);
for (n.length || g++, i = 0; i < n.length; i++)n[i].path = e + ".oneOf[" + h + "]" + n[i].path.substr(e.length);
m = m.concat(n)
}
1 !== g && (k.push({
path: e,
property: "oneOf",
message: this.translate("error_oneOf", [g])
}), k = k.concat(m))
}
if (a.not && (this._validateSchema(a.not, b, e).length || k.push({
path: e,
property: "not",
message: this.translate("error_not")
})), a.type)if (Array.isArray(a.type)) {
for (g = !1, h = 0; h < a.type.length; h++)if (this._checkType(a.type[h], b)) {
g = !0;
break
}
g || k.push({path: e, property: "type", message: this.translate("error_type_union")})
} else this._checkType(a.type, b) || k.push({
path: e,
property: "type",
message: this.translate("error_type", [a.type])
});
if (a.disallow)if (Array.isArray(a.disallow)) {
for (g = !0, h = 0; h < a.disallow.length; h++)if (this._checkType(a.disallow[h], b)) {
g = !1;
break
}
g || k.push({path: e, property: "disallow", message: this.translate("error_disallow_union")})
} else this._checkType(a.disallow, b) && k.push({
path: e,
property: "disallow",
message: this.translate("error_disallow", [a.disallow])
});
if ("number" == typeof b)(a.multipleOf || a.divisibleBy) && (g = b / (a.multipleOf || a.divisibleBy), g !== Math.floor(g) && k.push({
path: e,
property: a.multipleOf ? "multipleOf" : "divisibleBy",
message: this.translate("error_multipleOf", [a.multipleOf || a.divisibleBy])
})), a.hasOwnProperty("maximum") && (a.exclusiveMaximum && b >= a.maximum ? k.push({
path: e,
property: "maximum",
message: this.translate("error_maximum_excl", [a.maximum])
}) : !a.exclusiveMaximum && b > a.maximum && k.push({
path: e,
property: "maximum",
message: this.translate("error_maximum_incl", [a.maximum])
})), a.hasOwnProperty("minimum") && (a.exclusiveMinimum && b <= a.minimum ? k.push({
path: e,
property: "minimum",
message: this.translate("error_minimum_excl", [a.minimum])
}) : !a.exclusiveMinimum && b < a.minimum && k.push({
path: e,
property: "minimum",
message: this.translate("error_minimum_incl", [a.minimum])
})); else if ("string" == typeof b)a.maxLength && (b + "").length > a.maxLength && k.push({
path: e,
property: "maxLength",
message: this.translate("error_maxLength", [a.maxLength])
}), a.minLength && (b + "").length < a.minLength && k.push({
path: e,
property: "minLength",
message: this.translate(1 === a.minLength ? "error_notempty" : "error_minLength", [a.minLength])
}), a.pattern && (new RegExp(a.pattern).test(b) || k.push({
path: e,
property: "pattern",
message: this.translate("error_pattern")
})); else if ("object" == typeof b && null !== b && Array.isArray(b)) {
if (a.items)if (Array.isArray(a.items))for (h = 0; h < b.length; h++)if (a.items[h])k = k.concat(this._validateSchema(a.items[h], b[h], e + "." + h)); else {
if (a.additionalItems === !0)break;
if (!a.additionalItems) {
if (a.additionalItems === !1) {
k.push({
path: e,
property: "additionalItems",
message: this.translate("error_additionalItems")
});
break
}
break
}
k = k.concat(this._validateSchema(a.additionalItems, b[h], e + "." + h))
} else for (h = 0; h < b.length; h++)k = k.concat(this._validateSchema(a.items, b[h], e + "." + h));
if (a.maxItems && b.length > a.maxItems && k.push({
path: e,
property: "maxItems",
message: this.translate("error_maxItems", [a.maxItems])
}), a.minItems && b.length < a.minItems && k.push({
path: e,
property: "minItems",
message: this.translate("error_minItems", [a.minItems])
}), a.uniqueItems) {
var o = {};
for (h = 0; h < b.length; h++) {
if (g = JSON.stringify(b[h]), o[g]) {
k.push({path: e, property: "uniqueItems", message: this.translate("error_uniqueItems")});
break
}
o[g] = !0
}
}
} else if ("object" == typeof b && null !== b) {
if (a.maxProperties) {
g = 0;
for (h in b)b.hasOwnProperty(h) && g++;
g > a.maxProperties && k.push({
path: e,
property: "maxProperties",
message: this.translate("error_maxProperties", [a.maxProperties])
})
}
if (a.minProperties) {
g = 0;
for (h in b)b.hasOwnProperty(h) && g++;
g < a.minProperties && k.push({
path: e,
property: "minProperties",
message: this.translate("error_minProperties", [a.minProperties])
})
}
if (a.required && Array.isArray(a.required))for (h = 0; h < a.required.length; h++)"undefined" == typeof b[a.required[h]] && k.push({
path: e,
property: "required",
message: this.translate("error_required", [a.required[h]])
});
var p = {};
if (a.properties)for (h in a.properties)a.properties.hasOwnProperty(h) && (p[h] = !0, k = k.concat(this._validateSchema(a.properties[h], b[h], e + "." + h)));
if (a.patternProperties)for (h in a.patternProperties)if (a.patternProperties.hasOwnProperty(h)) {
var q = new RegExp(h);
for (i in b)b.hasOwnProperty(i) && q.test(i) && (p[i] = !0, k = k.concat(this._validateSchema(a.patternProperties[h], b[i], e + "." + i)))
}
if ("undefined" != typeof a.additionalProperties || !this.jsoneditor.options.no_additional_properties || a.oneOf || a.anyOf || (a.additionalProperties = !1), "undefined" != typeof a.additionalProperties)for (h in b)if (b.hasOwnProperty(h) && !p[h]) {
if (!a.additionalProperties) {
k.push({
path: e,
property: "additionalProperties",
message: this.translate("error_additional_properties", [h])
});
break
}
if (a.additionalProperties === !0)break;
k = k.concat(this._validateSchema(a.additionalProperties, b[h], e + "." + h))
}
if (a.dependencies)for (h in a.dependencies)if (a.dependencies.hasOwnProperty(h) && "undefined" != typeof b[h])if (Array.isArray(a.dependencies[h]))for (i = 0; i < a.dependencies[h].length; i++)"undefined" == typeof b[a.dependencies[h][i]] && k.push({
path: e,
property: "dependencies",
message: this.translate("error_dependency", [a.dependencies[h][i]])
}); else k = k.concat(this._validateSchema(a.dependencies[h], b, e))
}
return d(f.defaults.custom_validators, function (c, d) {
k = k.concat(d.call(j, a, b, e))
}), k
}, _checkType: function (a, b) {
return "string" == typeof a ? "string" === a ? "string" == typeof b : "number" === a ? "number" == typeof b : "integer" === a ? "number" == typeof b && b === Math.floor(b) : "boolean" === a ? "boolean" == typeof b : "array" === a ? Array.isArray(b) : "object" === a ? null !== b && !Array.isArray(b) && "object" == typeof b : "null" === a ? null === b : !0 : !this._validateSchema(a, b).length
}
}), f.AbstractEditor = a.extend({
onChildEditorChange: function (a) {
this.onChange(!0)
}, notify: function () {
this.jsoneditor.notifyWatchers(this.path)
}, change: function () {
this.parent ? this.parent.onChildEditorChange(this) : this.jsoneditor.onChange()
}, onChange: function (a) {
this.notify(), this.watch_listener && this.watch_listener(), a && this.change()
}, register: function () {
this.jsoneditor.registerEditor(this), this.onChange()
}, unregister: function () {
this.jsoneditor && this.jsoneditor.unregisterEditor(this)
}, getNumColumns: function () {
return 12
}, init: function (a) {
this.jsoneditor = a.jsoneditor, this.theme = this.jsoneditor.theme, this.template_engine = this.jsoneditor.template, this.iconlib = this.jsoneditor.iconlib, this.original_schema = a.schema, this.schema = this.jsoneditor.expandSchema(this.original_schema), this.options = c({}, this.options || {}, a.schema.options || {}, a), a.path || this.schema.id || (this.schema.id = "root"), this.path = a.path || "root", this.formname = a.formname || this.path.replace(/\.([^.]+)/g, "[$1]"), this.jsoneditor.options.form_name_root && (this.formname = this.formname.replace(/^root\[/, this.jsoneditor.options.form_name_root + "[")), this.key = this.path.split(".").pop(), this.parent = a.parent, this.link_watchers = [], a.container && this.setContainer(a.container)
}, setContainer: function (a) {
this.container = a, this.schema.id && this.container.setAttribute("data-schemaid", this.schema.id), this.schema.type && "string" == typeof this.schema.type && this.container.setAttribute("data-schematype", this.schema.type), this.container.setAttribute("data-schemapath", this.path)
}, preBuild: function () {
}, build: function () {
}, postBuild: function () {
this.setupWatchListeners(), this.addLinks(), this.setValue(this.getDefault(), !0), this.updateHeaderText(), this.register(), this.onWatchedFieldChange()
}, setupWatchListeners: function () {
var a = this;
if (this.watched = {}, this.schema.vars && (this.schema.watch = this.schema.vars), this.watched_values = {}, this.watch_listener = function () {
a.refreshWatchedFieldValues() && a.onWatchedFieldChange()
}, this.register(), this.schema.hasOwnProperty("watch")) {
var b, c, d, e, f;
for (var g in this.schema.watch)if (this.schema.watch.hasOwnProperty(g)) {
if (b = this.schema.watch[g], Array.isArray(b) ? c = [b[0]].concat(b[1].split(".")) : (c = b.split("."), a.theme.closest(a.container, '[data-schemaid="' + c[0] + '"]') || c.unshift("#")), d = c.shift(), "#" === d && (d = a.jsoneditor.schema.id || "root"), e = a.theme.closest(a.container, '[data-schemaid="' + d + '"]'), !e)throw"Could not find ancestor node with id " + d;
f = e.getAttribute("data-schemapath") + "." + c.join("."), a.jsoneditor.watch(f, a.watch_listener), a.watched[g] = f
}
}
this.schema.headerTemplate && (this.header_template = this.jsoneditor.compileTemplate(this.schema.headerTemplate, this.template_engine))
}, addLinks: function () {
if (!this.no_link_holder && (this.link_holder = this.theme.getLinksHolder(), this.container.appendChild(this.link_holder), this.schema.links))for (var a = 0; a < this.schema.links.length; a++)this.addLink(this.getLink(this.schema.links[a]))
}, getButton: function (a, b, c) {
var d = "json-editor-btn-" + b;
b = this.iconlib ? this.iconlib.getIcon(b) : null, !b && c && (a = c, c = null);
var e = this.theme.getButton(a, b, c);
return e.className += " " + d + " ", e
}, setButtonText: function (a, b, c, d) {
return c = this.iconlib ? this.iconlib.getIcon(c) : null, !c && d && (b = d, d = null), this.theme.setButtonText(a, b, c, d)
}, addLink: function (a) {
this.link_holder && this.link_holder.appendChild(a)
}, getLink: function (a) {
var b, c, d = a.mediaType || "application/javascript", e = d.split("/")[0], f = this.jsoneditor.compileTemplate(a.href, this.template_engine);
if ("image" === e) {
b = this.theme.getBlockLinkHolder(), c = document.createElement("a"), c.setAttribute("target", "_blank");
var g = document.createElement("img");
this.theme.createImageLink(b, c, g), this.link_watchers.push(function (b) {
var d = f(b);
c.setAttribute("href", d), c.setAttribute("title", a.rel || d), g.setAttribute("src", d)
})
} else if (["audio", "video"].indexOf(e) >= 0) {
b = this.theme.getBlockLinkHolder(), c = this.theme.getBlockLink(), c.setAttribute("target", "_blank");
var h = document.createElement(e);
h.setAttribute("controls", "controls"), this.theme.createMediaLink(b, c, h), this.link_watchers.push(function (b) {
var d = f(b);
c.setAttribute("href", d), c.textContent = a.rel || d, h.setAttribute("src", d)
})
} else b = this.theme.getBlockLink(), b.setAttribute("target", "_blank"), b.textContent = a.rel, this.link_watchers.push(function (c) {
var d = f(c);
b.setAttribute("href", d), b.textContent = a.rel || d
});
return b
}, refreshWatchedFieldValues: function () {
if (this.watched_values) {
var a = {}, b = !1, c = this;
if (this.watched) {
var d, e;
for (var f in this.watched)this.watched.hasOwnProperty(f) && (e = c.jsoneditor.getEditor(this.watched[f]), d = e ? e.getValue() : null, c.watched_values[f] !== d && (b = !0), a[f] = d)
}
return a.self = this.getValue(), this.watched_values.self !== a.self && (b = !0), this.watched_values = a, b
}
}, getWatchedFieldValues: function () {
return this.watched_values
}, updateHeaderText: function () {
if (this.header)if (this.header.children.length) {
for (var a = 0; a < this.header.childNodes.length; a++)if (3 === this.header.childNodes[a].nodeType) {
this.header.childNodes[a].nodeValue = this.getHeaderText();
break
}
} else this.header.textContent = this.getHeaderText()
}, getHeaderText: function (a) {
return this.header_text ? this.header_text : a ? this.schema.title : this.getTitle()
}, onWatchedFieldChange: function () {
var a;
if (this.header_template) {
a = c(this.getWatchedFieldValues(), {
key: this.key,
i: this.key,
i0: 1 * this.key,
i1: 1 * this.key + 1,
title: this.getTitle()
});
var b = this.header_template(a);
b !== this.header_text && (this.header_text = b, this.updateHeaderText(), this.notify())
}
if (this.link_watchers.length) {
a = this.getWatchedFieldValues();
for (var d = 0; d < this.link_watchers.length; d++)this.link_watchers[d](a)
}
}, setValue: function (a) {
this.value = a
}, getValue: function () {
return this.value
}, refreshValue: function () {
}, getChildEditors: function () {
return !1
}, destroy: function () {
var a = this;
this.unregister(this), d(this.watched, function (b, c) {
a.jsoneditor.unwatch(c, a.watch_listener)
}), this.watched = null, this.watched_values = null, this.watch_listener = null, this.header_text = null, this.header_template = null, this.value = null, this.container && this.container.parentNode && this.container.parentNode.removeChild(this.container), this.container = null, this.jsoneditor = null, this.schema = null, this.path = null, this.key = null, this.parent = null
}, getDefault: function () {
if (this.schema["default"])return this.schema["default"];
if (this.schema["enum"])return this.schema["enum"][0];
var a = this.schema.type || this.schema.oneOf;
if (a && Array.isArray(a) && (a = a[0]), a && "object" == typeof a && (a = a.type), a && Array.isArray(a) && (a = a[0]), "string" == typeof a) {
if ("number" === a)return 0;
if ("boolean" === a)return !1;
if ("integer" === a)return 0;
if ("string" === a)return "";
if ("object" === a)return {};
if ("array" === a)return []
}
return null
}, getTitle: function () {
return this.schema.title || this.key
}, enable: function () {
this.disabled = !1
}, disable: function () {
this.disabled = !0
}, isEnabled: function () {
return !this.disabled
}, isRequired: function () {
return "boolean" == typeof this.schema.required ? this.schema.required : this.parent && this.parent.schema && Array.isArray(this.parent.schema.required) ? this.parent.schema.required.indexOf(this.key) > -1 : this.jsoneditor.options.required_by_default ? !0 : !1
}, getDisplayText: function (a) {
var b = [], c = {};
d(a, function (a, b) {
b.title && (c[b.title] = c[b.title] || 0, c[b.title]++), b.description && (c[b.description] = c[b.description] || 0, c[b.description]++), b.format && (c[b.format] = c[b.format] || 0, c[b.format]++), b.type && (c[b.type] = c[b.type] || 0, c[b.type]++)
}), d(a, function (a, d) {
var e;
e = "string" == typeof d ? d : d.title && c[d.title] <= 1 ? d.title : d.format && c[d.format] <= 1 ? d.format : d.type && c[d.type] <= 1 ? d.type : d.description && c[d.description] <= 1 ? d.descripton : d.title ? d.title : d.format ? d.format : d.type ? d.type : d.description ? d.description : JSON.stringify(d).length < 50 ? JSON.stringify(d) : "type", b.push(e)
});
var e = {};
return d(b, function (a, d) {
e[d] = e[d] || 0, e[d]++, c[d] > 1 && (b[a] = d + " " + e[d])
}), b
}, getOption: function (a) {
try {
throw"getOption is deprecated"
} catch (b) {
window.console.error(b)
}
return this.options[a]
}, showValidationErrors: function (a) {
}
}), f.defaults.editors["null"] = f.AbstractEditor.extend({
getValue: function () {
return null
}, setValue: function () {
this.onChange()
}, getNumColumns: function () {
return 2
}
}), f.defaults.editors.string = f.AbstractEditor.extend({
register: function () {
this._super(), this.input && this.input.setAttribute("name", this.formname)
}, unregister: function () {
this._super(), this.input && this.input.removeAttribute("name")
}, setValue: function (a, b, c) {
if ((!this.template || c) && (null === a || "undefined" == typeof a ? a = "" : "object" == typeof a ? a = JSON.stringify(a) : "string" != typeof a && (a = "" + a), a !== this.serialized)) {
var d = this.sanitize(a);
if (this.input.value !== d) {
this.input.value = d, this.sceditor_instance ? this.sceditor_instance.val(d) : this.epiceditor ? this.epiceditor.importFile(null, d) : this.ace_editor && this.ace_editor.setValue(d);
var e = c || this.getValue() !== a;
this.refreshValue(), b ? this.is_dirty = !1 : "change" === this.jsoneditor.options.show_errors && (this.is_dirty = !0), this.adjust_height && this.adjust_height(this.input), this.onChange(e)
}
}
}, getNumColumns: function () {
var a, b = Math.ceil(Math.max(this.getTitle().length, this.schema.maxLength || 0, this.schema.minLength || 0) / 5);
return a = "textarea" === this.input_type ? 6 : ["text", "email"].indexOf(this.input_type) >= 0 ? 4 : 2, Math.min(12, Math.max(b, a))
}, build: function () {
var a = this;
if (this.options.compact || (this.header = this.label = this.theme.getFormInputLabel(this.getTitle(), this.isRequired())), this.schema.description && (this.description = this.theme.getFormInputDescription(this.schema.description)), this.format = this.schema.format, !this.format && this.schema.media && this.schema.media.type && (this.format = this.schema.media.type.replace(/(^(application|text)\/(x-)?(script\.)?)|(-source$)/g, "")), !this.format && this.options.default_format && (this.format = this.options.default_format), this.options.format && (this.format = this.options.format), this.format)if ("textarea" === this.format)this.input_type = "textarea", this.input = this.theme.getTextareaInput(); else if ("range" === this.format) {
this.input_type = "range";
var b = this.schema.minimum || 0, c = this.schema.maximum || Math.max(100, b + 1), d = 1;
this.schema.multipleOf && (b % this.schema.multipleOf && (b = Math.ceil(b / this.schema.multipleOf) * this.schema.multipleOf), c % this.schema.multipleOf && (c = Math.floor(c / this.schema.multipleOf) * this.schema.multipleOf), d = this.schema.multipleOf), this.input = this.theme.getRangeInput(b, c, d)
} else["actionscript", "batchfile", "bbcode", "c", "c++", "cpp", "coffee", "csharp", "css", "dart", "django", "ejs", "erlang", "golang", "handlebars", "haskell", "haxe", "html", "ini", "jade", "java", "javascript", "json", "less", "lisp", "lua", "makefile", "markdown", "matlab", "mysql", "objectivec", "pascal", "perl", "pgsql", "php", "python", "r", "ruby", "sass", "scala", "scss", "smarty", "sql", "stylus", "svg", "twig", "vbscript", "xml", "yaml"].indexOf(this.format) >= 0 ? (this.input_type = this.format, this.source_code = !0, this.input = this.theme.getTextareaInput()) : (this.input_type = this.format, this.input = this.theme.getFormInputField(this.input_type)); else this.input_type = "text", this.input = this.theme.getFormInputField(this.input_type);
"undefined" != typeof this.schema.maxLength && this.input.setAttribute("maxlength", this.schema.maxLength), "undefined" != typeof this.schema.pattern ? this.input.setAttribute("pattern", this.schema.pattern) : "undefined" != typeof this.schema.minLength && this.input.setAttribute("pattern", ".{" + this.schema.minLength + ",}"), this.options.compact ? this.container.className += " compact" : this.options.input_width && (this.input.style.width = this.options.input_width), (this.schema.readOnly || this.schema.readonly || this.schema.template) && (this.always_disabled = !0, this.input.disabled = !0), this.input.addEventListener("change", function (b) {
if (b.preventDefault(), b.stopPropagation(), a.schema.template)return void(this.value = a.value);
var c = this.value, d = a.sanitize(c);
c !== d && (this.value = d), a.is_dirty = !0, a.refreshValue(), a.onChange(!0)
}), this.options.input_height && (this.input.style.height = this.options.input_height), this.options.expand_height && (this.adjust_height = function (a) {
if (a) {
var b, c = a.offsetHeight;
if (a.offsetHeight < a.scrollHeight)for (b = 0; a.offsetHeight < a.scrollHeight + 3 && !(b > 100);)b++, c++, a.style.height = c + "px"; else {
for (b = 0; a.offsetHeight >= a.scrollHeight + 3 && !(b > 100);)b++, c--, a.style.height = c + "px";
a.style.height = c + 1 + "px"
}
}
}, this.input.addEventListener("keyup", function (b) {
a.adjust_height(this)
}), this.input.addEventListener("change", function (b) {
a.adjust_height(this)
}), this.adjust_height()), this.format && this.input.setAttribute("data-schemaformat", this.format), this.control = this.theme.getFormControl(this.label, this.input, this.description), this.container.appendChild(this.control), window.requestAnimationFrame(function () {
a.input.parentNode && a.afterInputReady(), a.adjust_height && a.adjust_height(a.input)
}), this.schema.template ? (this.template = this.jsoneditor.compileTemplate(this.schema.template, this.template_engine), this.refreshValue()) : this.refreshValue()
}, enable: function () {
this.always_disabled || (this.input.disabled = !1), this._super()
}, disable: function () {
this.input.disabled = !0, this._super()
}, afterInputReady: function () {
var a, b = this;
if (this.source_code)if (this.options.wysiwyg && ["html", "bbcode"].indexOf(this.input_type) >= 0 && window.jQuery && window.jQuery.fn && window.jQuery.fn.sceditor)a = c({}, {
plugins: "html" === b.input_type ? "xhtml" : "bbcode",
emoticonsEnabled: !1,
width: "100%",
height: 300
}, f.plugins.sceditor, b.options.sceditor_options || {}), window.jQuery(b.input).sceditor(a), b.sceditor_instance = window.jQuery(b.input).sceditor("instance"), b.sceditor_instance.blur(function () {
var a = window.jQuery("" + b.sceditor_instance.val() + "");
window.jQuery("#sceditor-start-marker,#sceditor-end-marker,.sceditor-nlf", a).remove(), b.input.value = a.html(), b.value = b.input.value, b.is_dirty = !0, b.onChange(!0)
}); else if ("markdown" === this.input_type && window.EpicEditor)this.epiceditor_container = document.createElement("div"), this.input.parentNode.insertBefore(this.epiceditor_container, this.input), this.input.style.display = "none", a = c({}, f.plugins.epiceditor, {
container: this.epiceditor_container,
clientSideStorage: !1
}), this.epiceditor = new window.EpicEditor(a).load(), this.epiceditor.importFile(null, this.getValue()), this.epiceditor.on("update", function () {
var a = b.epiceditor.exportFile();
b.input.value = a, b.value = a, b.is_dirty = !0, b.onChange(!0);
}); else if (window.ace) {
var d = this.input_type;
("cpp" === d || "c++" === d || "c" === d) && (d = "c_cpp"), this.ace_container = document.createElement("div"), this.ace_container.style.width = "100%", this.ace_container.style.position = "relative", this.ace_container.style.height = "400px", this.input.parentNode.insertBefore(this.ace_container, this.input), this.input.style.display = "none", this.ace_editor = window.ace.edit(this.ace_container), this.ace_editor.setValue(this.getValue()), f.plugins.ace.theme && this.ace_editor.setTheme("ace/theme/" + f.plugins.ace.theme), d = window.ace.require("ace/mode/" + d), d && this.ace_editor.getSession().setMode(new d.Mode), this.ace_editor.on("change", function () {
var a = b.ace_editor.getValue();
b.input.value = a, b.refreshValue(), b.is_dirty = !0, b.onChange(!0)
})
}
b.theme.afterInputReady(b.input)
}, refreshValue: function () {
this.value = this.input.value, "string" != typeof this.value && (this.value = ""), this.serialized = this.value
}, destroy: function () {
this.sceditor_instance ? this.sceditor_instance.destroy() : this.epiceditor ? this.epiceditor.unload() : this.ace_editor && this.ace_editor.destroy(), this.template = null, this.input && this.input.parentNode && this.input.parentNode.removeChild(this.input), this.label && this.label.parentNode && this.label.parentNode.removeChild(this.label), this.description && this.description.parentNode && this.description.parentNode.removeChild(this.description), this._super()
}, sanitize: function (a) {
return a
}, onWatchedFieldChange: function () {
var a;
this.template && (a = this.getWatchedFieldValues(), this.setValue(this.template(a), !1, !0)), this._super()
}, showValidationErrors: function (a) {
var b = this;
if ("always" === this.jsoneditor.options.show_errors); else if (!this.is_dirty && this.previous_error_setting === this.jsoneditor.options.show_errors)return;
this.previous_error_setting = this.jsoneditor.options.show_errors;
var c = [];
d(a, function (a, d) {
d.path === b.path && c.push(d.message)
}), c.length ? this.theme.addInputError(this.input, c.join(". ") + ".") : this.theme.removeInputError(this.input)
}
}), f.defaults.editors.number = f.defaults.editors.string.extend({
sanitize: function (a) {
return (a + "").replace(/[^0-9\.\-eE]/g, "")
}, getNumColumns: function () {
return 2
}, getValue: function () {
return 1 * this.value
}
}), f.defaults.editors.integer = f.defaults.editors.number.extend({
sanitize: function (a) {
return a += "", a.replace(/[^0-9\-]/g, "")
}, getNumColumns: function () {
return 2
}
}), f.defaults.editors.object = f.AbstractEditor.extend({
getDefault: function () {
return c({}, this.schema["default"] || {})
}, getChildEditors: function () {
return this.editors
}, register: function () {
if (this._super(), this.editors)for (var a in this.editors)this.editors.hasOwnProperty(a) && this.editors[a].register()
}, unregister: function () {
if (this._super(), this.editors)for (var a in this.editors)this.editors.hasOwnProperty(a) && this.editors[a].unregister()
}, getNumColumns: function () {
return Math.max(Math.min(12, this.maxwidth), 3)
}, enable: function () {
if (this.editjson_button && (this.editjson_button.disabled = !1), this.addproperty_button && (this.addproperty_button.disabled = !1), this._super(), this.editors)for (var a in this.editors)this.editors.hasOwnProperty(a) && this.editors[a].enable()
}, disable: function () {
if (this.editjson_button && (this.editjson_button.disabled = !0), this.addproperty_button && (this.addproperty_button.disabled = !0), this.hideEditJSON(), this._super(), this.editors)for (var a in this.editors)this.editors.hasOwnProperty(a) && this.editors[a].disable()
}, layoutEditors: function () {
var a, b, c = this;
if (this.row_container) {
this.property_order = Object.keys(this.editors), this.property_order = this.property_order.sort(function (a, b) {
var d = c.editors[a].schema.propertyOrder, e = c.editors[b].schema.propertyOrder;
return "number" != typeof d && (d = 1e3), "number" != typeof e && (e = 1e3), d - e
});
var e;
if ("grid" === this.format) {
var f = [];
for (d(this.property_order, function (a, b) {
var d = c.editors[b];
if (!d.property_removed) {
for (var e = !1, g = d.options.hidden ? 0 : d.options.grid_columns || d.getNumColumns(), h = d.options.hidden ? 0 : d.container.offsetHeight, i = 0; i < f.length; i++)f[i].width + g <= 12 && (!h || .5 * f[i].minh < h && 2 * f[i].maxh > h) && (e = i);
e === !1 && (f.push({
width: 0,
minh: 999999,
maxh: 0,
editors: []
}), e = f.length - 1), f[e].editors.push({
key: b,
width: g,
height: h
}), f[e].width += g, f[e].minh = Math.min(f[e].minh, h), f[e].maxh = Math.max(f[e].maxh, h)
}
}), a = 0; a < f.length; a++)if (f[a].width < 12) {
var g = !1, h = 0;
for (b = 0; b < f[a].editors.length; b++)g === !1 ? g = b : f[a].editors[b].width > f[a].editors[g].width && (g = b), f[a].editors[b].width *= 12 / f[a].width, f[a].editors[b].width = Math.floor(f[a].editors[b].width), h += f[a].editors[b].width;
12 > h && (f[a].editors[g].width += 12 - h), f[a].width = 12
}
if (this.layout === JSON.stringify(f))return !1;
for (this.layout = JSON.stringify(f), e = document.createElement("div"), a = 0; a < f.length; a++) {
var i = this.theme.getGridRow();
for (e.appendChild(i), b = 0; b < f[a].editors.length; b++) {
var j = f[a].editors[b].key, k = this.editors[j];
k.options.hidden ? k.container.style.display = "none" : this.theme.setGridColumnSize(k.container, f[a].editors[b].width), i.appendChild(k.container)
}
}
} else e = document.createElement("div"), d(this.property_order, function (a, b) {
var d = c.editors[b];
if (!d.property_removed) {
var f = c.theme.getGridRow();
e.appendChild(f), d.options.hidden ? d.container.style.display = "none" : c.theme.setGridColumnSize(d.container, 12), f.appendChild(d.container)
}
});
this.row_container.innerHTML = "", this.row_container.appendChild(e)
}
}, getPropertySchema: function (a) {
var b = this.schema.properties[a] || {};
b = c({}, b);
var d = this.schema.properties[a] ? !0 : !1;
if (this.schema.patternProperties)for (var e in this.schema.patternProperties)if (this.schema.patternProperties.hasOwnProperty(e)) {
var f = new RegExp(e);
f.test(a) && (b.allOf = b.allOf || [], b.allOf.push(this.schema.patternProperties[e]), d = !0)
}
return !d && this.schema.additionalProperties && "object" == typeof this.schema.additionalProperties && (b = c({}, this.schema.additionalProperties)), b
}, preBuild: function () {
this._super(), this.editors = {}, this.cached_editors = {};
var a = this;
if (this.format = this.options.layout || this.options.object_layout || this.schema.format || this.jsoneditor.options.object_layout || "normal", this.schema.properties = this.schema.properties || {}, this.minwidth = 0, this.maxwidth = 0, this.options.table_row)d(this.schema.properties, function (b, c) {
var d = a.jsoneditor.getEditorClass(c);
a.editors[b] = a.jsoneditor.createEditor(d, {
jsoneditor: a.jsoneditor,
schema: c,
path: a.path + "." + b,
parent: a,
compact: !0,
required: !0
}), a.editors[b].preBuild();
var e = a.editors[b].options.hidden ? 0 : a.editors[b].options.grid_columns || a.editors[b].getNumColumns();
a.minwidth += e, a.maxwidth += e
}), this.no_link_holder = !0; else {
if (this.options.table)throw"Not supported yet";
this.defaultProperties = this.schema.defaultProperties || Object.keys(this.schema.properties), a.maxwidth += 1, d(this.defaultProperties, function (b, c) {
a.addObjectProperty(c, !0), a.editors[c] && (a.minwidth = Math.max(a.minwidth, a.editors[c].options.grid_columns || a.editors[c].getNumColumns()), a.maxwidth += a.editors[c].options.grid_columns || a.editors[c].getNumColumns())
})
}
this.property_order = Object.keys(this.editors), this.property_order = this.property_order.sort(function (b, c) {
var d = a.editors[b].schema.propertyOrder, e = a.editors[c].schema.propertyOrder;
return "number" != typeof d && (d = 1e3), "number" != typeof e && (e = 1e3), d - e
})
}, build: function () {
var a = this;
if (this.options.table_row)this.editor_holder = this.container, d(this.editors, function (b, c) {
var d = a.theme.getTableCell();
a.editor_holder.appendChild(d), c.setContainer(d), c.build(), c.postBuild(), a.editors[b].options.hidden && (d.style.display = "none"), a.editors[b].options.input_width && (d.style.width = a.editors[b].options.input_width)
}); else {
if (this.options.table)throw"Not supported yet";
this.header = document.createElement("span"), this.header.textContent = this.getTitle(), this.title = this.theme.getHeader(this.header), this.container.appendChild(this.title), this.container.style.position = "relative", this.editjson_holder = this.theme.getModal(), this.editjson_textarea = this.theme.getTextareaInput(), this.editjson_textarea.style.height = "170px", this.editjson_textarea.style.width = "300px", this.editjson_textarea.style.display = "block", this.editjson_save = this.getButton("Save", "save", "Save"), this.editjson_save.addEventListener("click", function (b) {
b.preventDefault(), b.stopPropagation(), a.saveJSON()
}), this.editjson_cancel = this.getButton("Cancel", "cancel", "Cancel"), this.editjson_cancel.addEventListener("click", function (b) {
b.preventDefault(), b.stopPropagation(), a.hideEditJSON()
}), this.editjson_holder.appendChild(this.editjson_textarea), this.editjson_holder.appendChild(this.editjson_save), this.editjson_holder.appendChild(this.editjson_cancel), this.addproperty_holder = this.theme.getModal(), this.addproperty_list = document.createElement("div"), this.addproperty_list.style.width = "295px", this.addproperty_list.style.maxHeight = "160px", this.addproperty_list.style.padding = "5px 0", this.addproperty_list.style.overflowY = "auto", this.addproperty_list.style.overflowX = "hidden", this.addproperty_list.style.paddingLeft = "5px", this.addproperty_list.setAttribute("class", "property-selector"), this.addproperty_add = this.getButton("add", "add", "add"), this.addproperty_input = this.theme.getFormInputField("text"), this.addproperty_input.setAttribute("placeholder", "Property name..."), this.addproperty_input.style.width = "220px", this.addproperty_input.style.marginBottom = "0", this.addproperty_input.style.display = "inline-block", this.addproperty_add.addEventListener("click", function (b) {
if (b.preventDefault(), b.stopPropagation(), a.addproperty_input.value) {
if (a.editors[a.addproperty_input.value])return void window.alert("there is already a property with that name");
a.addObjectProperty(a.addproperty_input.value), a.editors[a.addproperty_input.value] && a.editors[a.addproperty_input.value].disable(), a.onChange(!0)
}
}), this.addproperty_holder.appendChild(this.addproperty_list), this.addproperty_holder.appendChild(this.addproperty_input), this.addproperty_holder.appendChild(this.addproperty_add);
var b = document.createElement("div");
b.style.clear = "both", this.addproperty_holder.appendChild(b), this.schema.description && (this.description = this.theme.getDescription(this.schema.description), this.container.appendChild(this.description)), this.error_holder = document.createElement("div"), this.container.appendChild(this.error_holder), this.editor_holder = this.theme.getIndentedPanel(), this.editor_holder.style.paddingBottom = "0", this.container.appendChild(this.editor_holder), this.row_container = this.theme.getGridContainer(), this.editor_holder.appendChild(this.row_container), d(this.editors, function (b, c) {
var d = a.theme.getGridColumn();
a.row_container.appendChild(d), c.setContainer(d), c.build(), c.postBuild()
}), this.title_controls = this.theme.getHeaderButtonHolder(), this.editjson_controls = this.theme.getHeaderButtonHolder(), this.addproperty_controls = this.theme.getHeaderButtonHolder(), this.title.appendChild(this.title_controls), this.title.appendChild(this.editjson_controls), this.title.appendChild(this.addproperty_controls), this.collapsed = !1, this.toggle_button = this.getButton("", "collapse", "Collapse"), this.title_controls.appendChild(this.toggle_button), this.toggle_button.addEventListener("click", function (b) {
b.preventDefault(), b.stopPropagation(), a.collapsed ? (a.editor_holder.style.display = "", a.collapsed = !1, a.setButtonText(a.toggle_button, "", "collapse", "Collapse")) : (a.editor_holder.style.display = "none", a.collapsed = !0, a.setButtonText(a.toggle_button, "", "expand", "Expand"))
}), this.options.collapsed && e(this.toggle_button, "click"), this.schema.options && "undefined" != typeof this.schema.options.disable_collapse ? this.schema.options.disable_collapse && (this.toggle_button.style.display = "none") : this.jsoneditor.options.disable_collapse && (this.toggle_button.style.display = "none"), this.editjson_button = this.getButton("JSON", "edit", "Edit JSON"), this.editjson_button.addEventListener("click", function (b) {
b.preventDefault(), b.stopPropagation(), a.toggleEditJSON()
}), this.editjson_controls.appendChild(this.editjson_button), this.editjson_controls.appendChild(this.editjson_holder), this.schema.options && "undefined" != typeof this.schema.options.disable_edit_json ? this.schema.options.disable_edit_json && (this.editjson_button.style.display = "none") : this.jsoneditor.options.disable_edit_json && (this.editjson_button.style.display = "none"), this.addproperty_button = this.getButton("Properties", "edit", "Object Properties"), this.addproperty_button.addEventListener("click", function (b) {
b.preventDefault(), b.stopPropagation(), a.toggleAddProperty()
}), this.addproperty_controls.appendChild(this.addproperty_button), this.addproperty_controls.appendChild(this.addproperty_holder), this.refreshAddProperties()
}
this.options.table_row ? (this.editor_holder = this.container, d(this.property_order, function (b, c) {
a.editor_holder.appendChild(a.editors[c].container)
})) : (this.layoutEditors(), this.layoutEditors())
}, showEditJSON: function () {
this.editjson_holder && (this.hideAddProperty(), this.editjson_holder.style.left = this.editjson_button.offsetLeft + "px", this.editjson_holder.style.top = this.editjson_button.offsetTop + this.editjson_button.offsetHeight + "px", this.editjson_textarea.value = JSON.stringify(this.getValue(), null, 2), this.disable(), this.editjson_holder.style.display = "", this.editjson_button.disabled = !1, this.editing_json = !0)
}, hideEditJSON: function () {
this.editjson_holder && this.editing_json && (this.editjson_holder.style.display = "none", this.enable(), this.editing_json = !1)
}, saveJSON: function () {
if (this.editjson_holder)try {
var a = JSON.parse(this.editjson_textarea.value);
this.setValue(a), this.hideEditJSON()
} catch (b) {
throw window.alert("invalid JSON"), b
}
}, toggleEditJSON: function () {
this.editing_json ? this.hideEditJSON() : this.showEditJSON()
}, insertPropertyControlUsingPropertyOrder: function (a, b, c) {
var d;
this.schema.properties[a] && (d = this.schema.properties[a].propertyOrder), "number" != typeof d && (d = 1e3), b.propertyOrder = d;
for (var e = 0; e < c.childNodes.length; e++) {
var f = c.childNodes[e];
if (b.propertyOrder < f.propertyOrder) {
this.addproperty_list.insertBefore(b, f), b = null;
break
}
}
b && this.addproperty_list.appendChild(b)
}, addPropertyCheckbox: function (a) {
var b, c, d, e, f = this;
return b = f.theme.getCheckbox(), b.style.width = "auto", d = this.schema.properties[a] && this.schema.properties[a].title ? this.schema.properties[a].title : a, c = f.theme.getCheckboxLabel(d), e = f.theme.getFormControl(c, b), e.style.paddingBottom = e.style.marginBottom = e.style.paddingTop = e.style.marginTop = 0, e.style.height = "auto", this.insertPropertyControlUsingPropertyOrder(a, e, this.addproperty_list), b.checked = a in this.editors, b.addEventListener("change", function () {
b.checked ? f.addObjectProperty(a) : f.removeObjectProperty(a), f.onChange(!0)
}), f.addproperty_checkboxes[a] = b, b
}, showAddProperty: function () {
this.addproperty_holder && (this.hideEditJSON(), this.addproperty_holder.style.left = this.addproperty_button.offsetLeft + "px", this.addproperty_holder.style.top = this.addproperty_button.offsetTop + this.addproperty_button.offsetHeight + "px", this.disable(), this.adding_property = !0, this.addproperty_button.disabled = !1, this.addproperty_holder.style.display = "", this.refreshAddProperties())
}, hideAddProperty: function () {
this.addproperty_holder && this.adding_property && (this.addproperty_holder.style.display = "none", this.enable(), this.adding_property = !1)
}, toggleAddProperty: function () {
this.adding_property ? this.hideAddProperty() : this.showAddProperty()
}, removeObjectProperty: function (a) {
this.editors[a] && (this.editors[a].unregister(), delete this.editors[a], this.refreshValue(), this.layoutEditors())
}, addObjectProperty: function (a, b) {
var c = this;
if (!this.editors[a]) {
if (this.cached_editors[a]) {
if (this.editors[a] = this.cached_editors[a], b)return;
this.editors[a].register()
} else {
if (!(this.canHaveAdditionalProperties() || this.schema.properties && this.schema.properties[a]))return;
var d = c.getPropertySchema(a), e = c.jsoneditor.getEditorClass(d);
if (c.editors[a] = c.jsoneditor.createEditor(e, {
jsoneditor: c.jsoneditor,
schema: d,
path: c.path + "." + a,
parent: c
}), c.editors[a].preBuild(), !b) {
var f = c.theme.getChildEditorHolder();
c.editor_holder.appendChild(f), c.editors[a].setContainer(f), c.editors[a].build(), c.editors[a].postBuild()
}
c.cached_editors[a] = c.editors[a]
}
b || (c.refreshValue(), c.layoutEditors())
}
}, onChildEditorChange: function (a) {
this.refreshValue(), this._super(a)
}, canHaveAdditionalProperties: function () {
return "boolean" == typeof this.schema.additionalProperties ? this.schema.additionalProperties : !this.jsoneditor.options.no_additional_properties
}, destroy: function () {
d(this.cached_editors, function (a, b) {
b.destroy()
}), this.editor_holder && (this.editor_holder.innerHTML = ""), this.title && this.title.parentNode && this.title.parentNode.removeChild(this.title), this.error_holder && this.error_holder.parentNode && this.error_holder.parentNode.removeChild(this.error_holder), this.editors = null, this.cached_editors = null, this.editor_holder && this.editor_holder.parentNode && this.editor_holder.parentNode.removeChild(this.editor_holder), this.editor_holder = null, this._super()
}, getValue: function () {
var a = this._super();
if (this.jsoneditor.options.remove_empty_properties || this.options.remove_empty_properties)for (var b in a)a.hasOwnProperty(b) && (a[b] || delete a[b]);
return a
}, refreshValue: function () {
this.value = {};
for (var a in this.editors)this.editors.hasOwnProperty(a) && (this.value[a] = this.editors[a].getValue());
this.adding_property && this.refreshAddProperties()
}, refreshAddProperties: function () {
if (this.options.disable_properties || this.options.disable_properties !== !1 && this.jsoneditor.options.disable_properties)return void(this.addproperty_controls.style.display = "none");
var a, b = !1, c = !1, d = 0, e = !1;
for (a in this.editors)this.editors.hasOwnProperty(a) && d++;
b = this.canHaveAdditionalProperties() && !("undefined" != typeof this.schema.maxProperties && d >= this.schema.maxProperties), this.addproperty_checkboxes && (this.addproperty_list.innerHTML = ""), this.addproperty_checkboxes = {};
for (a in this.cached_editors)this.cached_editors.hasOwnProperty(a) && (this.addPropertyCheckbox(a), this.isRequired(this.cached_editors[a]) && a in this.editors && (this.addproperty_checkboxes[a].disabled = !0), "undefined" != typeof this.schema.minProperties && d <= this.schema.minProperties ? (this.addproperty_checkboxes[a].disabled = this.addproperty_checkboxes[a].checked, this.addproperty_checkboxes[a].checked || (e = !0)) : a in this.editors ? (e = !0, c = !0) : b || this.schema.properties.hasOwnProperty(a) ? (this.addproperty_checkboxes[a].disabled = !1, e = !0) : this.addproperty_checkboxes[a].disabled = !0);
this.canHaveAdditionalProperties() && (e = !0);
for (a in this.schema.properties)this.schema.properties.hasOwnProperty(a) && (this.cached_editors[a] || (e = !0, this.addPropertyCheckbox(a)));
e ? this.canHaveAdditionalProperties() ? b ? this.addproperty_add.disabled = !1 : this.addproperty_add.disabled = !0 : (this.addproperty_add.style.display = "none", this.addproperty_input.style.display = "none") : (this.hideAddProperty(), this.addproperty_controls.style.display = "none")
}, isRequired: function (a) {
return "boolean" == typeof a.schema.required ? a.schema.required : Array.isArray(this.schema.required) ? this.schema.required.indexOf(a.key) > -1 : this.jsoneditor.options.required_by_default ? !0 : !1
}, setValue: function (a, b) {
var c = this;
a = a || {}, ("object" != typeof a || Array.isArray(a)) && (a = {}), d(this.cached_editors, function (d, e) {
"undefined" != typeof a[d] ? (c.addObjectProperty(d), e.setValue(a[d], b)) : b || c.isRequired(e) ? e.setValue(e.getDefault(), b) : c.removeObjectProperty(d)
}), d(a, function (a, d) {
c.cached_editors[a] || (c.addObjectProperty(a), c.editors[a] && c.editors[a].setValue(d, b))
}), this.refreshValue(), this.layoutEditors(), this.onChange()
}, showValidationErrors: function (a) {
var b = this, c = [], e = [];
if (d(a, function (a, d) {
d.path === b.path ? c.push(d) : e.push(d)
}), this.error_holder)if (c.length) {
this.error_holder.innerHTML = "", this.error_holder.style.display = "", d(c, function (a, c) {
b.error_holder.appendChild(b.theme.getErrorMessage(c.message))
})
} else this.error_holder.style.display = "none";
this.options.table_row && (c.length ? this.theme.addTableRowError(this.container) : this.theme.removeTableRowError(this.container)), d(this.editors, function (a, b) {
b.showValidationErrors(e)
})
}
}), f.defaults.editors.array = f.AbstractEditor.extend({
getDefault: function () {
return this.schema["default"] || []
}, register: function () {
if (this._super(), this.rows)for (var a = 0; a < this.rows.length; a++)this.rows[a].register()
}, unregister: function () {
if (this._super(), this.rows)for (var a = 0; a < this.rows.length; a++)this.rows[a].unregister()
}, getNumColumns: function () {
var a = this.getItemInfo(0);
return this.tabs_holder ? Math.max(Math.min(12, a.width + 2), 4) : a.width
}, enable: function () {
if (this.add_row_button && (this.add_row_button.disabled = !1), this.remove_all_rows_button && (this.remove_all_rows_button.disabled = !1), this.delete_last_row_button && (this.delete_last_row_button.disabled = !1), this.rows)for (var a = 0; a < this.rows.length; a++)this.rows[a].enable(), this.rows[a].moveup_button && (this.rows[a].moveup_button.disabled = !1), this.rows[a].movedown_button && (this.rows[a].movedown_button.disabled = !1), this.rows[a].delete_button && (this.rows[a].delete_button.disabled = !1);
this._super()
}, disable: function () {
if (this.add_row_button && (this.add_row_button.disabled = !0), this.remove_all_rows_button && (this.remove_all_rows_button.disabled = !0), this.delete_last_row_button && (this.delete_last_row_button.disabled = !0), this.rows)for (var a = 0; a < this.rows.length; a++)this.rows[a].disable(), this.rows[a].moveup_button && (this.rows[a].moveup_button.disabled = !0), this.rows[a].movedown_button && (this.rows[a].movedown_button.disabled = !0), this.rows[a].delete_button && (this.rows[a].delete_button.disabled = !0);
this._super()
}, preBuild: function () {
this._super(), this.rows = [], this.row_cache = [], this.hide_delete_buttons = this.options.disable_array_delete || this.jsoneditor.options.disable_array_delete, this.hide_move_buttons = this.options.disable_array_reorder || this.jsoneditor.options.disable_array_reorder, this.hide_add_button = this.options.disable_array_add || this.jsoneditor.options.disable_array_add
}, build: function () {
this.options.compact ? (this.panel = this.theme.getIndentedPanel(), this.container.appendChild(this.panel), this.controls = this.theme.getButtonHolder(), this.panel.appendChild(this.controls), this.row_holder = document.createElement("div"), this.panel.appendChild(this.row_holder)) : (this.header = document.createElement("span"), this.header.textContent = this.getTitle(), this.title = this.theme.getHeader(this.header, this.isRequired()), this.container.appendChild(this.title), this.title_controls = this.theme.getHeaderButtonHolder(), this.title.appendChild(this.title_controls), this.schema.description && (this.description = this.theme.getDescription(this.schema.description), this.container.appendChild(this.description)), this.error_holder = document.createElement("div"), this.container.appendChild(this.error_holder), "tabs" === this.schema.format ? (this.controls = this.theme.getHeaderButtonHolder(), this.title.appendChild(this.controls), this.tabs_holder = this.theme.getTabHolder(), this.container.appendChild(this.tabs_holder), this.row_holder = this.theme.getTabContentHolder(this.tabs_holder), this.active_tab = null) : (this.panel = this.theme.getIndentedPanel(), this.container.appendChild(this.panel), this.row_holder = document.createElement("div"), this.panel.appendChild(this.row_holder), this.controls = this.theme.getButtonHolder(), this.panel.appendChild(this.controls))), this.addControls()
}, onChildEditorChange: function (a) {
this.refreshValue(), this.refreshTabs(!0), this._super(a)
}, getItemTitle: function () {
if (!this.item_title)if (this.schema.items && !Array.isArray(this.schema.items)) {
var a = this.jsoneditor.expandRefs(this.schema.items);
this.item_title = a.title || "item"
} else this.item_title = "item";
return this.item_title
}, getItemSchema: function (a) {
return Array.isArray(this.schema.items) ? a >= this.schema.items.length ? this.schema.additionalItems === !0 ? {} : this.schema.additionalItems ? c({}, this.schema.additionalItems) : void 0 : c({}, this.schema.items[a]) : this.schema.items ? c({}, this.schema.items) : {}
}, getItemInfo: function (a) {
var b = this.getItemSchema(a);
this.item_info = this.item_info || {};
var c = JSON.stringify(b);
return "undefined" != typeof this.item_info[c] ? this.item_info[c] : (b = this.jsoneditor.expandRefs(b), this.item_info[c] = {
title: b.title || "item",
"default": b["default"],
width: 12,
child_editors: b.properties || b.items
}, this.item_info[c])
}, getElementEditor: function (a) {
var b = this.getItemInfo(a), c = this.getItemSchema(a);
c = this.jsoneditor.expandRefs(c), c.title = b.title + " " + (a + 1);
var d, e = this.jsoneditor.getEditorClass(c);
d = this.tabs_holder ? this.theme.getTabContent() : b.child_editors ? this.theme.getChildEditorHolder() : this.theme.getIndentedPanel(), this.row_holder.appendChild(d);
var f = this.jsoneditor.createEditor(e, {
jsoneditor: this.jsoneditor,
schema: c,
container: d,
path: this.path + "." + a,
parent: this,
required: !0
});
return f.preBuild(), f.build(), f.postBuild(), f.title_controls || (f.array_controls = this.theme.getButtonHolder(), d.appendChild(f.array_controls)), f
}, destroy: function () {
this.empty(!0), this.title && this.title.parentNode && this.title.parentNode.removeChild(this.title), this.description && this.description.parentNode && this.description.parentNode.removeChild(this.description), this.row_holder && this.row_holder.parentNode && this.row_holder.parentNode.removeChild(this.row_holder), this.controls && this.controls.parentNode && this.controls.parentNode.removeChild(this.controls), this.panel && this.panel.parentNode && this.panel.parentNode.removeChild(this.panel), this.rows = this.row_cache = this.title = this.description = this.row_holder = this.panel = this.controls = null, this._super()
}, empty: function (a) {
if (this.rows) {
var b = this;
d(this.rows, function (c, d) {
a && (d.tab && d.tab.parentNode && d.tab.parentNode.removeChild(d.tab), b.destroyRow(d, !0), b.row_cache[c] = null), b.rows[c] = null
}), b.rows = [], a && (b.row_cache = [])
}
}, destroyRow: function (a, b) {
var c = a.container;
b ? (a.destroy(), c.parentNode && c.parentNode.removeChild(c), a.tab && a.tab.parentNode && a.tab.parentNode.removeChild(a.tab)) : (a.tab && (a.tab.style.display = "none"), c.style.display = "none", a.unregister())
}, getMax: function () {
return Array.isArray(this.schema.items) && this.schema.additionalItems === !1 ? Math.min(this.schema.items.length, this.schema.maxItems || 1 / 0) : this.schema.maxItems || 1 / 0
}, refreshTabs: function (a) {
var b = this;
d(this.rows, function (c, d) {
d.tab && (a ? d.tab_text.textContent = d.getHeaderText() : d.tab === b.active_tab ? (b.theme.markTabActive(d.tab), d.container.style.display = "") : (b.theme.markTabInactive(d.tab), d.container.style.display = "none"))
})
}, setValue: function (a, b) {
a = a || [], Array.isArray(a) || (a = [a]);
var c = JSON.stringify(a);
if (c !== this.serialized) {
if (this.schema.minItems)for (; a.length < this.schema.minItems;)a.push(this.getItemInfo(a.length)["default"]);
this.getMax() && a.length > this.getMax() && (a = a.slice(0, this.getMax()));
var e = this;
d(a, function (a, c) {
e.rows[a] ? e.rows[a].setValue(c, b) : e.row_cache[a] ? (e.rows[a] = e.row_cache[a], e.rows[a].setValue(c, b), e.rows[a].container.style.display = "", e.rows[a].tab && (e.rows[a].tab.style.display = ""), e.rows[a].register()) : e.addRow(c, b)
});
for (var f = a.length; f < e.rows.length; f++)e.destroyRow(e.rows[f]), e.rows[f] = null;
e.rows = e.rows.slice(0, a.length);
var g = null;
d(e.rows, function (a, b) {
return b.tab === e.active_tab ? (g = b.tab, !1) : void 0
}), !g && e.rows.length && (g = e.rows[0].tab), e.active_tab = g, e.refreshValue(b), e.refreshTabs(!0), e.refreshTabs(), e.onChange()
}
}, refreshValue: function (a) {
var b = this, c = this.value ? this.value.length : 0;
if (this.value = [], d(this.rows, function (a, c) {
b.value[a] = c.getValue()
}), c !== this.value.length || a) {
var e = this.schema.minItems && this.schema.minItems >= this.rows.length;
d(this.rows, function (a, c) {
c.movedown_button && (a === b.rows.length - 1 ? c.movedown_button.style.display = "none" : c.movedown_button.style.display = ""), c.delete_button && (e ? c.delete_button.style.display = "none" : c.delete_button.style.display = ""), b.value[a] = c.getValue()
});
var f = !1;
this.value.length ? 1 === this.value.length ? (this.remove_all_rows_button.style.display = "none", e || this.hide_delete_buttons ? this.delete_last_row_button.style.display = "none" : (this.delete_last_row_button.style.display = "", f = !0)) : e || this.hide_delete_buttons ? (this.delete_last_row_button.style.display = "none", this.remove_all_rows_button.style.display = "none") : (this.delete_last_row_button.style.display = "", this.remove_all_rows_button.style.display = "", f = !0) : (this.delete_last_row_button.style.display = "none", this.remove_all_rows_button.style.display = "none"), this.getMax() && this.getMax() <= this.rows.length || this.hide_add_button ? this.add_row_button.style.display = "none" : (this.add_row_button.style.display = "", f = !0), !this.collapsed && f ? this.controls.style.display = "inline-block" : this.controls.style.display = "none"
}
}, addRow: function (a, b) {
var c = this, e = this.rows.length;
c.rows[e] = this.getElementEditor(e), c.row_cache[e] = c.rows[e], c.tabs_holder && (c.rows[e].tab_text = document.createElement("span"), c.rows[e].tab_text.textContent = c.rows[e].getHeaderText(), c.rows[e].tab = c.theme.getTab(c.rows[e].tab_text), c.rows[e].tab.addEventListener("click", function (a) {
c.active_tab = c.rows[e].tab, c.refreshTabs(), a.preventDefault(), a.stopPropagation()
}), c.theme.addTab(c.tabs_holder, c.rows[e].tab));
var f = c.rows[e].title_controls || c.rows[e].array_controls;
c.hide_delete_buttons || (c.rows[e].delete_button = this.getButton(c.getItemTitle(), "delete", "Delete " + c.getItemTitle()), c.rows[e].delete_button.className += " delete", c.rows[e].delete_button.setAttribute("data-i", e), c.rows[e].delete_button.addEventListener("click", function (a) {
a.preventDefault(), a.stopPropagation();
var b = 1 * this.getAttribute("data-i"), e = c.getValue(), f = [], g = null;
d(e, function (a, d) {
return a === b ? void(c.rows[a].tab === c.active_tab && (c.rows[a + 1] ? g = c.rows[a].tab : a && (g = c.rows[a - 1].tab))) : void f.push(d)
}), c.setValue(f), g && (c.active_tab = g, c.refreshTabs()), c.onChange(!0)
}), f && f.appendChild(c.rows[e].delete_button)), e && !c.hide_move_buttons && (c.rows[e].moveup_button = this.getButton("", "moveup", "Move up"), c.rows[e].moveup_button.className += " moveup", c.rows[e].moveup_button.setAttribute("data-i", e), c.rows[e].moveup_button.addEventListener("click", function (a) {
a.preventDefault(), a.stopPropagation();
var b = 1 * this.getAttribute("data-i");
if (!(0 >= b)) {
var d = c.getValue(), e = d[b - 1];
d[b - 1] = d[b], d[b] = e, c.setValue(d), c.active_tab = c.rows[b - 1].tab, c.refreshTabs(), c.onChange(!0)
}
}), f && f.appendChild(c.rows[e].moveup_button)), c.hide_move_buttons || (c.rows[e].movedown_button = this.getButton("", "movedown", "Move down"), c.rows[e].movedown_button.className += " movedown", c.rows[e].movedown_button.setAttribute("data-i", e), c.rows[e].movedown_button.addEventListener("click", function (a) {
a.preventDefault(), a.stopPropagation();
var b = 1 * this.getAttribute("data-i"), d = c.getValue();
if (!(b >= d.length - 1)) {
var e = d[b + 1];
d[b + 1] = d[b], d[b] = e, c.setValue(d), c.active_tab = c.rows[b + 1].tab, c.refreshTabs(), c.onChange(!0)
}
}), f && f.appendChild(c.rows[e].movedown_button)), a && c.rows[e].setValue(a, b), c.refreshTabs()
}, addControls: function () {
var a = this;
this.collapsed = !1, this.toggle_button = this.getButton("", "collapse", "Collapse"), this.title_controls.appendChild(this.toggle_button);
var b = a.row_holder.style.display, c = a.controls.style.display;
this.toggle_button.addEventListener("click", function (d) {
d.preventDefault(), d.stopPropagation(), a.collapsed ? (a.collapsed = !1, a.panel && (a.panel.style.display = ""), a.row_holder.style.display = b, a.tabs_holder && (a.tabs_holder.style.display = ""), a.controls.style.display = c, a.setButtonText(this, "", "collapse", "Collapse")) : (a.collapsed = !0, a.row_holder.style.display = "none", a.tabs_holder && (a.tabs_holder.style.display = "none"), a.controls.style.display = "none", a.panel && (a.panel.style.display = "none"), a.setButtonText(this, "", "expand", "Expand"))
}), this.options.collapsed && e(this.toggle_button, "click"), this.schema.options && "undefined" != typeof this.schema.options.disable_collapse ? this.schema.options.disable_collapse && (this.toggle_button.style.display = "none") : this.jsoneditor.options.disable_collapse && (this.toggle_button.style.display = "none"), this.add_row_button = this.getButton(this.getItemTitle(), "add", "Add " + this.getItemTitle()), this.add_row_button.addEventListener("click", function (b) {
b.preventDefault(), b.stopPropagation();
var c = a.rows.length;
a.row_cache[c] ? (a.rows[c] = a.row_cache[c], a.rows[c].setValue(a.rows[c].getDefault()), a.rows[c].container.style.display = "", a.rows[c].tab && (a.rows[c].tab.style.display = ""), a.rows[c].register()) : a.addRow(), a.active_tab = a.rows[c].tab, a.refreshTabs(), a.refreshValue(), a.onChange(!0)
}), a.controls.appendChild(this.add_row_button), this.delete_last_row_button = this.getButton("Last " + this.getItemTitle(), "delete", "Delete Last " + this.getItemTitle()),
this.delete_last_row_button.addEventListener("click", function (b) {
b.preventDefault(), b.stopPropagation();
var c = a.getValue(), d = null;
a.rows.length > 1 && a.rows[a.rows.length - 1].tab === a.active_tab && (d = a.rows[a.rows.length - 2].tab), c.pop(), a.setValue(c), d && (a.active_tab = d, a.refreshTabs()), a.onChange(!0)
}), a.controls.appendChild(this.delete_last_row_button), this.remove_all_rows_button = this.getButton("All", "delete", "Delete All"), this.remove_all_rows_button.addEventListener("click", function (b) {
b.preventDefault(), b.stopPropagation(), a.setValue([]), a.onChange(!0)
}), a.controls.appendChild(this.remove_all_rows_button), a.tabs && (this.add_row_button.style.width = "100%", this.add_row_button.style.textAlign = "left", this.add_row_button.style.marginBottom = "3px", this.delete_last_row_button.style.width = "100%", this.delete_last_row_button.style.textAlign = "left", this.delete_last_row_button.style.marginBottom = "3px", this.remove_all_rows_button.style.width = "100%", this.remove_all_rows_button.style.textAlign = "left", this.remove_all_rows_button.style.marginBottom = "3px")
}, showValidationErrors: function (a) {
var b = this, c = [], e = [];
if (d(a, function (a, d) {
d.path === b.path ? c.push(d) : e.push(d)
}), this.error_holder)if (c.length) {
this.error_holder.innerHTML = "", this.error_holder.style.display = "", d(c, function (a, c) {
b.error_holder.appendChild(b.theme.getErrorMessage(c.message))
})
} else this.error_holder.style.display = "none";
d(this.rows, function (a, b) {
b.showValidationErrors(e)
})
}
}), f.defaults.editors.table = f.defaults.editors.array.extend({
register: function () {
if (this._super(), this.rows)for (var a = 0; a < this.rows.length; a++)this.rows[a].register()
}, unregister: function () {
if (this._super(), this.rows)for (var a = 0; a < this.rows.length; a++)this.rows[a].unregister()
}, getNumColumns: function () {
return Math.max(Math.min(12, this.width), 3)
}, preBuild: function () {
var a = this.jsoneditor.expandRefs(this.schema.items || {});
this.item_title = a.title || "row", this.item_default = a["default"] || null, this.item_has_child_editors = a.properties || a.items, this.width = 12, this._super()
}, build: function () {
var a = this;
this.table = this.theme.getTable(), this.container.appendChild(this.table), this.thead = this.theme.getTableHead(), this.table.appendChild(this.thead), this.header_row = this.theme.getTableRow(), this.thead.appendChild(this.header_row), this.row_holder = this.theme.getTableBody(), this.table.appendChild(this.row_holder);
var b = this.getElementEditor(0, !0);
if (this.item_default = b.getDefault(), this.width = b.getNumColumns() + 2, this.options.compact ? (this.panel = document.createElement("div"), this.container.appendChild(this.panel)) : (this.title = this.theme.getHeader(this.getTitle(), this.isRequired()), this.container.appendChild(this.title), this.title_controls = this.theme.getHeaderButtonHolder(), this.title.appendChild(this.title_controls), this.schema.description && (this.description = this.theme.getDescription(this.schema.description), this.container.appendChild(this.description)), this.panel = this.theme.getIndentedPanel(), this.container.appendChild(this.panel), this.error_holder = document.createElement("div"), this.panel.appendChild(this.error_holder)), this.panel.appendChild(this.table), this.controls = this.theme.getButtonHolder(), this.panel.appendChild(this.controls), this.item_has_child_editors)for (var c = b.getChildEditors(), d = b.property_order || Object.keys(c), e = 0; e < d.length; e++) {
var f = a.theme.getTableHeaderCell(c[d[e]].getTitle());
c[d[e]].options.hidden && (f.style.display = "none"), a.header_row.appendChild(f)
} else a.header_row.appendChild(a.theme.getTableHeaderCell(this.item_title));
b.destroy(), this.row_holder.innerHTML = "", this.controls_header_cell = a.theme.getTableHeaderCell(" "), a.header_row.appendChild(this.controls_header_cell), this.addControls()
}, onChildEditorChange: function (a) {
this.refreshValue(), this._super()
}, getItemDefault: function () {
return c({}, {"default": this.item_default})["default"]
}, getItemTitle: function () {
return this.item_title
}, getElementEditor: function (a, b) {
var d = c({}, this.schema.items), e = this.jsoneditor.getEditorClass(d, this.jsoneditor), f = this.row_holder.appendChild(this.theme.getTableRow()), g = f;
this.item_has_child_editors || (g = this.theme.getTableCell(), f.appendChild(g));
var h = this.jsoneditor.createEditor(e, {
jsoneditor: this.jsoneditor,
schema: d,
container: g,
path: this.path + "." + a,
parent: this,
compact: !0,
table_row: !0
});
return h.preBuild(), b || (h.build(), h.postBuild(), h.controls_cell = f.appendChild(this.theme.getTableCell()), h.row = f, h.table_controls = this.theme.getButtonHolder(), h.controls_cell.appendChild(h.table_controls), h.table_controls.style.margin = 0, h.table_controls.style.padding = 0), h
}, destroy: function () {
this.innerHTML = "", this.title && this.title.parentNode && this.title.parentNode.removeChild(this.title), this.description && this.description.parentNode && this.description.parentNode.removeChild(this.description), this.row_holder && this.row_holder.parentNode && this.row_holder.parentNode.removeChild(this.row_holder), this.table && this.table.parentNode && this.table.parentNode.removeChild(this.table), this.panel && this.panel.parentNode && this.panel.parentNode.removeChild(this.panel), this.rows = this.title = this.description = this.row_holder = this.table = this.panel = null, this._super()
}, setValue: function (a, b) {
if (a = a || [], this.schema.minItems)for (; a.length < this.schema.minItems;)a.push(this.getItemDefault());
this.schema.maxItems && a.length > this.schema.maxItems && (a = a.slice(0, this.schema.maxItems));
var c = JSON.stringify(a);
if (c !== this.serialized) {
var e = !1, f = this;
d(a, function (a, b) {
f.rows[a] ? f.rows[a].setValue(b) : (f.addRow(b), e = !0)
});
for (var g = a.length; g < f.rows.length; g++) {
var h = f.rows[g].container;
f.item_has_child_editors || f.rows[g].row.parentNode.removeChild(f.rows[g].row), f.rows[g].destroy(), h.parentNode && h.parentNode.removeChild(h), f.rows[g] = null, e = !0
}
f.rows = f.rows.slice(0, a.length), f.refreshValue(), (e || b) && f.refreshRowButtons(), f.onChange()
}
}, refreshRowButtons: function () {
var a = this, b = this.schema.minItems && this.schema.minItems >= this.rows.length, c = !1;
d(this.rows, function (d, e) {
e.movedown_button && (d === a.rows.length - 1 ? e.movedown_button.style.display = "none" : (c = !0, e.movedown_button.style.display = "")), e.delete_button && (b ? e.delete_button.style.display = "none" : (c = !0, e.delete_button.style.display = "")), e.moveup_button && (c = !0)
}), d(this.rows, function (a, b) {
c ? b.controls_cell.style.display = "" : b.controls_cell.style.display = "none"
}), c ? this.controls_header_cell.style.display = "" : this.controls_header_cell.style.display = "none";
var e = !1;
this.value.length ? 1 === this.value.length || this.hide_delete_buttons ? (this.table.style.display = "", this.remove_all_rows_button.style.display = "none", b || this.hide_delete_buttons ? this.delete_last_row_button.style.display = "none" : (this.delete_last_row_button.style.display = "", e = !0)) : (this.table.style.display = "", b || this.hide_delete_buttons ? (this.delete_last_row_button.style.display = "none", this.remove_all_rows_button.style.display = "none") : (this.delete_last_row_button.style.display = "", this.remove_all_rows_button.style.display = "", e = !0)) : (this.delete_last_row_button.style.display = "none", this.remove_all_rows_button.style.display = "none", this.table.style.display = "none"), this.schema.maxItems && this.schema.maxItems <= this.rows.length || this.hide_add_button ? this.add_row_button.style.display = "none" : (this.add_row_button.style.display = "", e = !0), e ? this.controls.style.display = "" : this.controls.style.display = "none"
}, refreshValue: function () {
var a = this;
this.value = [], d(this.rows, function (b, c) {
a.value[b] = c.getValue()
}), this.serialized = JSON.stringify(this.value)
}, addRow: function (a) {
var b = this, c = this.rows.length;
b.rows[c] = this.getElementEditor(c);
var e = b.rows[c].table_controls;
this.hide_delete_buttons || (b.rows[c].delete_button = this.getButton("", "delete", "Delete"), b.rows[c].delete_button.className += " delete", b.rows[c].delete_button.setAttribute("data-i", c), b.rows[c].delete_button.addEventListener("click", function (a) {
a.preventDefault(), a.stopPropagation();
var c = 1 * this.getAttribute("data-i"), e = b.getValue(), f = [];
d(e, function (a, b) {
a !== c && f.push(b)
}), b.setValue(f), b.onChange(!0)
}), e.appendChild(b.rows[c].delete_button)), c && !this.hide_move_buttons && (b.rows[c].moveup_button = this.getButton("", "moveup", "Move up"), b.rows[c].moveup_button.className += " moveup", b.rows[c].moveup_button.setAttribute("data-i", c), b.rows[c].moveup_button.addEventListener("click", function (a) {
a.preventDefault(), a.stopPropagation();
var c = 1 * this.getAttribute("data-i");
if (!(0 >= c)) {
var d = b.getValue(), e = d[c - 1];
d[c - 1] = d[c], d[c] = e, b.setValue(d), b.onChange(!0)
}
}), e.appendChild(b.rows[c].moveup_button)), this.hide_move_buttons || (b.rows[c].movedown_button = this.getButton("", "movedown", "Move down"), b.rows[c].movedown_button.className += " movedown", b.rows[c].movedown_button.setAttribute("data-i", c), b.rows[c].movedown_button.addEventListener("click", function (a) {
a.preventDefault(), a.stopPropagation();
var c = 1 * this.getAttribute("data-i"), d = b.getValue();
if (!(c >= d.length - 1)) {
var e = d[c + 1];
d[c + 1] = d[c], d[c] = e, b.setValue(d), b.onChange(!0)
}
}), e.appendChild(b.rows[c].movedown_button)), a && b.rows[c].setValue(a)
}, addControls: function () {
var a = this;
this.collapsed = !1, this.toggle_button = this.getButton("", "collapse", "Collapse"), this.title_controls && (this.title_controls.appendChild(this.toggle_button), this.toggle_button.addEventListener("click", function (b) {
b.preventDefault(), b.stopPropagation(), a.collapsed ? (a.collapsed = !1, a.panel.style.display = "", a.setButtonText(this, "", "collapse", "Collapse")) : (a.collapsed = !0, a.panel.style.display = "none", a.setButtonText(this, "", "expand", "Expand"))
}), this.options.collapsed && e(this.toggle_button, "click"), this.schema.options && "undefined" != typeof this.schema.options.disable_collapse ? this.schema.options.disable_collapse && (this.toggle_button.style.display = "none") : this.jsoneditor.options.disable_collapse && (this.toggle_button.style.display = "none")), this.add_row_button = this.getButton(this.getItemTitle(), "add", "Add " + this.getItemTitle()), this.add_row_button.addEventListener("click", function (b) {
b.preventDefault(), b.stopPropagation(), a.addRow(), a.refreshValue(), a.refreshRowButtons(), a.onChange(!0)
}), a.controls.appendChild(this.add_row_button), this.delete_last_row_button = this.getButton("Last " + this.getItemTitle(), "delete", "Delete Last " + this.getItemTitle()), this.delete_last_row_button.addEventListener("click", function (b) {
b.preventDefault(), b.stopPropagation();
var c = a.getValue();
c.pop(), a.setValue(c), a.onChange(!0)
}), a.controls.appendChild(this.delete_last_row_button), this.remove_all_rows_button = this.getButton("All", "delete", "Delete All"), this.remove_all_rows_button.addEventListener("click", function (b) {
b.preventDefault(), b.stopPropagation(), a.setValue([]), a.onChange(!0)
}), a.controls.appendChild(this.remove_all_rows_button)
}
}), f.defaults.editors.multiple = f.AbstractEditor.extend({
register: function () {
if (this.editors) {
for (var a = 0; a < this.editors.length; a++)this.editors[a] && this.editors[a].unregister();
this.editors[this.type] && this.editors[this.type].register()
}
this._super()
}, unregister: function () {
if (this._super(), this.editors)for (var a = 0; a < this.editors.length; a++)this.editors[a] && this.editors[a].unregister()
}, getNumColumns: function () {
return this.editors[this.type] ? Math.max(this.editors[this.type].getNumColumns(), 4) : 4
}, enable: function () {
if (this.editors)for (var a = 0; a < this.editors.length; a++)this.editors[a] && this.editors[a].enable();
this.switcher.disabled = !1, this._super()
}, disable: function () {
if (this.editors)for (var a = 0; a < this.editors.length; a++)this.editors[a] && this.editors[a].disable();
this.switcher.disabled = !0, this._super()
}, switchEditor: function (a) {
var b = this;
this.editors[a] || this.buildChildEditor(a), b.type = a, b.register();
var c = b.getValue();
d(b.editors, function (a, d) {
d && (b.type === a ? (b.keep_values && d.setValue(c, !0), d.container.style.display = "") : d.container.style.display = "none")
}), b.refreshValue(), b.refreshHeaderText()
}, buildChildEditor: function (a) {
var b = this, d = this.types[a], e = b.theme.getChildEditorHolder();
b.editor_holder.appendChild(e);
var f;
"string" == typeof d ? (f = c({}, b.schema), f.type = d) : (f = c({}, b.schema, d), f = b.jsoneditor.expandRefs(f), d.required && Array.isArray(d.required) && b.schema.required && Array.isArray(b.schema.required) && (f.required = b.schema.required.concat(d.required)));
var g = b.jsoneditor.getEditorClass(f);
b.editors[a] = b.jsoneditor.createEditor(g, {
jsoneditor: b.jsoneditor,
schema: f,
container: e,
path: b.path,
parent: b,
required: !0
}), b.editors[a].preBuild(), b.editors[a].build(), b.editors[a].postBuild(), b.editors[a].header && (b.editors[a].header.style.display = "none"), b.editors[a].option = b.switcher_options[a], e.addEventListener("change_header_text", function () {
b.refreshHeaderText()
}), a !== b.type && (e.style.display = "none")
}, preBuild: function () {
if (this.types = [], this.type = 0, this.editors = [], this.validators = [], this.keep_values = !0, "undefined" != typeof this.jsoneditor.options.keep_oneof_values && (this.keep_values = this.jsoneditor.options.keep_oneof_values), "undefined" != typeof this.options.keep_oneof_values && (this.keep_values = this.options.keep_oneof_values), this.schema.oneOf)this.oneOf = !0, this.types = this.schema.oneOf, d(this.types, function (a, b) {
}), delete this.schema.oneOf; else {
if (this.schema.type && "any" !== this.schema.type)Array.isArray(this.schema.type) ? this.types = this.schema.type : this.types = [this.schema.type]; else if (this.types = ["string", "number", "integer", "boolean", "object", "array", "null"], this.schema.disallow) {
var a = this.schema.disallow;
"object" == typeof a && Array.isArray(a) || (a = [a]);
var b = [];
d(this.types, function (c, d) {
-1 === a.indexOf(d) && b.push(d)
}), this.types = b
}
delete this.schema.type
}
this.display_text = this.getDisplayText(this.types)
}, build: function () {
var a = this, b = this.container;
this.header = this.label = this.theme.getFormInputLabel(this.getTitle(), this.isRequired()), this.container.appendChild(this.header), this.switcher = this.theme.getSwitcher(this.display_text), b.appendChild(this.switcher), this.switcher.addEventListener("change", function (b) {
b.preventDefault(), b.stopPropagation(), a.switchEditor(a.display_text.indexOf(this.value)), a.onChange(!0)
}), this.editor_holder = document.createElement("div"), b.appendChild(this.editor_holder), this.switcher_options = this.theme.getSwitcherOptions(this.switcher), d(this.types, function (b, d) {
a.editors[b] = !1;
var e;
"string" == typeof d ? (e = c({}, a.schema), e.type = d) : (e = c({}, a.schema, d), d.required && Array.isArray(d.required) && a.schema.required && Array.isArray(a.schema.required) && (e.required = a.schema.required.concat(d.required))), a.validators[b] = new f.Validator(a.jsoneditor, e)
}), this.switchEditor(0)
}, onChildEditorChange: function (a) {
this.editors[this.type] && (this.refreshValue(), this.refreshHeaderText()), this._super()
}, refreshHeaderText: function () {
var a = this.getDisplayText(this.types);
d(this.switcher_options, function (b, c) {
c.textContent = a[b]
})
}, refreshValue: function () {
this.value = this.editors[this.type].getValue()
}, setValue: function (a, b) {
var c = this;
d(this.validators, function (b, d) {
return d.validate(a).length ? void 0 : (c.type = b, c.switcher.value = c.display_text[b], !1)
}), this.switchEditor(this.type), this.editors[this.type].setValue(a, b), this.refreshValue(), c.onChange()
}, destroy: function () {
d(this.editors, function (a, b) {
b && b.destroy()
}), this.editor_holder && this.editor_holder.parentNode && this.editor_holder.parentNode.removeChild(this.editor_holder), this.switcher && this.switcher.parentNode && this.switcher.parentNode.removeChild(this.switcher), this._super()
}, showValidationErrors: function (a) {
var b = this;
this.oneOf ? d(this.editors, function (e, f) {
if (f) {
var g = b.path + ".oneOf[" + e + "]", h = [];
d(a, function (a, d) {
if (d.path.substr(0, g.length) === g) {
var e = c({}, d);
e.path = b.path + e.path.substr(g.length), h.push(e)
}
}), f.showValidationErrors(h)
}
}) : d(this.editors, function (b, c) {
c && c.showValidationErrors(a)
})
}
}), f.defaults.editors["enum"] = f.AbstractEditor.extend({
getNumColumns: function () {
return 4
}, build: function () {
this.container;
this.title = this.header = this.label = this.theme.getFormInputLabel(this.getTitle(), this.isRequired()), this.container.appendChild(this.title), this.options.enum_titles = this.options.enum_titles || [], this["enum"] = this.schema["enum"], this.selected = 0, this.select_options = [], this.html_values = [];
for (var a = this, b = 0; b < this["enum"].length; b++)this.select_options[b] = this.options.enum_titles[b] || "Value " + (b + 1), this.html_values[b] = this.getHTML(this["enum"][b]);
this.switcher = this.theme.getSwitcher(this.select_options), this.container.appendChild(this.switcher), this.display_area = this.theme.getIndentedPanel(), this.container.appendChild(this.display_area), this.options.hide_display && (this.display_area.style.display = "none"), this.switcher.addEventListener("change", function () {
a.selected = a.select_options.indexOf(this.value), a.value = a["enum"][a.selected], a.refreshValue(), a.onChange(!0)
}), this.value = this["enum"][0], this.refreshValue(), 1 === this["enum"].length && (this.switcher.style.display = "none")
}, refreshValue: function () {
var a = this;
a.selected = -1;
var b = JSON.stringify(this.value);
return d(this["enum"], function (c, d) {
return b === JSON.stringify(d) ? (a.selected = c, !1) : void 0
}), a.selected < 0 ? void a.setValue(a["enum"][0]) : (this.switcher.value = this.select_options[this.selected], void(this.display_area.innerHTML = this.html_values[this.selected]))
}, enable: function () {
this.always_disabled || (this.switcher.disabled = !1), this._super()
}, disable: function () {
this.switcher.disabled = !0, this._super()
}, getHTML: function (a) {
var b = this;
if (null === a)return "null";
if ("object" == typeof a) {
var c = "";
return d(a, function (d, e) {
var f = b.getHTML(e);
Array.isArray(a) || (f = "" + d + ": " + f + ""), c += "" + f + " "
}), c = Array.isArray(a) ? "" + c + "
" : "" + c + "
"
}
return "boolean" == typeof a ? a ? "true" : "false" : "string" == typeof a ? a.replace(/&/g, "&").replace(//g, ">") : a
}, setValue: function (a) {
this.value !== a && (this.value = a, this.refreshValue(), this.onChange())
}, destroy: function () {
this.display_area && this.display_area.parentNode && this.display_area.parentNode.removeChild(this.display_area), this.title && this.title.parentNode && this.title.parentNode.removeChild(this.title), this.switcher && this.switcher.parentNode && this.switcher.parentNode.removeChild(this.switcher), this._super()
}
}), f.defaults.editors.select = f.AbstractEditor.extend({
setValue: function (a, b) {
a = this.typecast(a || "");
var c = a;
this.enum_values.indexOf(c) < 0 && (c = this.enum_values[0]), this.value !== c && (this.input.value = this.enum_options[this.enum_values.indexOf(c)], this.select2 && this.select2.select2("val", this.input.value), this.value = c, this.onChange())
}, register: function () {
this._super(), this.input && this.input.setAttribute("name", this.formname)
}, unregister: function () {
this._super(), this.input && this.input.removeAttribute("name")
}, getNumColumns: function () {
if (!this.enum_options)return 3;
for (var a = this.getTitle().length, b = 0; b < this.enum_options.length; b++)a = Math.max(a, this.enum_options[b].length + 4);
return Math.min(12, Math.max(a / 7, 2))
}, typecast: function (a) {
return "boolean" === this.schema.type ? !!a : "number" === this.schema.type ? 1 * a : "integer" === this.schema.type ? Math.floor(1 * a) : "" + a
}, getValue: function () {
return this.value
}, preBuild: function () {
var a = this;
if (this.input_type = "select", this.enum_options = [], this.enum_values = [], this.enum_display = [], this.schema["enum"]) {
var b = this.schema.options && this.schema.options.enum_titles || [];
d(this.schema["enum"], function (c, d) {
a.enum_options[c] = "" + d, a.enum_display[c] = "" + (b[c] || d), a.enum_values[c] = a.typecast(d)
}), this.isRequired() || (a.enum_display.unshift(" "), a.enum_options.unshift("undefined"), a.enum_values.unshift(void 0))
} else if ("boolean" === this.schema.type)a.enum_display = this.schema.options && this.schema.options.enum_titles || ["true", "false"], a.enum_options = ["1", ""], a.enum_values = [!0, !1], this.isRequired() || (a.enum_display.unshift(" "), a.enum_options.unshift("undefined"), a.enum_values.unshift(void 0)); else {
if (!this.schema.enumSource)throw"'select' editor requires the enum property to be set.";
if (this.enumSource = [], this.enum_display = [], this.enum_options = [], this.enum_values = [], Array.isArray(this.schema.enumSource))for (h = 0; h < this.schema.enumSource.length; h++)"string" == typeof this.schema.enumSource[h] ? this.enumSource[h] = {source: this.schema.enumSource[h]} : Array.isArray(this.schema.enumSource[h]) ? this.enumSource[h] = this.schema.enumSource[h] : this.enumSource[h] = c({}, this.schema.enumSource[h]); else this.schema.enumValue ? this.enumSource = [{
source: this.schema.enumSource,
value: this.schema.enumValue
}] : this.enumSource = [{source: this.schema.enumSource}];
for (h = 0; h < this.enumSource.length; h++)this.enumSource[h].value && (this.enumSource[h].value = this.jsoneditor.compileTemplate(this.enumSource[h].value, this.template_engine)), this.enumSource[h].title && (this.enumSource[h].title = this.jsoneditor.compileTemplate(this.enumSource[h].title, this.template_engine)), this.enumSource[h].filter && (this.enumSource[h].filter = this.jsoneditor.compileTemplate(this.enumSource[h].filter, this.template_engine))
}
}, build: function () {
var a = this;
this.options.compact || (this.header = this.label = this.theme.getFormInputLabel(this.getTitle(), this.isRequired())), this.schema.description && (this.description = this.theme.getFormInputDescription(this.schema.description)), this.options.compact && (this.container.className += " compact"), this.input = this.theme.getSelectInput(this.enum_options), this.theme.setSelectOptions(this.input, this.enum_options, this.enum_display), (this.schema.readOnly || this.schema.readonly) && (this.always_disabled = !0, this.input.disabled = !0), this.input.addEventListener("change", function (b) {
b.preventDefault(), b.stopPropagation(), a.onInputChange()
}), this.control = this.theme.getFormControl(this.label, this.input, this.description), this.container.appendChild(this.control), this.value = this.enum_values[0]
}, onInputChange: function () {
var a = this.input.value, b = a;
-1 === this.enum_options.indexOf(a) && (b = this.enum_options[0]), this.value = this.enum_values[this.enum_options.indexOf(a)], this.onChange(!0)
}, setupSelect2: function () {
if (window.jQuery && window.jQuery.fn && window.jQuery.fn.select2 && (this.enum_options.length > 2 || this.enum_options.length && this.enumSource)) {
var a = c({}, f.plugins.select2);
this.schema.options && this.schema.options.select2_options && (a = c(a, this.schema.options.select2_options)), this.select2 = window.jQuery(this.input).select2(a);
var b = this;
this.select2.on("select2-blur", function () {
b.input.value = b.select2.select2("val"), b.onInputChange()
})
} else this.select2 = null
}, postBuild: function () {
this._super(), this.theme.afterInputReady(this.input), this.setupSelect2()
}, onWatchedFieldChange: function () {
var a, b;
if (this.enumSource) {
a = this.getWatchedFieldValues();
for (var c = [], d = [], e = 0; e < this.enumSource.length; e++)if (Array.isArray(this.enumSource[e]))c = c.concat(this.enumSource[e]), d = d.concat(this.enumSource[e]); else {
var f = [];
if (f = Array.isArray(this.enumSource[e].source) ? this.enumSource[e].source : a[this.enumSource[e].source]) {
if (this.enumSource[e].slice && (f = Array.prototype.slice.apply(f, this.enumSource[e].slice)), this.enumSource[e].filter) {
var g = [];
for (b = 0; b < f.length; b++)this.enumSource[e].filter({
i: b,
item: f[b],
watched: a
}) && g.push(f[b]);
f = g
}
var h = [], i = [];
for (b = 0; b < f.length; b++) {
var j = f[b];
this.enumSource[e].value ? i[b] = this.enumSource[e].value({
i: b,
item: j
}) : i[b] = f[b], this.enumSource[e].title ? h[b] = this.enumSource[e].title({
i: b,
item: j
}) : h[b] = i[b]
}
c = c.concat(i), d = d.concat(h)
}
}
var k = this.value;
this.theme.setSelectOptions(this.input, c, d), this.enum_options = c, this.enum_display = d, this.enum_values = c, this.select2 && this.select2.select2("destroy"), -1 !== c.indexOf(k) ? (this.input.value = k, this.value = k) : (this.input.value = c[0], this.value = c[0] || "", this.parent ? this.parent.onChildEditorChange(this) : this.jsoneditor.onChange(), this.jsoneditor.notifyWatchers(this.path)), this.setupSelect2()
}
this._super()
}, enable: function () {
this.always_disabled || (this.input.disabled = !1, this.select2 && this.select2.select2("enable", !0)), this._super()
}, disable: function () {
this.input.disabled = !0, this.select2 && this.select2.select2("enable", !1), this._super()
}, destroy: function () {
this.label && this.label.parentNode && this.label.parentNode.removeChild(this.label), this.description && this.description.parentNode && this.description.parentNode.removeChild(this.description), this.input && this.input.parentNode && this.input.parentNode.removeChild(this.input), this.select2 && (this.select2.select2("destroy"), this.select2 = null), this._super()
}
}), f.defaults.editors.multiselect = f.AbstractEditor.extend({
preBuild: function () {
this._super(), this.select_options = {}, this.select_values = {};
var a = this.jsoneditor.expandRefs(this.schema.items || {}), b = a["enum"] || [];
for (this.option_keys = [], h = 0; h < b.length; h++)this.sanitize(b[h]) === b[h] && (this.option_keys.push(b[h] + ""), this.select_values[b[h] + ""] = b[h])
}, build: function () {
var a, b = this;
if (this.options.compact || (this.header = this.label = this.theme.getFormInputLabel(this.getTitle(), this.isRequired())), this.schema.description && (this.description = this.theme.getFormInputDescription(this.schema.description)), !this.schema.format && this.option_keys.length < 8 || "checkbox" === this.schema.format) {
for (this.input_type = "checkboxes", this.inputs = {}, this.controls = {}, a = 0; a < this.option_keys.length; a++) {
this.inputs[this.option_keys[a]] = this.theme.getCheckbox(), this.select_options[this.option_keys[a]] = this.inputs[this.option_keys[a]];
var c = this.theme.getCheckboxLabel(this.option_keys[a]);
this.controls[this.option_keys[a]] = this.theme.getFormControl(c, this.inputs[this.option_keys[a]])
}
this.control = this.theme.getMultiCheckboxHolder(this.controls, this.label, this.description)
} else {
for (this.input_type = "select", this.input = this.theme.getSelectInput(this.option_keys), this.input.multiple = !0, this.input.size = Math.min(10, this.option_keys.length), a = 0; a < this.option_keys.length; a++)this.select_options[this.option_keys[a]] = this.input.children[a];
(this.schema.readOnly || this.schema.readonly) && (this.always_disabled = !0, this.input.disabled = !0), this.control = this.theme.getFormControl(this.label, this.input, this.description)
}
this.container.appendChild(this.control), this.control.addEventListener("change", function (c) {
c.preventDefault(), c.stopPropagation();
var d = [];
for (a = 0; a < b.option_keys.length; a++)(b.select_options[b.option_keys[a]].selected || b.select_options[b.option_keys[a]].checked) && d.push(b.select_values[b.option_keys[a]]);
b.updateValue(d), b.onChange(!0)
})
}, setValue: function (a, b) {
var c;
for (a = a || [], "object" != typeof a ? a = [a] : Array.isArray(a) || (a = []), c = 0; c < a.length; c++)"string" != typeof a[c] && (a[c] += "");
for (c in this.select_options)this.select_options.hasOwnProperty(c) && (this.select_options[c]["select" === this.input_type ? "selected" : "checked"] = -1 !== a.indexOf(c));
this.updateValue(a), this.onChange()
}, setupSelect2: function () {
if (window.jQuery && window.jQuery.fn && window.jQuery.fn.select2) {
var a = window.jQuery.extend({}, f.plugins.select2);
this.schema.options && this.schema.options.select2_options && (a = c(a, this.schema.options.select2_options)), this.select2 = window.jQuery(this.input).select2(a);
var b = this;
this.select2.on("select2-blur", function () {
var a = b.select2.select2("val");
b.value = a, b.onChange(!0)
})
} else this.select2 = null
}, onInputChange: function () {
this.value = this.input.value, this.onChange(!0)
}, postBuild: function () {
this._super(), this.setupSelect2()
}, register: function () {
this._super(), this.input && this.input.setAttribute("name", this.formname)
}, unregister: function () {
this._super(), this.input && this.input.removeAttribute("name")
}, getNumColumns: function () {
var a = this.getTitle().length;
for (var b in this.select_values)this.select_values.hasOwnProperty(b) && (a = Math.max(a, (this.select_values[b] + "").length + 4));
return Math.min(12, Math.max(a / 7, 2))
}, updateValue: function (a) {
for (var b = !1, c = [], d = 0; d < a.length; d++)if (this.select_options[a[d] + ""]) {
var e = this.sanitize(this.select_values[a[d]]);
c.push(e), e !== a[d] && (b = !0)
} else b = !0;
return this.value = c, this.select2 && this.select2.select2("val", this.value), b
}, sanitize: function (a) {
return "number" === this.schema.items.type ? 1 * a : "integer" === this.schema.items.type ? Math.floor(1 * a) : "" + a
}, enable: function () {
if (!this.always_disabled) {
if (this.input)this.input.disabled = !1; else if (this.inputs)for (var a in this.inputs)this.inputs.hasOwnProperty(a) && (this.inputs[a].disabled = !1);
this.select2 && this.select2.select2("enable", !0)
}
this._super()
}, disable: function () {
if (this.input)this.input.disabled = !0; else if (this.inputs)for (var a in this.inputs)this.inputs.hasOwnProperty(a) && (this.inputs[a].disabled = !0);
this.select2 && this.select2.select2("enable", !1), this._super()
}, destroy: function () {
this.select2 && (this.select2.select2("destroy"), this.select2 = null), this._super()
}
}), f.defaults.editors.base64 = f.AbstractEditor.extend({
getNumColumns: function () {
return 4
}, build: function () {
var a = this;
if (this.title = this.header = this.label = this.theme.getFormInputLabel(this.getTitle(), this.isRequired()), this.input = this.theme.getFormInputField("hidden"), this.container.appendChild(this.input), !this.schema.readOnly && !this.schema.readonly) {
if (!window.FileReader)throw"FileReader required for base64 editor";
this.uploader = this.theme.getFormInputField("file"), this.uploader.addEventListener("change", function (b) {
if (b.preventDefault(), b.stopPropagation(), this.files && this.files.length) {
var c = new FileReader;
c.onload = function (b) {
a.value = b.target.result, a.refreshPreview(), a.onChange(!0), c = null
}, c.readAsDataURL(this.files[0])
}
})
}
this.preview = this.theme.getFormInputDescription(this.schema.description), this.container.appendChild(this.preview), this.control = this.theme.getFormControl(this.label, this.uploader || this.input, this.preview), this.container.appendChild(this.control)
}, refreshPreview: function () {
if (this.last_preview !== this.value && (this.last_preview = this.value, this.preview.innerHTML = "", this.value)) {
var a = this.value.match(/^data:([^;,]+)[;,]/);
if (a && (a = a[1]), a) {
if (this.preview.innerHTML = "Type: " + a + ", Size: " + Math.floor((this.value.length - this.value.split(",")[0].length - 1) / 1.33333) + " bytes", "image" === a.substr(0, 5)) {
this.preview.innerHTML += "
";
var b = document.createElement("img");
b.style.maxWidth = "100%", b.style.maxHeight = "100px", b.src = this.value, this.preview.appendChild(b)
}
} else this.preview.innerHTML = "Invalid data URI"
}
}, enable: function () {
this.uploader && (this.uploader.disabled = !1), this._super()
}, disable: function () {
this.uploader && (this.uploader.disabled = !0), this._super()
}, setValue: function (a) {
this.value !== a && (this.value = a, this.input.value = this.value, this.refreshPreview(), this.onChange())
}, destroy: function () {
this.preview && this.preview.parentNode && this.preview.parentNode.removeChild(this.preview), this.title && this.title.parentNode && this.title.parentNode.removeChild(this.title), this.input && this.input.parentNode && this.input.parentNode.removeChild(this.input), this.uploader && this.uploader.parentNode && this.uploader.parentNode.removeChild(this.uploader), this._super()
}
}), f.defaults.editors.upload = f.AbstractEditor.extend({
getNumColumns: function () {
return 4
}, build: function () {
var a = this;
if (this.title = this.header = this.label = this.theme.getFormInputLabel(this.getTitle(), this.isRequired()), this.input = this.theme.getFormInputField("hidden"), this.container.appendChild(this.input), !this.schema.readOnly && !this.schema.readonly) {
if (!this.jsoneditor.options.upload)throw"Upload handler required for upload editor";
this.uploader = this.theme.getFormInputField("file"), this.uploader.addEventListener("change", function (b) {
if (b.preventDefault(), b.stopPropagation(), this.files && this.files.length) {
var c = new FileReader;
c.onload = function (b) {
a.preview_value = b.target.result, a.refreshPreview(), a.onChange(!0), c = null
}, c.readAsDataURL(this.files[0])
}
})
}
var b = this.schema.description;
b || (b = ""), this.preview = this.theme.getFormInputDescription(b), this.container.appendChild(this.preview), this.control = this.theme.getFormControl(this.label, this.uploader || this.input, this.preview), this.container.appendChild(this.control)
}, refreshPreview: function () {
if (this.last_preview !== this.preview_value && (this.last_preview = this.preview_value, this.preview.innerHTML = "", this.preview_value)) {
var a = this, b = this.preview_value.match(/^data:([^;,]+)[;,]/);
b && (b = b[1]), b || (b = "unknown");
var c = this.uploader.files[0];
if (this.preview.innerHTML = "Type: " + b + ", Size: " + c.size + " bytes", "image" === b.substr(0, 5)) {
this.preview.innerHTML += "
";
var d = document.createElement("img");
d.style.maxWidth = "100%", d.style.maxHeight = "100px", d.src = this.preview_value,
this.preview.appendChild(d)
}
this.preview.innerHTML += "
";
var e = this.getButton("Upload", "upload", "Upload");
this.preview.appendChild(e), e.addEventListener("click", function (b) {
b.preventDefault(), e.setAttribute("disabled", "disabled"), a.theme.removeInputError(a.uploader), a.theme.getProgressBar && (a.progressBar = a.theme.getProgressBar(), a.preview.appendChild(a.progressBar)), a.jsoneditor.options.upload(a.path, c, {
success: function (b) {
a.setValue(b), a.parent ? a.parent.onChildEditorChange(a) : a.jsoneditor.onChange(), a.progressBar && a.preview.removeChild(a.progressBar), e.removeAttribute("disabled")
}, failure: function (b) {
a.theme.addInputError(a.uploader, b), a.progressBar && a.preview.removeChild(a.progressBar), e.removeAttribute("disabled")
}, updateProgress: function (b) {
a.progressBar && (b ? a.theme.updateProgressBar(a.progressBar, b) : a.theme.updateProgressBarUnknown(a.progressBar))
}
})
})
}
}, enable: function () {
this.uploader && (this.uploader.disabled = !1), this._super()
}, disable: function () {
this.uploader && (this.uploader.disabled = !0), this._super()
}, setValue: function (a) {
this.value !== a && (this.value = a, this.input.value = this.value, this.onChange())
}, destroy: function () {
this.preview && this.preview.parentNode && this.preview.parentNode.removeChild(this.preview), this.title && this.title.parentNode && this.title.parentNode.removeChild(this.title), this.input && this.input.parentNode && this.input.parentNode.removeChild(this.input), this.uploader && this.uploader.parentNode && this.uploader.parentNode.removeChild(this.uploader), this._super()
}
}), f.defaults.editors.checkbox = f.AbstractEditor.extend({
setValue: function (a, b) {
this.value = !!a, this.input.checked = this.value, this.onChange()
}, register: function () {
this._super(), this.input && this.input.setAttribute("name", this.formname)
}, unregister: function () {
this._super(), this.input && this.input.removeAttribute("name")
}, getNumColumns: function () {
return Math.min(12, Math.max(this.getTitle().length / 7, 2))
}, build: function () {
var a = this;
this.options.compact || (this.label = this.header = this.theme.getCheckboxLabel(this.getTitle())), this.schema.description && (this.description = this.theme.getFormInputDescription(this.schema.description)), this.options.compact && (this.container.className += " compact"), this.input = this.theme.getCheckbox(), this.control = this.theme.getFormControl(this.label, this.input, this.description), (this.schema.readOnly || this.schema.readonly) && (this.always_disabled = !0, this.input.disabled = !0), this.input.addEventListener("change", function (b) {
b.preventDefault(), b.stopPropagation(), a.value = this.checked, a.onChange(!0)
}), this.container.appendChild(this.control)
}, enable: function () {
this.always_disabled || (this.input.disabled = !1), this._super()
}, disable: function () {
this.input.disabled = !0, this._super()
}, destroy: function () {
this.label && this.label.parentNode && this.label.parentNode.removeChild(this.label), this.description && this.description.parentNode && this.description.parentNode.removeChild(this.description), this.input && this.input.parentNode && this.input.parentNode.removeChild(this.input), this._super()
}
});
var g = function () {
var a = document.documentElement;
return a.matches ? "matches" : a.webkitMatchesSelector ? "webkitMatchesSelector" : a.mozMatchesSelector ? "mozMatchesSelector" : a.msMatchesSelector ? "msMatchesSelector" : a.oMatchesSelector ? "oMatchesSelector" : void 0
}();
f.AbstractTheme = a.extend({
getContainer: function () {
return document.createElement("div")
}, getFloatRightLinkHolder: function () {
var a = document.createElement("div");
return a.style = a.style || {}, a.style.cssFloat = "right", a.style.marginLeft = "10px", a
}, getModal: function () {
var a = document.createElement("div");
return a.style.backgroundColor = "white", a.style.border = "1px solid black", a.style.boxShadow = "3px 3px black", a.style.position = "absolute", a.style.zIndex = "10", a.style.display = "none", a
}, getGridContainer: function () {
var a = document.createElement("div");
return a
}, getGridRow: function () {
var a = document.createElement("div");
return a.className = "row", a
}, getGridColumn: function () {
var a = document.createElement("div");
return a
}, setGridColumnSize: function (a, b) {
}, getLink: function (a) {
var b = document.createElement("a");
return b.setAttribute("href", "#"), b.appendChild(document.createTextNode(a)), b
}, disableHeader: function (a) {
a.style.color = "#ccc"
}, disableLabel: function (a) {
a.style.color = "#ccc"
}, enableHeader: function (a) {
a.style.color = ""
}, enableLabel: function (a) {
a.style.color = ""
}, getFormInputLabel: function (a) {
var b = document.createElement("label");
return b.appendChild(document.createTextNode(a)), b
}, getCheckboxLabel: function (a) {
var b = this.getFormInputLabel(a);
return b.style.fontWeight = "normal", b
}, getHeader: function (a, b) {
var c = document.createElement("h3");
return "string" == typeof a ? c.textContent = a : c.appendChild(a), b && (c.className += " required"), c
}, getCheckbox: function () {
var a = this.getFormInputField("checkbox");
return a.style.display = "inline-block", a.style.width = "auto", a
}, getMultiCheckboxHolder: function (a, b, c) {
var d = document.createElement("div");
b && (b.style.display = "block", d.appendChild(b));
for (var e in a)a.hasOwnProperty(e) && (a[e].style.display = "inline-block", a[e].style.marginRight = "20px", d.appendChild(a[e]));
return c && d.appendChild(c), d
}, getSelectInput: function (a) {
var b = document.createElement("select");
return a && this.setSelectOptions(b, a), b
}, getSwitcher: function (a) {
var b = this.getSelectInput(a);
return b.style.backgroundColor = "transparent", b.style.display = "inline-block", b.style.fontStyle = "italic", b.style.fontWeight = "normal", b.style.height = "auto", b.style.marginBottom = 0, b.style.marginLeft = "5px", b.style.padding = "0 0 0 3px", b.style.width = "auto", b
}, getSwitcherOptions: function (a) {
return a.getElementsByTagName("option")
}, setSwitcherOptions: function (a, b, c) {
this.setSelectOptions(a, b, c)
}, setSelectOptions: function (a, b, c) {
c = c || [], a.innerHTML = "";
for (var d = 0; d < b.length; d++) {
var e = document.createElement("option");
e.setAttribute("value", b[d]), e.textContent = c[d] || b[d], a.appendChild(e)
}
}, getTextareaInput: function () {
var a = document.createElement("textarea");
return a.style = a.style || {}, a.style.width = "100%", a.style.height = "300px", a.style.boxSizing = "border-box", a
}, getRangeInput: function (a, b, c) {
var d = this.getFormInputField("range");
return d.setAttribute("min", a), d.setAttribute("max", b), d.setAttribute("step", c), d
}, getFormInputField: function (a) {
var b = document.createElement("input");
return b.setAttribute("type", a), b
}, afterInputReady: function (a) {
}, getFormControl: function (a, b, c) {
var d = document.createElement("div");
return d.className = "form-control", a && d.appendChild(a), "checkbox" === b.type ? a.insertBefore(b, a.firstChild) : d.appendChild(b), c && d.appendChild(c), d
}, getIndentedPanel: function () {
var a = document.createElement("div");
return a.style = a.style || {}, a.style.paddingLeft = "10px", a.style.marginLeft = "10px", a.style.borderLeft = "1px solid #ccc", a
}, getChildEditorHolder: function () {
return document.createElement("div")
}, getDescription: function (a) {
var b = document.createElement("p");
return b.innerHTML = a, b
}, getCheckboxDescription: function (a) {
return this.getDescription(a)
}, getFormInputDescription: function (a) {
return this.getDescription(a)
}, getHeaderButtonHolder: function () {
return this.getButtonHolder()
}, getButtonHolder: function () {
return document.createElement("div")
}, getButton: function (a, b, c) {
var d = document.createElement("button");
return d.type = "button", this.setButtonText(d, a, b, c), d
}, setButtonText: function (a, b, c, d) {
a.innerHTML = "", c && (a.appendChild(c), a.innerHTML += " "), a.appendChild(document.createTextNode(b)), d && a.setAttribute("title", d)
}, getTable: function () {
return document.createElement("table")
}, getTableRow: function () {
return document.createElement("tr")
}, getTableHead: function () {
return document.createElement("thead")
}, getTableBody: function () {
return document.createElement("tbody")
}, getTableHeaderCell: function (a) {
var b = document.createElement("th");
return b.textContent = a, b
}, getTableCell: function () {
var a = document.createElement("td");
return a
}, getErrorMessage: function (a) {
var b = document.createElement("p");
return b.style = b.style || {}, b.style.color = "red", b.appendChild(document.createTextNode(a)), b
}, addInputError: function (a, b) {
}, removeInputError: function (a) {
}, addTableRowError: function (a) {
}, removeTableRowError: function (a) {
}, getTabHolder: function () {
var a = document.createElement("div");
return a.innerHTML = "", a
}, applyStyles: function (a, b) {
a.style = a.style || {};
for (var c in b)b.hasOwnProperty(c) && (a.style[c] = b[c])
}, closest: function (a, b) {
for (; a && a !== document;) {
if (!g)return !1;
if (a[g](b))return a;
a = a.parentNode
}
return !1
}, getTab: function (a) {
var b = document.createElement("div");
return b.appendChild(a), b.style = b.style || {}, this.applyStyles(b, {
border: "1px solid #ccc",
borderWidth: "1px 0 1px 1px",
textAlign: "center",
lineHeight: "30px",
borderRadius: "5px",
borderBottomRightRadius: 0,
borderTopRightRadius: 0,
fontWeight: "bold",
cursor: "pointer"
}), b
}, getTabContentHolder: function (a) {
return a.children[1]
}, getTabContent: function () {
return this.getIndentedPanel()
}, markTabActive: function (a) {
this.applyStyles(a, {opacity: 1, background: "white"})
}, markTabInactive: function (a) {
this.applyStyles(a, {opacity: .5, background: ""})
}, addTab: function (a, b) {
a.children[0].appendChild(b)
}, getBlockLink: function () {
var a = document.createElement("a");
return a.style.display = "block", a
}, getBlockLinkHolder: function () {
var a = document.createElement("div");
return a
}, getLinksHolder: function () {
var a = document.createElement("div");
return a
}, createMediaLink: function (a, b, c) {
a.appendChild(b), c.style.width = "100%", a.appendChild(c)
}, createImageLink: function (a, b, c) {
a.appendChild(b), b.appendChild(c)
}
}), f.defaults.themes.bootstrap2 = f.AbstractTheme.extend({
getRangeInput: function (a, b, c) {
return this._super(a, b, c)
}, getGridContainer: function () {
var a = document.createElement("div");
return a.className = "container-fluid", a
}, getGridRow: function () {
var a = document.createElement("div");
return a.className = "row-fluid", a
}, getFormInputLabel: function (a, b) {
var c = this._super(a);
return c.style.display = "inline-block", c.style.fontWeight = "bold", b && (c.className += " required"), c
}, setGridColumnSize: function (a, b) {
a.className = "span" + b
}, getSelectInput: function (a) {
var b = this._super(a);
return b.style.width = "auto", b.style.maxWidth = "98%", b
}, getFormInputField: function (a) {
var b = this._super(a);
return b.style.width = "98%", b
}, afterInputReady: function (a) {
a.controlgroup || (a.controlgroup = this.closest(a, ".control-group"), a.controls = this.closest(a, ".controls"), this.closest(a, ".compact") && (a.controlgroup.className = a.controlgroup.className.replace(/control-group/g, "").replace(/[ ]{2,}/g, " "), a.controls.className = a.controlgroup.className.replace(/controls/g, "").replace(/[ ]{2,}/g, " "), a.style.marginBottom = 0))
}, getIndentedPanel: function () {
var a = document.createElement("div");
return a.className = "well well-small", a
}, getFormInputDescription: function (a) {
var b = document.createElement("p");
return b.className = "help-inline", b.textContent = a, b
}, getFormControl: function (a, b, c) {
var d = document.createElement("div");
d.className = "control-group";
var e = document.createElement("div");
return e.className = "controls", a && "checkbox" === b.getAttribute("type") ? (d.appendChild(e), a.className += " checkbox", a.appendChild(b), e.appendChild(a), e.style.height = "30px") : (a && (a.className += " control-label", d.appendChild(a)), e.appendChild(b), d.appendChild(e)), c && e.appendChild(c), d
}, getHeaderButtonHolder: function () {
var a = this.getButtonHolder();
return a.style.marginLeft = "10px", a
}, getButtonHolder: function () {
var a = document.createElement("div");
return a.className = "btn-group", a
}, getButton: function (a, b, c) {
var d = this._super(a, b, c);
return d.className += " btn btn-default", d
}, getTable: function () {
var a = document.createElement("table");
return a.className = "table table-bordered", a.style.width = "auto", a.style.maxWidth = "none", a
}, addInputError: function (a, b) {
a.controlgroup && a.controls && (a.controlgroup.className += " error", a.errmsg ? a.errmsg.style.display = "" : (a.errmsg = document.createElement("p"), a.errmsg.className = "help-block errormsg", a.controls.appendChild(a.errmsg)), a.errmsg.textContent = b)
}, removeInputError: function (a) {
a.errmsg && (a.errmsg.style.display = "none", a.controlgroup.className = a.controlgroup.className.replace(/\s?error/g, ""))
}, getTabHolder: function () {
var a = document.createElement("div");
return a.className = "tabbable tabs-left", a.innerHTML = " ", a
}, getTab: function (a) {
var b = document.createElement("li"), c = document.createElement("a");
return c.setAttribute("href", "#"), c.appendChild(a), b.appendChild(c), b
}, getTabContentHolder: function (a) {
return a.children[1]
}, getTabContent: function () {
var a = document.createElement("div");
return a.className = "tab-pane active", a
}, markTabActive: function (a) {
a.className += " active"
}, markTabInactive: function (a) {
a.className = a.className.replace(/\s?active/g, "")
}, addTab: function (a, b) {
a.children[0].appendChild(b)
}, getProgressBar: function () {
var a = document.createElement("div");
a.className = "progress";
var b = document.createElement("div");
return b.className = "bar", b.style.width = "0%", a.appendChild(b), a
}, updateProgressBar: function (a, b) {
a && (a.firstChild.style.width = b + "%")
}, updateProgressBarUnknown: function (a) {
a && (a.className = "progress progress-striped active", a.firstChild.style.width = "100%")
}
}), f.defaults.themes.bootstrap3 = f.AbstractTheme.extend({
getSelectInput: function (a) {
var b = this._super(a);
return b.className += "form-control", b
}, setGridColumnSize: function (a, b) {
a.className = "col-md-" + b
}, afterInputReady: function (a) {
a.controlgroup || (a.controlgroup = this.closest(a, ".form-group"), this.closest(a, ".compact") && (a.controlgroup.style.marginBottom = 0))
}, getTextareaInput: function () {
var a = document.createElement("textarea");
return a.className = "form-control", a
}, getRangeInput: function (a, b, c) {
return this._super(a, b, c)
}, getFormInputField: function (a) {
var b = this._super(a);
return "checkbox" !== a && (b.className += "form-control"), b
}, getFormControl: function (a, b, c) {
var d = document.createElement("div");
return a && "checkbox" === b.type ? (d.className += " checkbox", a.appendChild(b), a.style.fontSize = "14px", d.style.marginTop = "0", d.appendChild(a), b.style.position = "relative", b.style.cssFloat = "left") : (d.className += " form-group", a && (a.className += " control-label", d.appendChild(a)), d.appendChild(b)), c && d.appendChild(c), d
}, getIndentedPanel: function () {
var a = document.createElement("div");
return a.className = "well well-sm", a
}, getFormInputDescription: function (a) {
var b = document.createElement("p");
return b.className = "help-block", b.innerHTML = a, b
}, getHeaderButtonHolder: function () {
var a = this.getButtonHolder();
return a.style.marginLeft = "10px", a
}, getButtonHolder: function () {
var a = document.createElement("div");
return a.className = "btn-group", a
}, getButton: function (a, b, c) {
var d = this._super(a, b, c);
return d.className += "btn btn-default", d
}, getTable: function () {
var a = document.createElement("table");
return a.className = "table table-bordered", a.style.width = "auto", a.style.maxWidth = "none", a
}, addInputError: function (a, b) {
a.controlgroup && (a.controlgroup.className += " has-error", a.errmsg ? a.errmsg.style.display = "" : (a.errmsg = document.createElement("p"), a.errmsg.className = "help-block errormsg", a.controlgroup.appendChild(a.errmsg)), a.errmsg.textContent = b)
}, removeInputError: function (a) {
a.errmsg && (a.errmsg.style.display = "none", a.controlgroup.className = a.controlgroup.className.replace(/\s?has-error/g, ""))
}, getTabHolder: function () {
var a = document.createElement("div");
return a.innerHTML = "", a.className = "rows", a
}, getTab: function (a) {
var b = document.createElement("a");
return b.className = "list-group-item", b.setAttribute("href", "#"), b.appendChild(a), b
}, markTabActive: function (a) {
a.className += " active"
}, markTabInactive: function (a) {
a.className = a.className.replace(/\s?active/g, "")
}, getProgressBar: function () {
var a = 0, b = 100, c = 0, d = document.createElement("div");
d.className = "progress";
var e = document.createElement("div");
return e.className = "progress-bar", e.setAttribute("role", "progressbar"), e.setAttribute("aria-valuenow", c), e.setAttribute("aria-valuemin", a), e.setAttribute("aria-valuenax", b), e.innerHTML = c + "%", d.appendChild(e), d
}, updateProgressBar: function (a, b) {
if (a) {
var c = a.firstChild, d = b + "%";
c.setAttribute("aria-valuenow", b), c.style.width = d, c.innerHTML = d
}
}, updateProgressBarUnknown: function (a) {
if (a) {
var b = a.firstChild;
a.className = "progress progress-striped active", b.removeAttribute("aria-valuenow"), b.style.width = "100%", b.innerHTML = ""
}
}
}), f.defaults.themes.foundation = f.AbstractTheme.extend({
getChildEditorHolder: function () {
var a = document.createElement("div");
return a.style.marginBottom = "15px", a
}, getSelectInput: function (a) {
var b = this._super(a);
return b.style.minWidth = "none", b.style.padding = "5px", b.style.marginTop = "3px", b
}, getSwitcher: function (a) {
var b = this._super(a);
return b.style.paddingRight = "8px", b
}, afterInputReady: function (a) {
this.closest(a, ".compact") && (a.style.marginBottom = 0), a.group = this.closest(a, ".form-control")
}, getFormInputLabel: function (a, b) {
var c = this._super(a);
return c.style.display = "inline-block", b && (c.className += " required"), c
}, getFormInputField: function (a) {
var b = this._super(a);
return b.style.width = "100%", b.style.marginBottom = "checkbox" === a ? "0" : "12px", b
}, getFormInputDescription: function (a) {
var b = document.createElement("p");
return b.textContent = a, b.style.marginTop = "-10px", b.style.fontStyle = "italic", b
}, getIndentedPanel: function () {
var a = document.createElement("div");
return a.className = "panel", a
}, getHeaderButtonHolder: function () {
var a = this.getButtonHolder();
return a.style.display = "inline-block", a.style.marginLeft = "10px", a.style.verticalAlign = "middle", a
}, getButtonHolder: function () {
var a = document.createElement("div");
return a.className = "button-group", a
}, getButton: function (a, b, c) {
var d = this._super(a, b, c);
return d.className += " small button", d
}, addInputError: function (a, b) {
a.group && (a.group.className += " error", a.errmsg ? a.errmsg.style.display = "" : (a.insertAdjacentHTML("afterend", ''), a.errmsg = a.parentNode.getElementsByClassName("error")[0]), a.errmsg.textContent = b)
}, removeInputError: function (a) {
a.errmsg && (a.group.className = a.group.className.replace(/ error/g, ""), a.errmsg.style.display = "none")
}, getProgressBar: function () {
var a = document.createElement("div");
a.className = "progress";
var b = document.createElement("span");
return b.className = "meter", b.style.width = "0%", a.appendChild(b), a
}, updateProgressBar: function (a, b) {
a && (a.firstChild.style.width = b + "%")
}, updateProgressBarUnknown: function (a) {
a && (a.firstChild.style.width = "100%")
}
}), f.defaults.themes.foundation3 = f.defaults.themes.foundation.extend({
getHeaderButtonHolder: function () {
var a = this._super();
return a.style.fontSize = ".6em", a
}, getFormInputLabel: function (a, b) {
var c = this._super(a);
return c.style.fontWeight = "bold", b && (c.className += " required"), c
}, getTabHolder: function () {
var a = document.createElement("div");
return a.className = "row", a.innerHTML = "
", a
}, setGridColumnSize: function (a, b) {
var c = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve"];
a.className = "columns " + c[b]
}, getTab: function (a) {
var b = document.createElement("dd"), c = document.createElement("a");
return c.setAttribute("href", "#"), c.appendChild(a), b.appendChild(c), b
}, getTabContentHolder: function (a) {
return a.children[1]
}, getTabContent: function () {
var a = document.createElement("div");
return a.className = "content active", a.style.paddingLeft = "5px", a
}, markTabActive: function (a) {
a.className += " active"
}, markTabInactive: function (a) {
a.className = a.className.replace(/\s*active/g, "")
}, addTab: function (a, b) {
a.children[0].appendChild(b)
}
}), f.defaults.themes.foundation4 = f.defaults.themes.foundation.extend({
getHeaderButtonHolder: function () {
var a = this._super();
return a.style.fontSize = ".6em", a
}, setGridColumnSize: function (a, b) {
a.className = "columns large-" + b
}, getFormInputDescription: function (a) {
var b = this._super(a);
return b.style.fontSize = ".8rem", b
}, getFormInputLabel: function (a, b) {
var c = this._super(a);
return c.style.fontWeight = "bold", b && (c.className += " required"), c
}
}), f.defaults.themes.foundation5 = f.defaults.themes.foundation.extend({
getFormInputDescription: function (a) {
var b = this._super(a);
return b.style.fontSize = ".8rem", b
}, setGridColumnSize: function (a, b) {
a.className = "columns medium-" + b
}, getButton: function (a, b, c) {
var d = this._super(a, b, c);
return d.className = d.className.replace(/\s*small/g, "") + " tiny", d
}, getTabHolder: function () {
var a = document.createElement("div");
return a.innerHTML = "
", a
}, getTab: function (a) {
var b = document.createElement("dd"), c = document.createElement("a");
return c.setAttribute("href", "#"), c.appendChild(a), b.appendChild(c), b
}, getTabContentHolder: function (a) {
return a.children[1]
}, getTabContent: function () {
var a = document.createElement("div");
return a.className = "content active", a.style.paddingLeft = "5px", a
}, markTabActive: function (a) {
a.className += " active"
}, markTabInactive: function (a) {
a.className = a.className.replace(/\s*active/g, "")
}, addTab: function (a, b) {
a.children[0].appendChild(b)
}
}), f.defaults.themes.html = f.AbstractTheme.extend({
getFormInputLabel: function (a, b) {
var c = this._super(a);
return c.style.display = "block", c.style.marginBottom = "3px", c.style.fontWeight = "bold", b && (c.className += " required"), c
}, getFormInputDescription: function (a) {
var b = this._super(a);
return b.style.fontSize = ".8em", b.style.margin = 0, b.style.display = "inline-block", b.style.fontStyle = "italic", b
}, getIndentedPanel: function () {
var a = this._super();
return a.style.border = "1px solid #ddd", a.style.padding = "5px", a.style.margin = "5px", a.style.borderRadius = "3px", a
}, getChildEditorHolder: function () {
var a = this._super();
return a.style.marginBottom = "8px", a
}, getHeaderButtonHolder: function () {
var a = this.getButtonHolder();
return a.style.display = "inline-block", a.style.marginLeft = "10px", a.style.fontSize = ".8em", a.style.verticalAlign = "middle", a
}, getTable: function () {
var a = this._super();
return a.style.borderBottom = "1px solid #ccc", a.style.marginBottom = "5px", a
}, addInputError: function (a, b) {
if (a.style.borderColor = "red", a.errmsg)a.errmsg.style.display = "block"; else {
var c = this.closest(a, ".form-control");
a.errmsg = document.createElement("div"), a.errmsg.setAttribute("class", "errmsg"), a.errmsg.style = a.errmsg.style || {}, a.errmsg.style.color = "red", c.appendChild(a.errmsg)
}
a.errmsg.innerHTML = "", a.errmsg.appendChild(document.createTextNode(b))
}, removeInputError: function (a) {
a.style.borderColor = "", a.errmsg && (a.errmsg.style.display = "none")
}, getProgressBar: function () {
var a = 100, b = 0, c = document.createElement("progress");
return c.setAttribute("max", a), c.setAttribute("value", b), c
}, updateProgressBar: function (a, b) {
a && a.setAttribute("value", b)
}, updateProgressBarUnknown: function (a) {
a && a.removeAttribute("value")
}
}), f.defaults.themes.jqueryui = f.AbstractTheme.extend({
getTable: function () {
var a = this._super();
return a.setAttribute("cellpadding", 5), a.setAttribute("cellspacing", 0), a
}, getTableHeaderCell: function (a) {
var b = this._super(a);
return b.className = "ui-state-active", b.style.fontWeight = "bold", b
}, getTableCell: function () {
var a = this._super();
return a.className = "ui-widget-content", a
}, getHeaderButtonHolder: function () {
var a = this.getButtonHolder();
return a.style.marginLeft = "10px", a.style.fontSize = ".6em", a.style.display = "inline-block", a
}, getFormInputDescription: function (a) {
var b = this.getDescription(a);
return b.style.marginLeft = "10px", b.style.display = "inline-block", b
}, getFormControl: function (a, b, c) {
var d = this._super(a, b, c);
return "checkbox" === b.type ? (d.style.lineHeight = "25px", d.style.padding = "3px 0") : d.style.padding = "4px 0 8px 0", d
}, getDescription: function (a) {
var b = document.createElement("span");
return b.style.fontSize = ".8em", b.style.fontStyle = "italic", b.textContent = a, b
}, getButtonHolder: function () {
var a = document.createElement("div");
return a.className = "ui-buttonset", a.style.fontSize = ".7em", a
}, getFormInputLabel: function (a, b) {
var c = document.createElement("label");
return c.style.fontWeight = "bold", c.style.display = "block", b && (c.className += " required"), c.textContent = a, c
}, getButton: function (a, b, c) {
var d = document.createElement("button");
d.className = "ui-button ui-widget ui-state-default ui-corner-all", b && !a ? (d.className += " ui-button-icon-only", b.className += " ui-button-icon-primary ui-icon-primary", d.appendChild(b)) : b ? (d.className += " ui-button-text-icon-primary", b.className += " ui-button-icon-primary ui-icon-primary", d.appendChild(b)) : d.className += " ui-button-text-only";
var e = document.createElement("span");
return e.className = "ui-button-text", e.textContent = a || c || ".", d.appendChild(e), d.setAttribute("title", c), d
}, setButtonText: function (a, b, c, d) {
a.innerHTML = "", a.className = "ui-button ui-widget ui-state-default ui-corner-all", c && !b ? (a.className += " ui-button-icon-only", c.className += " ui-button-icon-primary ui-icon-primary", a.appendChild(c)) : c ? (a.className += " ui-button-text-icon-primary", c.className += " ui-button-icon-primary ui-icon-primary", a.appendChild(c)) : a.className += " ui-button-text-only";
var e = document.createElement("span");
e.className = "ui-button-text", e.textContent = b || d || ".", a.appendChild(e), a.setAttribute("title", d)
}, getIndentedPanel: function () {
var a = document.createElement("div");
return a.className = "ui-widget-content ui-corner-all", a.style.padding = "1em 1.4em", a.style.marginBottom = "20px", a
}, afterInputReady: function (a) {
a.controls || (a.controls = this.closest(a, ".form-control"))
}, addInputError: function (a, b) {
a.controls && (a.errmsg ? a.errmsg.style.display = "" : (a.errmsg = document.createElement("div"), a.errmsg.className = "ui-state-error", a.controls.appendChild(a.errmsg)), a.errmsg.textContent = b)
}, removeInputError: function (a) {
a.errmsg && (a.errmsg.style.display = "none")
}, markTabActive: function (a) {
a.className = a.className.replace(/\s*ui-widget-header/g, "") + " ui-state-active"
}, markTabInactive: function (a) {
a.className = a.className.replace(/\s*ui-state-active/g, "") + " ui-widget-header"
}
}), f.AbstractIconLib = a.extend({
mapping: {
collapse: "",
expand: "",
"delete": "",
edit: "",
add: "",
cancel: "",
save: "",
moveup: "",
movedown: ""
}, icon_prefix: "", getIconClass: function (a) {
return this.mapping[a] ? this.icon_prefix + this.mapping[a] : null
}, getIcon: function (a) {
var b = this.getIconClass(a);
if (!b)return null;
var c = document.createElement("i");
return c.className = b, c
}
}), f.defaults.iconlibs.bootstrap2 = f.AbstractIconLib.extend({
mapping: {
collapse: "chevron-down",
expand: "chevron-up",
"delete": "trash",
edit: "pencil",
add: "plus",
cancel: "ban-circle",
save: "ok",
moveup: "arrow-up",
movedown: "arrow-down"
}, icon_prefix: "icon-"
}), f.defaults.iconlibs.bootstrap3 = f.AbstractIconLib.extend({
mapping: {
collapse: "chevron-down",
expand: "chevron-right",
"delete": "remove",
edit: "pencil",
add: "plus",
cancel: "floppy-remove",
save: "floppy-saved",
moveup: "arrow-up",
movedown: "arrow-down"
}, icon_prefix: "glyphicon glyphicon-"
}), f.defaults.iconlibs.fontawesome3 = f.AbstractIconLib.extend({
mapping: {
collapse: "chevron-down",
expand: "chevron-right",
"delete": "remove",
edit: "pencil",
add: "plus",
cancel: "ban-circle",
save: "save",
moveup: "arrow-up",
movedown: "arrow-down"
}, icon_prefix: "icon-"
}), f.defaults.iconlibs.fontawesome4 = f.AbstractIconLib.extend({
mapping: {
collapse: "caret-square-o-down",
expand: "caret-square-o-right",
"delete": "times",
edit: "pencil",
add: "plus",
cancel: "ban",
save: "save",
moveup: "arrow-up",
movedown: "arrow-down"
}, icon_prefix: "fa fa-"
}), f.defaults.iconlibs.foundation2 = f.AbstractIconLib.extend({
mapping: {
collapse: "minus",
expand: "plus",
"delete": "remove",
edit: "edit",
add: "add-doc",
cancel: "error",
save: "checkmark",
moveup: "up-arrow",
movedown: "down-arrow"
}, icon_prefix: "foundicon-"
}), f.defaults.iconlibs.foundation3 = f.AbstractIconLib.extend({
mapping: {
collapse: "minus",
expand: "plus",
"delete": "x",
edit: "pencil",
add: "page-add",
cancel: "x-circle",
save: "save",
moveup: "arrow-up",
movedown: "arrow-down"
}, icon_prefix: "fi-"
}), f.defaults.iconlibs.jqueryui = f.AbstractIconLib.extend({
mapping: {
collapse: "triangle-1-s",
expand: "triangle-1-e",
"delete": "trash",
edit: "pencil",
add: "plusthick",
cancel: "closethick",
save: "disk",
moveup: "arrowthick-1-n",
movedown: "arrowthick-1-s"
}, icon_prefix: "ui-icon ui-icon-"
}), f.defaults.templates["default"] = function () {
return {
compile: function (a) {
var b = a.match(/{{\s*([a-zA-Z0-9\-_ \.]+)\s*}}/g), c = b && b.length;
if (!c)return function () {
return a
};
for (var d = [], e = function (a) {
var c, e = b[a].replace(/[{}]+/g, "").trim().split("."), f = e.length;
if (f > 1) {
var g;
c = function (b) {
for (g = b, a = 0; f > a && (g = g[e[a]], g); a++);
return g
}
} else e = e[0], c = function (a) {
return a[e]
};
d.push({s: b[a], r: c})
}, f = 0; c > f; f++)e(f);
return function (b) {
var e, g = a + "";
for (f = 0; c > f; f++)e = d[f], g = g.replace(e.s, e.r(b));
return g
}
}
}
}, f.defaults.templates.ejs = function () {
return window.EJS ? {
compile: function (a) {
var b = new window.EJS({text: a});
return function (a) {
return b.render(a)
}
}
} : !1
}, f.defaults.templates.handlebars = function () {
return window.Handlebars
}, f.defaults.templates.hogan = function () {
return window.Hogan ? {
compile: function (a) {
var b = window.Hogan.compile(a);
return function (a) {
return b.render(a)
}
}
} : !1
}, f.defaults.templates.markup = function () {
return window.Mark && window.Mark.up ? {
compile: function (a) {
return function (b) {
return window.Mark.up(a, b)
}
}
} : !1
}, f.defaults.templates.mustache = function () {
return window.Mustache ? {
compile: function (a) {
return function (b) {
return window.Mustache.render(a, b)
}
}
} : !1
}, f.defaults.templates.swig = function () {
return window.swig
}, f.defaults.templates.underscore = function () {
return window._ ? {
compile: function (a) {
return function (b) {
return window._.template(a, b)
}
}
} : !1
}, f.defaults.theme = "html", f.defaults.template = "default", f.defaults.options = {}, f.defaults.translate = function (a, b) {
var c = f.defaults.languages[f.defaults.language];
if (!c)throw"Unknown language " + f.defaults.language;
var d = c[a] || f.defaults.languages[f.defaults.default_language][a];
if ("undefined" == typeof d)throw"Unknown translate string " + a;
if (b)for (var e = 0; e < b.length; e++)d = d.replace(new RegExp("\\{\\{" + e + "}}", "g"), b[e]);
return d
}, f.defaults.default_language = "en", f.defaults.language = f.defaults.default_language, f.defaults.languages.en = {
error_notset: "Property must be set",
error_notempty: "Value required",
error_enum: "Value must be one of the enumerated values",
error_anyOf: "Value must validate against at least one of the provided schemas",
error_oneOf: "Value must validate against exactly one of the provided schemas. It currently validates against {{0}} of the schemas.",
error_not: "Value must not validate against the provided schema",
error_type_union: "Value must be one of the provided types",
error_type: "Value must be of type {{0}}",
error_disallow_union: "Value must not be one of the provided disallowed types",
error_disallow: "Value must not be of type {{0}}",
error_multipleOf: "Value must be a multiple of {{0}}",
error_maximum_excl: "Value must be less than {{0}}",
error_maximum_incl: "Value must at most {{0}}",
error_minimum_excl: "Value must be greater than {{0}}",
error_minimum_incl: "Value must be at least {{0}}",
error_maxLength: "Value must be at most {{0}} characters long",
error_minLength: "Value must be at least {{0}} characters long",
error_pattern: "Value must match the provided pattern",
error_additionalItems: "No additional items allowed in this array",
error_maxItems: "Value must have at most {{0}} items",
error_minItems: "Value must have at least {{0}} items",
error_uniqueItems: "Array must have unique items",
error_maxProperties: "Object must have at most {{0}} properties",
error_minProperties: "Object must have at least {{0}} properties",
error_required: "Object is missing the required property '{{0}}'",
error_additional_properties: "No additional properties allowed, but property {{0}} is set",
error_dependency: "Must have property {{0}}"
}, f.plugins = {ace: {theme: ""}, epiceditor: {}, sceditor: {}, select2: {}};
for (var h in f.defaults.editors)f.defaults.editors.hasOwnProperty(h) && (f.defaults.editors[h].options = f.defaults.editors.options || {});
f.defaults.resolvers.unshift(function (a) {
return "string" != typeof a.type ? "multiple" : void 0
}), f.defaults.resolvers.unshift(function (a) {
return !a.type && a.properties ? "object" : void 0
}), f.defaults.resolvers.unshift(function (a) {
return "string" == typeof a.type ? a.type : void 0
}), f.defaults.resolvers.unshift(function (a) {
return "boolean" === a.type ? "checkbox" === a.format || a.options && a.options.checkbox ? "checkbox" : "select" : void 0;
}), f.defaults.resolvers.unshift(function (a) {
return "any" === a.type ? "multiple" : void 0
}), f.defaults.resolvers.unshift(function (a) {
return "string" === a.type && a.media && "base64" === a.media.binaryEncoding ? "base64" : void 0
}), f.defaults.resolvers.unshift(function (a) {
return "string" === a.type && "url" === a.format && a.options && a.options.upload === !0 && window.FileReader ? "upload" : void 0
}), f.defaults.resolvers.unshift(function (a) {
return "array" == a.type && "table" == a.format ? "table" : void 0
}), f.defaults.resolvers.unshift(function (a) {
return a.enumSource ? "select" : void 0
}), f.defaults.resolvers.unshift(function (a) {
if (a["enum"]) {
if ("array" === a.type || "object" === a.type)return "enum";
if ("number" === a.type || "integer" === a.type || "string" === a.type)return "select"
}
}), f.defaults.resolvers.unshift(function (a) {
return "array" === a.type && a.items && !Array.isArray(a.items) && a.uniqueItems && a.items["enum"] && ["string", "number", "integer"].indexOf(a.items.type) >= 0 ? "multiselect" : void 0
}), f.defaults.resolvers.unshift(function (a) {
return a.oneOf ? "multiple" : void 0
}), function () {
if (window.jQuery || window.Zepto) {
var a = window.jQuery || window.Zepto;
a.jsoneditor = f.defaults, a.fn.jsoneditor = function (a) {
var b = this, c = this.data("jsoneditor");
if ("value" === a) {
if (!c)throw"Must initialize jsoneditor before getting/setting the value";
if (!(arguments.length > 1))return c.getValue();
c.setValue(arguments[1])
} else {
if ("validate" === a) {
if (!c)throw"Must initialize jsoneditor before validating";
return arguments.length > 1 ? c.validate(arguments[1]) : c.validate()
}
"destroy" === a ? c && (c.destroy(), this.data("jsoneditor", null)) : (c && c.destroy(), c = new f(this.get(0), a), this.data("jsoneditor", c), c.on("change", function () {
b.trigger("change")
}), c.on("ready", function () {
b.trigger("ready")
}))
}
return this
}
}
}(), window.JSONEditor = f
}();
© 2015 - 2024 Weber Informatics LLC | Privacy Policy