馃悕馃悕馃悕
at main 63 lines 1.3 kB view raw
1 2$css(` 3 4.control-panel { 5 display: flex; 6 flex-direction: column; 7 gap: 1rem; 8 padding: 0.5rem; 9 background: var(--main-background); 10 font-family: var(--main-font); 11 color: var(--main-solid); 12 overflow-y: scroll; 13 height: 100%; 14 width: 100%; 15} 16 17.control-panel > * { 18 max-width: 300px; 19} 20 21.control-panel legend { 22 line-height: 1rem; 23 margin: auto; 24 border-bottom: 3px double var(--main-solid); 25 padding-top: 0.5rem; 26 padding-bottom: 0.2rem; 27 padding-left: 0.5rem; 28 padding-right: 0.5rem; 29} 30 31.control { 32 display: flex; 33 flex-direction: column; 34 flex-shrink: 0; 35} 36 37`); 38 39async function createControl(target, spec) { 40 await $mod(`control/${spec.type}`, target, [spec]); 41} 42 43export async function main(target, name, controls) { 44 const id = name.toLowerCase().replace(/\s+/g, "-"); 45 46 const container = document.createElement("fieldset"); 47 container.className = "control-panel"; 48 container.setAttribute("aria-labelledby", id); 49 50 const legend = document.createElement("legend"); 51 legend.id = id; 52 legend.innerText = name; 53 container.appendChild(legend); 54 55 for (const control of controls) { 56 await createControl(container, control); 57 } 58 59 target.appendChild(container); 60 61 return { replace: true }; 62} 63