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

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

/// initialized text settings
/// @param {Number} $letter-spacing [settings.$letter-spacing] - setting for `letter-spacing`
/// @param {Number|String} $line-height [settings.$line-height] - setting for `line-height`
/// @param {String} $text-align ["left"] - setting for `text-align`
/// @param {String} $text-decoration ["none"] - setting for `text-decoration`
/// @param {Number} $text-indent [0] - setting for `text-indent`
/// @param {String} $white-space ["normal"] - setting for `white-space`
/// @param {String} $word-break ["break-all"] - setting for `word-break`
/// @param {String} $word-wrap ["break-word"] - setting for `word-wrap`
///
/// @deprecated
///
/// @example scss - scss inputs
///   .selector {
///     @include mixin.text-initialize();
///   }
///
/// @example css - css outputs
///   .selector {
///     letter-spacing: 0.04em;
///     line-height: 1.5;
///     text-align: left;
///     text-decoration: none;
///     text-indent: 0;
///     white-space: normal;
///     word-break: break-all;
///     word-wrap: break-word;
///   }
///
@mixin initialize(
  $letter-spacing: null,
  $line-height: null,
  $text-align: "left",
  $text-decoration: "none",
  $text-indent: 0,
  $white-space: "normal",
  $word-break: "break-all",
  $word-wrap: "break-word"
) {
  @warn "[DEPRECATED] mixin.text-initialize is deprecated.";

  // normalize $letter-spacing
  @if not $letter-spacing {
    @if meta.type-of(settings.$letter-spacing) == "number" {
      $letter-spacing: settings.$letter-spacing;
    } @else {
      $letter-spacing: 0.04em;

      @if settings.$verbose {
        // stylelint-disable-next-line max-line-length
        @warn "@mixin mixin.text-initialize: $letter-spacing set #{$letter-spacing}, because settings.$letter-spacing is not number.";
      }
    }
  }

  // normalize $line-height
  @if not $line-height {
    @if meta.type-of(settings.$line-height) == "number" {
      $line-height: settings.$line-height;
    } @else {
      $line-height: 1.5;

      @if settings.$verbose {
        // stylelint-disable-next-line max-line-length
        @warn "@mixin mixin.text-initialize: $line-height set #{$line-height}, because settings.$line-height is not number.";
      }
    }
  }

  line-height: #{$line-height};
  text-align: #{$text-align};
  text-decoration: #{$text-decoration};
  text-indent: #{$text-indent};
  letter-spacing: #{$letter-spacing};

  // set white-space property only if $white-space is valid string
  @if meta.type-of($white-space) == "string" and $white-space != "" {
    white-space: #{$white-space};
  }

  // set word-break property only if $word-break is valid string
  @if meta.type-of($word-break) == "string" and $word-break != "" {
    word-break: #{$word-break}; // stylelint-disable-line plugin/no-unsupported-browser-features
  }

  // set word-wrap property only if $word-wrap is valid string
  @if meta.type-of($word-wrap) == "string" and $word-wrap != "" {
    word-wrap: #{$word-wrap};
  }
}
