//////////////////////// // 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); } }