function genSentence (data, ignoreList, f) {
if (f === undefined) {
f = (x,y) => y
}
var selected = data['variable_info'].map( (x) => x.default )
var selected_old = data['variable_info'].map( (x) => x.default )
function sentence(caption) {
var output_div = html`<div class="medium-copy"></div>`
function handleEventChangeGenerator(varnum){
function handleEventChange(value) {
selected_old = [...selected]
selected[varnum] = value
selected = f(selected_old, selected)
console.log(selected)
var selection = getSelection(data, selected)
const newdiv = sentence(selection.text, data)
output_div.removeChild(output_div.firstChild);
output_div.append(newdiv)
}
return handleEventChange
}
var splits = parseString(caption)
var spans = []
for (var i = 0; i < splits.length; i++) {
if (typeof(splits[i]) == typeof([])) {
if (ignoreList === undefined || ignoreList.indexOf(splits[i][0]) == -1) {
var inputfield = html`<span class="position-relative"></span>`
var dropdown = generateInput(data['variable_info'][splits[i][0]].values,
handleEventChangeGenerator(splits[i][0]),
selected[splits[i][0]])
var shadowText = html`<span class="medium-copy shadow">${splits[i][1]}</span>`
document.body.appendChild(shadowText);
console.log(document.readyState)
var width = shadowText.offsetWidth
console.log(width)
document.body.removeChild(document.body.lastChild)
inputfield.append(dropdown)
inputfield.append(shadowText)
dropdown.style.width = (width) + "px"
spans.push(inputfield)
} else {
spans.push(html`<span> … </span>`)
}
}
else {
spans.push(html`<span>${splits[i]}</span>`)
}
}
output_div.value = f(selected_old, selected)
output_div.append(html`${spans}`)
return output_div
}
console.log(selected)
return sentence(getSelection(data, selected).text)
}