stickshift.js
function cx(classNames) {
  var classNamesArray;
  if (typeof classNames == 'object') {
    classNamesArray = Object.keys(classNames).filter(function(className) {
      return classNames[className];
    });
  } else {
    classNamesArray = Array.prototype.slice.call(arguments);
  }

  return classNamesArray.map(getClassName).join(' ');
}
function cx(classNames) {
  var classNamesArray;
  if (typeof classNames == 'object') {
    classNamesArray = Object.keys(classNames).filter(function(className) {
      return classNames[className];
    });
  } else {
    classNamesArray = Array.prototype.slice.call(arguments);
  }

  return classNamesArray.map(getClassName).join(' ');
}
function cx ( classNames ) { var classNamesArray ; if ( typeof classNames == 'object' ) { classNamesArray = Object . keys ( classNames ) . filter ( function ( className ) { return classNames [ className ] ; } ) ; } else { classNamesArray = Array . prototype . slice . call ( arguments ) ; } return classNamesArray . map ( getClassName ) . join ( ' ' ) ; }
This function is used to mark string literals representing CSS class names
so that they can be transformed statically. This allows for modularization
and minification of CSS class names.

In static_upstream, this function is actually implemented, but it should
eventually be replaced with something more descriptive, and the transform
that is used in the main stack should be ported for use elsewhere.

@param string|object className to modularize, or an object of key/values.
In the object case, the values are conditions that
determine if the className keys should be included.
@param [string ...]  Variable list of classNames in the string case.
@return string       Renderable space-separated CSS className.
This function is used to mark string literals representing CSS class names so that they can be transformed statically . This allows for modularization and minification of CSS class names .