function adjustableInputNumbers(el, mapper = v => v) {

    function handleScroll(e) {
        const inc = ([0.001, 0.01, 0.1])[Number(e.shiftKey || e.ctrlKey * 2)] * (e.deltaY < 0 ? 1 : -1);

        let index = 0;
        let off = el.selectionStart;
        el.value = el.value.replace(/[\d.]+/g, (v, i) => {

            // Check if number is in cursor range and increase it
            if (i <= off && i + v.length >= off) {
                off = i;
                return mapper(Number(v), inc, index);
            }

            index++;
            return v;
        });

        el.focus();
        el.setSelectionRange(off, off);

        // Prevent default and trigger input event
        e.preventDefault();
        el.dispatchEvent(new Event('input'));
    }

    // Bind events
    on(el, 'focus', () => on(window, 'wheel', handleScroll, {passive: false}));
    on(el, 'blur', () => off(window, 'wheel', handleScroll));
}
Creates the ability to change numbers in an input field with the scroll-wheel.
@param el
@param mapper