/** * Build the editor's right-panel controls innerHTML. * * Returns the string — caller creates the wrapper element, attaches its * own touch / swipe-to-dismiss listeners, then sets innerHTML. Per-tool * sections are all toggled `display:none` here; the tool-switch handler * in galleryEditor.js shows the section matching the active tool. * * @param {{ color: string, brushSize: number, wandTolerance: number }} ctx * @returns {string} */ export function controlsHTML({ color, brushSize, wandTolerance }) { const brushSliderValue = Math.round(Math.log(Math.max(1, brushSize)) / Math.log(800) * 1000); return `
`; } /** * Layer-panel header markup. Static; static IDs are wired by the caller. * @returns {string} */ export function layerPanelHTML() { return `
Layers
`; }