(function($TDP){ // // Block: Setup a simple JavaScript object configuration loader. // window.TDPF_loadConfigurationFile = function(pluginObject, fileNameUser, fileNameDefault, onSuccess, onFailure){ var identifier = pluginObject.$id; var token = pluginObject.$token; $TDP.checkFileExists(token, fileNameUser).then(exists => { var fileName = exists ? fileNameUser : fileNameDefault; (exists ? $TDP.readFile(token, fileName, true) : $TDP.readFileRoot(token, fileName)).then(contents => { var obj; try{ obj = eval("("+contents+")"); }catch(err){ if (!(onFailure && onFailure(err))){ $TD.alert("warning", "Problem loading '"+fileName+"' file for '"+identifier+"' plugin, the JavaScript syntax is invalid: "+err.message); } return; } onSuccess && onSuccess(obj); }).catch(err => { if (!(onFailure && onFailure(err))){ $TD.alert("warning", "Problem loading '"+fileName+"' file for '"+identifier+"' plugin: "+err.message); } }); }).catch(err => { if (!(onFailure && onFailure(err))){ $TD.alert("warning", "Problem checking '"+fileNameUser+"' file for '"+identifier+"' plugin: "+err.message); } }); }; // // Block: Setup a function to add/remove custom CSS. // window.TDPF_createCustomStyle = function(pluginObject){ var element = document.createElement("style"); element.id = "plugin-"+pluginObject.$id+"-"+Math.random().toString(36).substring(2, 7); document.head.appendChild(element); var obj = { insert: (rule) => element.sheet.insertRule(rule, 0), remove: () => $(element).remove() }; obj.element = element; return obj; }; })($TDP);