@mixin RV-Fan--horizontal($-base_height, $-base_width, $-prefix: '&', $-suffix: '') {

    #{$-prefix}__Container#{$-suffix} {
        flex-direction: row;
    }

    #{$-prefix}__Container#{$-suffix} #{$-prefix}__Surface {
        min-width: $-base_width;
        height: $-base_height;
    }
}

@mixin RV-Fan--vertical($-base_height, $-base_width, $-prefix: '&', $-suffix: '') {
    #{$-prefix}__Container#{$-suffix} {
        flex-direction: column;
        width: max-content;
    }

    #{$-prefix}__Container#{$-suffix} #{$-prefix}__Surface {
        width: $-base_width;
        min-height: $-base_height;
    }
}

@mixin RV-Fan--auto($-base_height, $-base_width, $-prefix: '&', $-suffix: '') {

    #{$-prefix}__Container#{$-suffix} {
        flex-flow: row wrap;
    }

    #{$-prefix}__Container#{$-suffix} #{$-prefix}__Surface {
        width: calc(100% - #{$-base_width});
        min-width: $-base-width;
        height: $-base_height;
    }
}

@mixin RV-Fan--fullWidth($-base_height, $-base_width, $-prefix: '&', $-suffix: '') {

    #{$-prefix}__Container#{$-suffix} #{$-prefix}__Base,
    #{$-prefix}__Container#{$-suffix} #{$-prefix}__Surface {
        flex-grow: 1;
    }
}

@mixin RV-Fan ($-base_height, $-base_width, $-prefix: '&') {
    @include RV-Fan--vertical($-base_height, $-base_width, $-prefix, '--vertical');
    @include RV-Fan--horizontal($-base_height, $-base_width, $-prefix, '--horizontal');
    @include RV-Fan--auto($-base_height, $-base_width, $-prefix, '--auto');
    @include RV-Fan--fullWidth($-base_height, $-base_width, $-prefix, '--fullWidth');

    #{$-prefix}__Container {
        display: flex;
    }

    #{$-prefix}__Base {
        height: $-base_height;
        width: $-base_width;
        flex: 0 0 auto;
    }

    #{$-prefix}__Surface {
        @include RV-ContentCrop;
    }
}

.RV-Fan {
    @include RV-Fan(280px, 320px);
}