src/core/services/layout/layout.js
function updateClassWithValue(element, className) {
    var lastClass;

    return function updateClassFn(newValue) {
      var value = validateAttributeValue(className, newValue || "");
      if (angular.isDefined(value)) {
        if (lastClass) element.removeClass(lastClass);
        lastClass = !value ? className : className + "-" + value.trim().replace(WHITESPACE, "-");
        element.addClass(lastClass);
      }
    };
  }
function updateClassWithValue(element, className) {
    var lastClass;

    return function updateClassFn(newValue) {
      var value = validateAttributeValue(className, newValue || "");
      if (angular.isDefined(value)) {
        if (lastClass) element.removeClass(lastClass);
        lastClass = !value ? className : className + "-" + value.trim().replace(WHITESPACE, "-");
        element.addClass(lastClass);
      }
    };
  }
function updateClassWithValue ( element , className ) { var lastClass ; return function updateClassFn ( newValue ) { var value = validateAttributeValue ( className , newValue || "" ) ; if ( angular . isDefined ( value ) ) { if ( lastClass ) element . removeClass ( lastClass ) ; lastClass = ! value ? className : className + "-" + value . trim ( ) . replace ( WHITESPACE , "-" ) ; element . addClass ( lastClass ) ; } } ; }
After link-phase, do NOT remove deprecated layout attribute selector.
Instead watch the attribute so interpolated data-bindings to layout
selectors will continue to be supported.

$observe() the className and update with new class (after removing the last one)

e.g. `layout="{{layoutDemo.direction}}"` will update...

NOTE: The value must match one of the specified styles in the CSS.
For example `flex-gt-md="{{size}}`  where `scope.size == 47` will NOT work since
only breakpoints for 0, 5, 10, 15... 100, 33, 34, 66, 67 are defined.
After link - phase do NOT remove deprecated layout attribute selector . Instead watch the attribute so interpolated data - bindings to layout selectors will continue to be supported .