JSFiddle - React, Tailwind, and code Playground

JavaScript

function HamburgerException(message) {
  this.name = "HamburgerException";
  this.message = message;

  if (Error.captureStackTrace) {
    Error.captureStackTrace(this, HamburgerException);
  } else {
    this.stack = (new Error()).stack;
  }
}

HamburgerException.prototype = Object.create(Error.prototype);

function Hamburger(size, stuff) {
  if (size == Hamburger.SIZE_SMALL || size == Hamburger.SIZE_LARGE) {
   this.size = size;
  } else if (size === undefined) {
    throw new HamburgerException("HamburgerException: no size given");
  } else if (size != Hamburger.SIZE_SMALL || size != Hamburger.SIZE_LARGE) {
    throw new HamburgerException("HamburgerException: invalid size " + size.name);
  } 
  
  if (stuff == Hamburger.STUFF_CHEESE || stuff == Hamburger.STUFF_SALAD || stuff == Hamburger.STUFF_POTATO) {
   this.stuff = stuff;
  } else if (stuff === undefined) {
    throw new HamburgerException("HamburgerException: no stuff given");
  } else if (stuff != Hamburger.STUFF_CHEESE || stuff != Hamburger.STUFF_SALAD || stuff != Hamburger.STUFF_POTATO) {
    throw new HamburgerException("HamburgerException: invalid stuff " + stuff.name);
  }
  
  this.sauces = [];
  
  
	this.menu[Hamburger.SIZE_SMALL] = {price: 50, calories: 20};
  this.menu[Hamburger.SIZE_LARGE] = {price: 100, calories: 40};
  
  this.menu[Hamburger.STUFF_CHEESE] = {price: 10, calories: 20};
  this.menu[Hamburger.STUFF_SALAD] = {price: 20, calories: 5};
  this.menu[Hamburger.STUFF_POTATO] = {price: 15, calories: 10};
  
  this.menu[Hamburger.SAUCE_SAUCE] = {price: 15, calories: 0};
  this.menu[Hamburger.SAUCE_MAYO] = {price: 20, calories: 5};
}

Hamburger.SIZE_SMALL = 'SIZE_SMALL';
Hamburger.SIZE_LARGE = 'SIZE_LARGE';

Hamburger.STUFF_CHEESE = 'STUFF_CHEESE';
Hamburger.STUFF_SALAD = 'STUFF_SALAD';
Hamburger.STUFF_POTATO = 'STUFF_POTATO';

Hamburger.SAUCE_SAUCE = 'SAUCE_SAUCE';
Hamburger.SAUCE_MAYO = 'SAUCE_MAYO';

Hamburger.prototype.addSauces = function(sauces) {
	for (var i = 0; i <...