@use 'sass:meta';
@use 'sass:list';
@use 'sass:color';
@use 'sass:math';
@use 'sass:string';
@use 'sass:selector';
@use 'asset' as *;
@use 'black' as *;
@use 'bottom-shadow' as *;
@use 'clamp-val' as *;
@use 'closest-direction' as *;
@use 'closest-position' as *;
@use 'color-complement' as *;
@use 'color-contrast' as *;
@use 'color-invert' as *;
@use 'color-text-contrast' as *;
@use 'color-to-string' as *;
@use 'conv-angle' as *;
@use 'conv-color-name' as *;
@use 'conv-color' as *;
@use 'conv-to-em' as *;
@use 'conv-to-px' as *;
@use 'conv-to-rem' as *;
@use 'num-to-ratio' as *;
@use 'entity' as *;
@use 'equals-false' as *;
@use 'equals-true' as *;
@use 'every' as *;
@use 'exp-maclaurin' as *;
@use 'extend-map' as *;
@use 'factorial' as *;
@use 'fibonacci' as *;
@use 'first-of' as *;
@use 'font-stack' as *;
@use 'get-color-type' as *;
@use 'is-absolute-length' as *;
@use 'is-alias' as *;
@use 'is-angle' as *;
@use 'is-calculation' as *;
@use 'is-color' as *;
@use 'is-conventional' as *;
@use 'is-empty' as *;
@use 'is-falsey' as *;
@use 'is-float' as *;
@use 'is-frequency' as *;
@use 'is-global-value' as *;
@use 'is-integer' as *;
@use 'is-length' as *;
@use 'is-list' as *;
@use 'is-map' as *;
@use 'is-number' as *;
@use 'is-percentage' as *;
@use 'is-position' as *;
@use 'is-relative-length' as *;
@use 'is-reserved' as *;
@use 'is-resolution' as *;
@use 'is-string' as *;
@use 'is-time' as *;
@use 'is-true' as *;
@use 'is-valid-hex' as *;
@use 'last-index' as *;
@use 'last-of' as *;
@use 'linear-interpolation' as *;
@use 'list-chunk' as *;
@use 'list-contains' as *;
@use 'list-count-values' as *;
@use 'list-loop' as *;
@use 'list-prepend' as *;
@use 'list-purge' as *;
@use 'list-range' as *;
@use 'list-remove-duplicates' as *;
@use 'list-remove-nth' as *;
@use 'list-replace-nth' as *;
@use 'list-reverse' as *;
@use 'list-slice' as *;
@use 'list-sort' as *;
@use 'list-to-map' as *;
@use 'list-to-string' as *;
@use 'list-update' as *;
@use 'make-long-shadow' as *;
@use 'map-get-key-chains' as *;
@use 'map-is-deep' as *;
@use 'map-is-flat' as *;
@use 'map-to-list' as *;
@use 'map-to-string' as *;
@use 'num-to-ratio' as *;
@use 'order-index' as *;
@use 'pi' as *;
@use 'ratio-to-percentage' as *;
@use 'remove-from' as *;
@use 'remove-where' as *;
@use 'resolve-alias' as *;
@use 'shade' as *;
@use 'some' as *;
@use 'str-remove' as *;
@use 'str-replace' as *;
@use 'str-to-list' as *;
@use 'str-to-num' as *;
@use 'strip-unit' as *;
@use 'time-equation' as *;
@use 'timing' as *;
@use 'tint' as *;
@use 'to-cmyk' as *;
@use 'to-fixed' as *;
@use 'to-hex' as *;
@use 'to-list' as *;
@use 'top-shadow' as *;
@use 'trend-line' as *;
@use 'white' as *;

/// Apply `$function` with `$args` to each item from `$list`.
///
/// @param {List} $list - List of items
/// @param {String} $function - Function to apply to every item from `$list`.
/// @param {Arglist} $args - Extra arguments to pass to `$function`.
///
/// @return {List} The result of the function being applied to the list.
///
/// @access public
/// @group Utilities
///
/// @throw Invalid $function name
@function walk($list, $function, $args...) {
  @if not meta.function-exists($function) {
    @error 'There is no #{meta.inspect($function)} function available to ' +
        'the [ walk() ] function.';
  }

  @for $i from 1 through list.length($list) {
    $list: list.set-nth(
      $list,
      $i,
      meta.call($function, list.nth($list, $i), $args...)
    );
  }

  @return $list;
}
