json-object-editor
Version:
JOE the Json Object Editor | Platform Edition
84 lines (69 loc) • 2.63 kB
JavaScript
/* JavaScript include for: Json Object Editor
last updated: Rewritten by CH + ChatGPT (April 2025)
*/
(function() {
var ieNavigator = false;
var agent = window.navigator.userAgent;
if (agent.indexOf('Trident') !== -1 || agent.indexOf('MSIE') !== -1 || agent.indexOf('Edge') !== -1) {
ieNavigator = true;
}
var projectName = 'JsonObjectEditor';
var web_dir = window.web_dir || ('//' + location.hostname + ':' + (location.port || ((location.protocol === "https:") ? 443 : 80)) + "/" + projectName + '/');
if (location && location.origin === 'file://') {
web_dir = location.href.slice(0, location.href.lastIndexOf('/') + 1);
}
var joe_web_dir = web_dir;
var scripts_dir = web_dir + "js/";
var styles_dir = web_dir + "css/";
var scripts = [];
var styles = ["joe.css"];
if (typeof jQuery === 'undefined') {
scripts.push("libs/jquery-1.11.3.min.js");
scripts.push("libs/jquery-ui.min.js");
} else if (typeof jQuery().resizable === 'undefined') {
scripts.push("libs/jquery-ui.min.js");
}
scripts.push("libs/jquery.ui.touch-punch.min.js");
if (typeof Craydent === 'undefined' || (!Craydent.VERSION || Craydent.VERSION < '1.7.37')) {
scripts.push("libs/craydent-1.9.2.min.js");
}
if (ieNavigator) {
scripts.push(
"libs/moment.min.js",
"joe_es5.js",
"plugins/tinymce.min.js",
"ace/ace.js"
);
} else {
scripts.push(
"libs/moment.min.js",
"joe.js",
"plugins/tinymce.min.js",
"ace/ace.js"
);
}
// Load styles
styles.forEach(function(style) {
var link = document.createElement('link');
link.href = styles_dir + style;
link.rel = 'stylesheet';
link.type = 'text/css';
document.head.appendChild(link);
});
// Load scripts in order
function loadScript(index) {
if (index >= scripts.length) return;
var script = document.createElement('script');
script.src = scripts_dir + scripts[index];
script.type = 'text/javascript';
script.onload = function() {
loadScript(index + 1);
};
script.onerror = function() {
console.error("Failed to load script:", script.src);
loadScript(index + 1); // Continue even if one fails
};
document.head.appendChild(script);
}
loadScript(0); // start the script loading chain
})();