@import './functions/calc-math'; /* * Method which inserts a full background-image property for a theme image. * It checks if the file exists and if it doesn't, it'll throw an error. * By default it will not include the background-image property if it is not found, * but this can be changed by changing the default value of $enable-missing-images to * be true. */ @function theme-background-image($path, $extension: $image-extension, $nocheck: false) { $path: file_join($relative-image-path-for-uis, $path + '.' + $extension); $background-image: none; @if $path { @if $nocheck { $background-image: $path; } @else if theme_image_exists($image-search-path, $path) { $background-image: $path; } @else { @warn "@theme-background-image: Theme image not found: #{$path}"; @if $enable-missing-images { $background-image: $path; } } @if $background-image != none { $background-image: url(file_join($theme-resource-path, $path)); } } @else { @warn "@theme-background-image: No arguments passed"; } @return $background-image; } @function get-image-url($path, $extension: $image-extension, $nocheck: false) { @return theme-background-image($path, $extension, $nocheck); } @function x($position) { @return parsebox($position, 1); } @function y($position) { @return parsebox($position, 2); } @function before($position) { @return parsebox($position, 1); } @function after($position) { @return parsebox($position, 2); } @function top($box) { @return parsebox($box, 1); } @function right($box) { @return parsebox($box, 2); } @function bottom($box) { @return parsebox($box, 3); } @function left($box) { @return parsebox($box, 4); } @function vertical($box) { $top: top($box); $bottom: bottom($box); @if $top == null or $bottom == null { @return null; } @return $top + $bottom; } @function horizontal($box) { $left: left($box); $right: right($box); @if $left == null or $right == null { @return null; } @return $left + $right; } @function boxmax($box) { @return max(max(top($box), right($box)), max(bottom($box), left($box))); } @function boxmin($box) { @return min(min(top($box), right($box)), min(bottom($box), left($box))); } @function boxContainsNull($list) { @for $i from 1 through length($list) { @if nth($list, $i) == null { @return true; } } @return false; } @function box($top, $right, $bottom, $left) { @if type-of($top) == list { $right: right($top); $bottom: bottom($top); $left: left($top); $top: top($top); } @if $top == $bottom and $right == $left { @if $top == $right { @return $top; } @return ($top $right); } @if $left == $right { @return ($top $right $bottom); } @return ($top $right $bottom $left); } @function rotate90($box) { @return box(left($box), top($box), right($box), bottom($box)); } @function rotate180($box) { @return box(bottom($box), left($box), top($box), right($box)); } @function rotate270($box) { @return box(right($box), bottom($box), left($box), top($box)); } @function flip-vertical($box) { @return box(bottom($box), right($box), top($box), left($box)); } @function flip-horizontal($box) { @return box(top($box), left($box), bottom($box), right($box)); } @function rtl($box) { @return box(top($box), left($box), bottom($box), right($box)); } @function rtl-background-position($pos) { $x: parsebox($pos, 1); $new-x: null; @if $x == right or $x == 100% { $new-x: 0; } @else if $x == 0 or $x == left { $new-x: right; } @else { $new-x: $x; } @return $new-x parsebox($pos, 2); } @function nopx ($value) { @if $value == 0 { @return 0; } @return $value / 1px; } @function invert-shadow($shadow, $axis) { @if $axis != x and $axis != y { @error 'invalid value for $axis: #{$axis}'; } $inverted-shadow: (); $counter: if($axis == x, 2, 1); @for $i from 1 through length($shadow) { $item: nth($shadow, $i); @if type-of($item) == number { @if $counter == 2 { // the first number in a box-shadow value is always the offset-x, // the second number is always offset-y $item: -$item; } $counter: $counter + 1; } $inverted-shadow: append($inverted-shadow, $item); } @return $inverted-shadow; } @function coalesce($values...) { $found: false; $ret: null; @for $i from 1 through length($values) { $value: nth($values, $i); @if $value != null and not $found { $ret: $value; $found: true; } } @return $ret; }