@use '../context' as *;

@include layer(utilities, $use-css-layers, $layer-prefix) {
// scale
@each $size, $value in $scale {
	%scale-#{$size} {
		scale: #{$value};
	}

	@include wrap-with-where(
		$selector: '.scale-#{$size}',
		$enabled: $zero-specificity-for-utilities
	) {
		@extend %scale-#{$size};
	}

	%scale-x-#{$size} {
		scale: #{$value} 1;
	}

	@include wrap-with-where(
		$selector: '.scale-x-#{$size}',
		$enabled: $zero-specificity-for-utilities
	) {
		@extend %scale-x-#{$size};
	}

	%scale-y-#{$size} {
		scale: 1 #{$value};
	}

	@include wrap-with-where(
		$selector: '.scale-y-#{$size}',
		$enabled: $zero-specificity-for-utilities
	) {
		@extend %scale-y-#{$size};
	}
}

// rotate
@include spread-map-into-utilities(
	$map: $rotate,
	$class: rotate,
	$attribute: transform,
	$zero-specificity: $zero-specificity-for-utilities
);

// transform-origin
@include spread-map-into-utilities(
	$map: $transform-origin,
	$class: origin,
	$attribute: transform-origin,
	$zero-specificity: $zero-specificity-for-utilities
);

// translate
@each $size, $value in $translate {
	$escaped-size: str-replace(#{$size}, '/', '\/');

	%translate-#{$size} {
		translate: #{$value} #{$value};
	}

	@include wrap-with-where(
		$selector: '.translate-#{$escaped-size}',
		$enabled: $zero-specificity-for-utilities
	) {
		@extend %translate-#{$size};
	}

	%translate-x-#{$size} {
		translate: #{$value} 0;
	}

	@include wrap-with-where(
		$selector: '.translate-x-#{$escaped-size}',
		$enabled: $zero-specificity-for-utilities
	) {
		@extend %translate-x-#{$size};
	}

	%translate-y-#{$size} {
		translate: 0 #{$value};
	}

	@include wrap-with-where(
		$selector: '.translate-y-#{$escaped-size}',
		$enabled: $zero-specificity-for-utilities
	) {
		@extend %translate-y-#{$size};
	}

	%-translate-#{$size} {
		translate: -#{$value} -#{$value};
	}

	@include wrap-with-where(
		$selector: '.-translate-#{$escaped-size}',
		$enabled: $zero-specificity-for-utilities
	) {
		@extend %-translate-#{$size};
	}

	%-translate-x-#{$size} {
		translate: -#{$value} 0;
	}

	@include wrap-with-where(
		$selector: '.-translate-x-#{$escaped-size}',
		$enabled: $zero-specificity-for-utilities
	) {
		@extend %-translate-x-#{$size};
	}

	%-translate-y-#{$size} {
		translate: 0 -#{$value};
	}

	@include wrap-with-where(
		$selector: '.-translate-y-#{$escaped-size}',
		$enabled: $zero-specificity-for-utilities
	) {
		@extend %-translate-y-#{$size};
	}
}

}
