| @import "function"; | 
| @import "../common/var"; | 
|   | 
| /* Break-points | 
|  -------------------------- */ | 
| @mixin res($key, $map: $--breakpoints) { | 
|   // 循环断点Map,如果存在则返回 | 
|   @if map-has-key($map, $key) { | 
|     @media only screen and #{inspect(map-get($map, $key))} { | 
|       @content; | 
|     } | 
|   } @else { | 
|     @warn "Undefeined points: `#{$map}`"; | 
|   } | 
| } | 
|   | 
| /* Scrollbar | 
|  -------------------------- */ | 
| @mixin scroll-bar { | 
|   $--scrollbar-thumb-background: #b4bccc; | 
|   $--scrollbar-track-background: #fff; | 
|   | 
|   &::-webkit-scrollbar { | 
|     z-index: 11; | 
|     width: 6px; | 
|   | 
|     &:horizontal { | 
|       height: 6px; | 
|     } | 
|   | 
|     &-thumb { | 
|       border-radius: 5px; | 
|       width: 6px; | 
|       background: $--scrollbar-thumb-background; | 
|     } | 
|   | 
|     &-corner { | 
|       background: $--scrollbar-track-background; | 
|     } | 
|   | 
|     &-track { | 
|       background: $--scrollbar-track-background; | 
|   | 
|       &-piece { | 
|         background: $--scrollbar-track-background; | 
|         width: 6px; | 
|       } | 
|     } | 
|   } | 
| } | 
|   | 
| /* Placeholder | 
|  -------------------------- */ | 
| @mixin placeholder { | 
|   &::-webkit-input-placeholder { | 
|     @content | 
|   } | 
|   | 
|   &::-moz-placeholder { | 
|     @content | 
|   } | 
|   | 
|   &:-ms-input-placeholder { | 
|     @content | 
|   } | 
| } | 
|   | 
| /* BEM | 
|  -------------------------- */ | 
| @mixin b($block) { | 
|   $B: $namespace+'-'+$block !global; | 
|   | 
|   .#{$B} { | 
|     @content; | 
|   } | 
| } | 
|   | 
| @mixin e($element) { | 
|   $E: $element !global; | 
|   $selector: &; | 
|   $currentSelector: ""; | 
|   @each $unit in $element { | 
|     $currentSelector: #{$currentSelector + "." + $B + $element-separator + $unit + ","}; | 
|   } | 
|   | 
|   @if hitAllSpecialNestRule($selector) { | 
|     @at-root { | 
|       #{$selector} { | 
|         #{$currentSelector} { | 
|           @content; | 
|         } | 
|       } | 
|     } | 
|   } @else { | 
|     @at-root { | 
|       #{$currentSelector} { | 
|         @content; | 
|       } | 
|     } | 
|   } | 
| } | 
|   | 
| @mixin m($modifier) { | 
|   $selector: &; | 
|   $currentSelector: ""; | 
|   @each $unit in $modifier { | 
|     $currentSelector: #{$currentSelector + & + $modifier-separator + $unit + ","}; | 
|   } | 
|   | 
|   @at-root { | 
|     #{$currentSelector} { | 
|       @content; | 
|     } | 
|   } | 
| } | 
|   | 
| @mixin configurable-m($modifier, $E-flag: false) { | 
|   $selector: &; | 
|   $interpolation: ''; | 
|   | 
|   @if $E-flag { | 
|     $interpolation: $element-separator + $E-flag; | 
|   } | 
|   | 
|   @at-root { | 
|     #{$selector} { | 
|       .#{$B+$interpolation+$modifier-separator+$modifier} { | 
|         @content; | 
|       } | 
|     } | 
|   } | 
| } | 
|   | 
| @mixin spec-selector($specSelector: '', $element: $E, $modifier: false, $block: $B) { | 
|   $modifierCombo: ''; | 
|   | 
|   @if $modifier { | 
|     $modifierCombo: $modifier-separator + $modifier; | 
|   } | 
|   | 
|   @at-root { | 
|     #{&}#{$specSelector}.#{$block+$element-separator+$element+$modifierCombo} { | 
|       @content | 
|     } | 
|   } | 
| } | 
|   | 
| @mixin meb($modifier: false, $element: $E, $block: $B) { | 
|   $selector: &; | 
|   $modifierCombo: ''; | 
|   | 
|   @if $modifier { | 
|     $modifierCombo: $modifier-separator + $modifier; | 
|   } | 
|   | 
|   @at-root { | 
|     #{$selector} { | 
|       .#{$block+$element-separator+$element+$modifierCombo} { | 
|         @content | 
|       } | 
|     } | 
|   } | 
| } | 
|   | 
| @mixin when($state) { | 
|   @at-root { | 
|     &.#{$state-prefix + $state} { | 
|       @content; | 
|     } | 
|   } | 
| } | 
|   | 
| @mixin extend-rule($name) { | 
|   @extend #{'%shared-'+$name}; | 
| } | 
|   | 
| @mixin share-rule($name) { | 
|   $rule-name: '%shared-'+$name; | 
|   | 
|   @at-root #{$rule-name} { | 
|     @content | 
|   } | 
| } | 
|   | 
| @mixin pseudo($pseudo) { | 
|   @at-root #{&}#{':#{$pseudo}'} { | 
|     @content | 
|   } | 
| } |