// ============================================================================================= //
//                                           FUNCTIONS                                           //
// ============================================================================================= //

@use "sass:list";
@use "sass:map";
@use "sass:string";
@use "@unsass/types" as type;
@use "./variables";

@function extend($default, $property) {
    $map: $default;

    @if (type.is-map(map.get(variables.$extend, $property))) {
        $map: map.merge($default, map.get(variables.$extend, $property));
    }

    @return $map;
}

@function has-declaration($property) {
    @if type.is-list(variables.$core) or type.is-string(variables.$core) {
        @if list.index(variables.$core, $property) != null or list.length(variables.$core) == 0 {
            @return true;
        } @else {
            @return false;
        }
    } @else if type.is-map(variables.$core) {
        @if map.get(variables.$core, $property) == false {
            @return false;
        } @else {
            @return true;
        }
    }
}

@function has-breakpoints() {
    $breakpoint: false;

    @if (map.has-key(variables.$engine, "screens") and type.is-map(map.get(variables.$engine, "screens"))) or (map.has-key(variables.$engine, "screens") and type.is-list(map.get(variables.$engine, "screens"))) {
        $breakpoint: true;
    }

    @return $breakpoint;
}
