//
//  Copyright (c) 2021 GrowStocks
//
//  Permission is hereby granted, free of charge, to any person obtaining a copy
//  of this software and associated documentation files (the "Software"), to deal
//  in the Software without restriction, including without limitation the rights
//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
//  copies of the Software, and to permit persons to whom the Software is
//  furnished to do so, subject to the following conditions:
//
//  The above copyright notice and this permission notice shall be included in all
//  copies or substantial portions of the Software.
//
//  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
//  SOFTWARE.
//

@use 'sass:map';
@use 'sass:color';
@use 'sass:math';

@use '../support';

@function split($color) {

    @return (
        // 'lighter': setter.set-tint($color, 65%),
        'light': support.tint($color, 32%),
        'default': $color,
        'dark': support.shade($color, 47%),
        // 'darker': setter.set-shade($color, 65%)
    );

}

@function fill-missing($colors) {

    @if support.is-type('map', $colors) {

        @if not map.has-key($colors, 'default') {
            @error 'Missing crucial property "default". Please provide the "default" property and its value before overriding the other values';
        }

        @if not map.has-key($colors, 'light') and map.has-key($colors, 'dark') {

            $_split-light: support.tint(map.get($colors, 'default'), 32%);

            $_split-map: (
                'light': $_split-light,
                'default': map.get($colors, 'default'),
                'dark': map.get($colors, 'dark')
            );

            @return $_split-map;

        } @else if not map.has-key($colors, 'dark') and map.has-key($colors, 'light') {

            $_split-dark: support.shade(map.get($colors, 'default'), 47%);

            $_split-map: (
                'light': map.get($colors, 'light'),
                'default': map.get($colors, 'default'),
                'dark': $_split-dark
            );

            @return $_split-map;

        } @else if not map.has-key($colors, 'dark') and not map.has-key($colors, 'light') {

            @return split(map.get($colors, 'default'));

        } @else {

            @return $colors;

        }

    }

    @return $colors;

}
