| define([
  'jquery',
  './utils'
], function ($, CompatUtils) {
  // No-op CSS adapter that discards all classes by default
  function _containerAdapter (clazz) {
    return null;
  }
  function ContainerCSS () { }
  ContainerCSS.prototype.render = function (decorated) {
    var $container = decorated.call(this);
    var containerCssClass = this.options.get('containerCssClass') || '';
    if ($.isFunction(containerCssClass)) {
      containerCssClass = containerCssClass(this.$element);
    }
    var containerCssAdapter = this.options.get('adaptContainerCssClass');
    containerCssAdapter = containerCssAdapter || _containerAdapter;
    if (containerCssClass.indexOf(':all:') !== -1) {
      containerCssClass = containerCssClass.replace(':all:', '');
      var _cssAdapter = containerCssAdapter;
      containerCssAdapter = function (clazz) {
        var adapted = _cssAdapter(clazz);
        if (adapted != null) {
          // Append the old one along with the adapted one
          return adapted + ' ' + clazz;
        }
        return clazz;
      };
    }
    var containerCss = this.options.get('containerCss') || {};
    if ($.isFunction(containerCss)) {
      containerCss = containerCss(this.$element);
    }
    CompatUtils.syncCssClasses($container, this.$element, containerCssAdapter);
    $container.css(containerCss);
    $container.addClass(containerCssClass);
    return $container;
  };
  return ContainerCSS;
});
 |