////
/// (c) hidoo | MIT License
/// @group selector features
////

@use "sass:list";
@use "sass:map";
@use "sass:meta";
@use "../../../settings";

/// supported types
/// @access private
/// @type List
///
$_supported-types: (
  "link",
  "focus",
  "selected",
  "disabled",
  "current",
  "active"
) !default;

/// return merged state selectors
/// @param {String} $type ["link"] - type of state (one of `"link"`, `"focus"`, `"selected"`, `"disabled"` or `"current"`)
/// @param {List} $additional-selectors [()] - additional selectors
/// @return {List}
///
/// @deprecated
///
/// @example scss - scss inputs
///   $merged-focus-selectors: function.selector-merge-state("link"); // -> (":link", ":visited")
///
@function merge-state($type: "focus", $additional-selectors: ()) {
  @warn "[DEPRECATED] function.selector-merge-state is deprecated.";

  @if not list.index($_supported-types, $type) {
    @error "@function function.selector-merge-state: Argument $type must be one of #{meta.inspect($_supported-types)}.";
  }

  $selectors: ();

  @if $type == "link" {
    $selectors: list.join($selectors, (":link", ":visited"));
  } @else if $type == "focus" {
    $selectors: list.join($selectors, (":hover", ":focus"));

    @if meta.type-of(settings.$selector-focus) == "list" {
      $selectors: list.join($selectors, settings.$selector-focus);
    }
  } @else if $type == "selected" {
    $selectors: list.join($selectors, (":checked"));

    @if meta.type-of(settings.$selector-selected) == "list" {
      $selectors: list.join($selectors, settings.$selector-selected);
    }
  } @else if $type == "disabled" {
    $selectors: list.join($selectors, (":disabled"));

    @if meta.type-of(settings.$selector-disabled) == "list" {
      $selectors: list.join($selectors, settings.$selector-disabled);
    }
  } @else if $type == "current" {
    $selectors: list.join($selectors, ());

    @if meta.type-of(settings.$selector-current) == "list" {
      $selectors: list.join($selectors, settings.$selector-current);
    }
  } @else if $type == "active" {
    $selectors: list.join($selectors, ());

    @if meta.type-of(settings.$selector-active) == "list" {
      $selectors: list.join($selectors, settings.$selector-active);
    }
  }

  @return list.join($selectors, $additional-selectors);
}
