//////////////////////// // Default the Breakpoints variable //////////////////////// $breakpoints: () !default; $BREAKPOINTS: () !default;
//////////////////////// // Respond-to API Mixin //////////////////////// @mixin respond-to($context, $no-query: false) {
@if length($breakpoints) > 0 and length($BREAKPOINTS) == 0 { @warn "In order to avoid variable namespace collisions, we have updated the way to add breakpoints for respond-to. Please change all instances of `$breakpoints: add-breakpoint()` to `@include add-breakpoint()`. The `add-breakpoint()` function will be deprecated in a future release."; $BREAKPOINTS: $breakpoints !global; $breakpoints: () !global; } @if type-of($BREAKPOINTS) != 'map' { // Just in case someone writes gibberish to the $breakpoints variable. @warn "Your breakpoints aren't a map! `respond-to` expects a map. Please check the value of $BREAKPOINTS variable."; @content; } @else if map-has-key($BREAKPOINTS, $context) { @include breakpoint(map-get($BREAKPOINTS, $context), $no-query) { @content; } } @else if not map-has-key($BREAKPOINTS, $context) { @warn "`#{$context}` isn't a defined breakpoint! Please add it using `$breakpoints: add-breakpoint(`#{$context}`, $value);`"; @content; } @else { @warn "You haven't created any breakpoints yet! Make some already! `@include add-breakpoint($name, $bkpt)`"; @content; }
}
////////////////////////////// // Add Breakpoint to Breakpoints // TODO: Remove function in next release ////////////////////////////// @function add-breakpoint($name, $bkpt, $overwrite: false) {
$output: ($name: $bkpt); @if length($breakpoints) == 0 { @return $output; } @else { @if map-has-key($breakpoints, $name) and $overwrite != true { @warn "You already have a breakpoint named `#{$name}`, please choose another breakpoint name, or pass in `$overwrite: true` to overwrite the previous breakpoint."; @return $breakpoints; } @else if not map-has-key($breakpoints, $name) or $overwrite == true { @return map-merge($breakpoints, $output); } }
}
@mixin add-breakpoint($name, $bkpt, $overwrite: false) {
$output: ($name: $bkpt); @if length($BREAKPOINTS) == 0 { $BREAKPOINTS: $output !global; } @else { @if map-has-key($BREAKPOINTS, $name) and $overwrite != true { @warn "You already have a breakpoint named `#{$name}`, please choose another breakpoint name, or pass in `$overwrite: true` to overwrite the previous breakpoint."; $BREAKPOINTS: $BREAKPOINTS !global; } @else if not map-has-key($BREAKPOINTS, $name) or $overwrite == true { $BREAKPOINTS: map-merge($BREAKPOINTS, $output) !global; } }
}
@function get-breakpoint($name: false) {
@if $name == false { @return $BREAKPOINTS; } @else { @return map-get($BREAKPOINTS, $name); }
}