+/**
+ * This file is a factory for DOM UI elements.
+ */
+
+/**
+ * Returns a settings container that includes a section and a heading.
+ */
export function settingsContainer({id, label, level=2}) {
const container = document.createElement('section');
return container;
};
+/**
+ * Returns a slider that includes a label, and can optionally be set to
+ * "shift" to a different step. (eg. we use this for π mode, where frequency
+ * and amplitude are mapped to π/8 increments.
+ */
export function slider({
id,
min,
slider.step = step;
}
});
+
+ document.addEventListener('touchstart', function(event) {
+ if (event.touches.length == 3) {
+ if (slider.classList.contains('shifted')) {
+ slider.classList.remove('shifted');
+ slider.step = step;
+ } else {
+ slider.classList.add('shifted');
+ slider.step = shiftStep;
+ }
+ }
+ });
}
slider.addEventListener('input', () => set(slider.value));