JSFiddle - React, Tailwind, and code Playground

by whelkaholism

HTML

<xmp id="o"></xmp>

JavaScript

// Copyright 2015 cFront Software Ltd, http://www.cfront.co.uk
// Free for any use, provided this copyright notice is maintained.
if(typeof(cFront) === 'undefined') var cFront = {};
if(typeof(cFront.EV) == 'undefined') cFront.EV = {};

// ============================================================================================================================================================
cFront.EV.Converter = function(iso, shutterspeed, fstop)
{	
	// Original values
    var _o_iso;
    var _o_fstop;
    var _o_shutterspeed;
	// Current values
    var _iso;
    var _fstop;
    var _shutterspeed;
	//

	// Accessors
    this.ISO = function() { return _iso; }
    this.FStop = function() { return _fstop; }
    this.ShutterSpeed = function() { return _shutterspeed; }

    // ---------------------------------------------------------------------------------------------------------
	// Initialize
	_iso = _o_iso = iso;
    _o_shutterspeed = shutterspeed.clone();
    _shutterspeed = shutterspeed.clone();
    _fstop = _o_fstop = fstop;
	//

    // ---------------------------------------------------------------------------------------------------------
    this.reset = function()
    {
        _iso = _o_iso;
        _fstop = _o_fstop;
        _shutterspeed = _o_shutterspeed.clone();
    };

    // Returns false if an out of range value would be generated
    this.setISO = function(new_iso, priority)
    {
        var stops = cFront.EV.getEVChangeBetweenISOSpeeds(_iso, new_iso);        
        var ok;

        if(priority == cFront.EV.KEEP_SHUTTER)
            ok = this.changeAperture(Math.abs(stops), stops > 0);
        else
            ok = this.changeShutterSpeed(Math.abs(stops), stops > 0);

        if(ok)
            _iso = new_iso;

        return ok;
    };

    // Returns false if an out of range value would be generated
    this.setFStop = function(new_fstop)
    {
        var stops = cFront.EV.getEVChangeBetweenFStops(_fstop, new_fstop);

        var ok =...