////
/// (c) hidoo | MIT License
/// @group plugin/spritesheet
////

@use "sass:map";
@use "sass:meta";

/// normalize values of spritesheet
/// @access private
/// @param {Map|List} $values [()] values of spritesheet
/// @return {Map|null}
///
@function normalize($values: ()) {
  $_spritesheets: ();
  $spritesheets: ();

  @if meta.type-of($values) == "map" {
    $_spritesheets: $values;
  } @else if meta.type-of($values) == "list" {
    @each $value in $values {
      @if meta.type-of($value) == "map" {
        $_spritesheets: map.merge($_spritesheets, $value);
      }
    }
  } @else {
    @return null;
  }

  @each $key, $value in $_spritesheets {
    @if meta.type-of($value) == "map" {
      @if map.has-key($value, "image") and map.has-key($value, "items") {
        $spritesheets: map.set($spritesheets, $key, $value);
      } @else {
        @warn "@function normalize: skip value of '#{$key}'. because it not have 'image' key or 'items' key.";
      }
    } @else {
      @warn "@function normalize: skip value of '#{$key}'. because it is not map.";
    }
  }

  @return $spritesheets;
}
