@function __is-empty($value: null) {
    @if ($value == null) {
        @return true;
    }

    @if (__is-string($value)) {
        @return str-length($value) == 0;
    }

    @if (__is-map-like($value)) {
        @return length($value) == 0;
    }

    @if (__is-boolean($value)) {
        @return true;
    }

    @return not __length(__keys($value));
}


/// Checks if a value is empty.
///
///
/// @access public
/// @group Lang
/// @param {List|Map|string} $value The value to inspect.
/// @returns {boolean} Returns `true` if `$value` is empty, else `false`.
/// @example scss
/// $foo: _is-empty(null);
/// // => true
///
/// $foo: _is-empty(true);
/// // => true
///
/// $foo: _is-empty(1);
/// // => true
///
/// $foo: _is-empty((1, 2, 3));
/// // => false
///
/// $foo: _is-empty(( 'a': 1 ));
/// // => false
///

@function _is-empty($args...) {
    @return call(get-function('__is-empty'), $args...);
}
