MCPcopy Create free account
hub / github.com/FastLED/FastLED / createSlider

Function createSlider

src/platforms/wasm/compiler/modules/ui/ui_manager.ts:281–337  ·  view source on GitHub ↗

* Creates a slider (range) input UI element with live value display * @param {Object} element - Element configuration object * @param {string} element.name - Display name for the slider * @param {string} element.id - Unique identifier for the slider * @param {number} element.value - Current/defa

(element)

Source from the content-addressed store, hash-verified

279 * @returns {HTMLDivElement} Container div with label, value display, and slider
280 */
281function createSlider(element) {
282 const controlDiv = document.createElement('div');
283 controlDiv.className = 'ui-control slider-control';
284
285 // Create the slider container with relative positioning
286 const sliderContainer = document.createElement('div');
287 sliderContainer.className = 'slider-container';
288
289 // Create the slider input
290 const slider = document.createElement('input');
291 slider.type = 'range';
292 slider.id = `slider-${element.id}`;
293 slider.setAttribute('min', String(Number.parseFloat(String(element.min))));
294 slider.setAttribute('max', String(Number.parseFloat(String(element.max))));
295 slider.setAttribute('value', String(Number.parseFloat(String(element.value))));
296
297 // Check if element.step exists and is not undefined/null
298 if (element.step !== undefined && element.step !== null) {
299 slider.setAttribute('step', String(Number.parseFloat(String(element.step))));
300 } else {
301 // Set a default step
302 slider.step = 'any';
303 }
304
305 // Create the overlay label div
306 const overlayDiv = document.createElement('div');
307 overlayDiv.className = 'slider-label-overlay';
308
309 const labelText = document.createElement('span');
310 labelText.className = 'label-text';
311 labelText.textContent = element.name;
312
313 const valueDisplay = document.createElement('span');
314 valueDisplay.className = 'slider-value';
315 valueDisplay.textContent = Number(element.value).toFixed(3);
316
317 overlayDiv.appendChild(labelText);
318 overlayDiv.appendChild(valueDisplay);
319
320 // Set initial value in next frame to ensure proper initialization
321 setTimeout(() => {
322 slider.setAttribute('value', String(Number.parseFloat(String(element.value))));
323 valueDisplay.textContent = Number(slider.value).toFixed(3);
324 }, 0);
325
326 // Update value display when slider changes
327 slider.addEventListener('input', () => {
328 valueDisplay.textContent = Number(slider.value).toFixed(3);
329 });
330
331 // Add elements to container
332 sliderContainer.appendChild(slider);
333 sliderContainer.appendChild(overlayDiv);
334 controlDiv.appendChild(sliderContainer);
335
336 return controlDiv;
337}
338

Callers 1

createControlElementMethod · 0.85

Calls 3

StringClass · 0.85
parseFloatMethod · 0.80
addEventListenerMethod · 0.45

Tested by

no test coverage detected