// @ts-nocheck function appendHTML(parent, html) { var div = document.createElement("div"); div.innerHTML = html; while (div.children.length > 0) { parent.appendChild(div.children[0]); } div.remove(); } const vscode = acquireVsCodeApi(); const textInputTemplate = `
@tooltip
`; const textInputGroupTemplate = `
@tooltip
`; const numberInputTemplate = `
@tooltip
`; const checkboxTemplate = `
@tooltip
`; const textareaTemplate = `
@tooltip
`; const globalParent = document.getElementById("globalSettings"); const envParent = document.getElementById("environmentSettings"); const saveStatus = document.getElementById("saveStatus"); globalMap.forEach(settingMap => { let template; switch (settingMap.type) { case "textinput": template = textInputTemplate; break; case "numberinput": template = numberInputTemplate; break; case "checkbox": template = checkboxTemplate; break; case "textarea": template = textareaTemplate; break; } const html = template .replace(new RegExp("@name", "g"), settingMap.name) .replace(new RegExp("@placeholder", "g"), settingMap.placeholder) .replace( new RegExp("@correspondingSetting", "g"), settingMap.correspondingSetting ) .replace(new RegExp("@tooltip"), "") .replace(new RegExp("@settingType", "g"), "global"); appendHTML(globalParent, html); }); envMap.forEach(envMap => { let template; switch (envMap.type) { case "textinput": template = textInputTemplate; break; case "numberinput": template = textInputTemplate; break; case "checkbox": template = checkboxTemplate; break; } const isInputGroup = envMap.correspondingSetting === "gist"; let disabledStatus = ""; if (isInputGroup) { template = textInputGroupTemplate; if (!_.get(envData, "gist") || !_.get(globalData, "token")) { disabledStatus = "disabled"; } } const html = template .replace(new RegExp("@name", "g"), envMap.name) .replace(new RegExp("@placeholder", "g"), envMap.placeholder) .replace( new RegExp("@correspondingSetting", "g"), envMap.correspondingSetting ) .replace( new RegExp("@tooltip"), ` ` ) .replace(new RegExp("@settingType", "g"), "env") .replace( new RegExp("@action", "g"), `inputGroupAction('${envMap.correspondingSetting}')` ) .replace(new RegExp("@disabled", "g"), disabledStatus); appendHTML(envParent, html); }); $(document).ready(function() { save(); $('[data-toggle="tooltip"]').tooltip({ container: "html" }); $(".text") .each((i, el) => { if ($(el).attr("settingType") === "global") { $(el).val(_.get(globalData, $(el).attr("setting"))); } else { $(el).val(envData[$(el).attr("setting")]); } }) .change(function() { save(); let val = $(this).val(); vscode.postMessage({ command: $(this).attr("setting"), text: val, type: $(this).attr("settingType") }); }); $(".number") .each((i, el) => { if ($(el).attr("settingType") === "global") { $(el).val(_.get(globalData, $(el).attr("setting"))); } else { $(el).val(envData[$(el).attr("setting")]); } }) .change(function() { save(); let val = Number($(this).val()); vscode.postMessage({ command: $(this).attr("setting"), text: val, type: $(this).attr("settingType") }); }); $(".checkbox") .each((i, el) => { if ($(el).attr("settingType") === "global") { $(el).prop("checked", _.get(globalData, $(el).attr("setting"))); } else { $(el).prop("checked", envData[$(el).attr("setting")]); } }) .change(function() { save(); let val = $(this).is(":checked"); vscode.postMessage({ command: $(this).attr("setting"), text: val, type: $(this).attr("settingType") }); }); $(".textarea") .each((i, el) => { let str = ""; const items = _.get(globalData, $(el).attr("setting")); items.forEach(item => (str += item + "\n")); $(el).val(str.slice(0, -1)); $(el).prop("rows", items.length); }) .change(function() { save(); let val = []; $(this) .val() .split("\n") .forEach(item => { if (item !== "") { val.push(item); } }); vscode.postMessage({ command: $(this).attr("setting"), text: val, type: "global" }); }); }); function save() { saveStatus.innerHTML = ``; setTimeout( () => (saveStatus.innerHTML = ``), 1000 ); } function inputGroupAction(setting) { if (setting === "gist") { vscode.postMessage("openGist"); } }