overrideInput = {
let asFrag;
{
asFrag = document.createDocumentFragment();
let asSpan = document.createElement("span");
asSpan.textContent = "as";
asSpan.classList.add("tok-keyword");
asFrag.append(" ", asSpan, " ");
}
let makeName = name => {
let wrap = document.createElement("span");
wrap.classList.add("tok-variableName", "tok-definition");
let anchor = document.createElement("a");
anchor.style.color = "unset";
if (name = name.trim()) {
anchor.setAttribute("href", `#${name}`);
anchor.textContent = name;
}
wrap.append(anchor);
return wrap;
};
let f = function overrideInput(variable, suggestion) {
variable = variable.trim();
(typeof suggestion == "string" || (typeof suggestion == "object" && suggestion instanceof String)) && (suggestion = suggestion.trim());
suggestion ||= undefined;
let wrap = document.createDocumentFragment();
if (suggestion) {
let newHolder = document.createElement("span");
newHolder.classList.add("tok-variableName", "variableNameInput");
newHolder.inputMode = "text";
newHolder.contentEditable = true;
newHolder.textContent = suggestion;
wrap.append(newHolder, asFrag.cloneNode(Infinity), makeName(variable));
} else {
let holder = document.createElement("span");
holder.classList.add("tok-variableName", "tok-definition");
holder.inputMode = "text";
holder.contentEditable = true;
holder.textContent = variable;
wrap.append(holder);
holder.addEventListener("input", () => {
let newHolder = holder;
holder = makeName(variable);
newHolder.classList.remove("tok-definition");
newHolder.classList.add("variableNameInput");
newHolder.parentNode.insertBefore(holder, newHolder.nextSibling);
holder.parentNode.insertBefore(asFrag.cloneNode(Infinity), holder);
}, {once: true, passive: true});
}
return wrap;
};
return f;
}