UNPKG

2.15 kBSCSSView Raw
1//
2// Copyright 2020 Google Inc.
3//
4// Permission is hereby granted, free of charge, to any person obtaining a copy
5// of this software and associated documentation files (the "Software"), to deal
6// in the Software without restriction, including without limitation the rights
7// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8// copies of the Software, and to permit persons to whom the Software is
9// furnished to do so, subject to the following conditions:
10//
11// The above copyright notice and this permission notice shall be included in
12// all copies or substantial portions of the Software.
13//
14// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20// THE SOFTWARE.
21//
22
23@use 'sass:list';
24@use 'sass:map';
25@use 'sass:meta';
26
27/// Adds optional GSS annotation comments. Useful for theme mixins where one or
28/// more properties are set indirectly.
29///
30/// Annotations may be provided as a Map of annotations or as named arguments.
31///
32/// @example - scss
33/// @include annotate((noflip: true));
34/// left: 0;
35///
36/// @example - scss
37/// @include annotate($noflip: true);
38/// left: 0;
39///
40/// @example - css
41/// /* @noflip */ /*rtl:ignore*/
42/// left: 0;
43///
44/// @param {Map} $annotations - Map of annotations. Values must be set to `true`
45/// for an annotation to be added.
46@mixin annotate($annotations...) {
47 $keywords: meta.keywords($annotations);
48 @if list.length($annotations) > 0 {
49 $annotations: list.nth($annotations, 1);
50 } @else {
51 $annotations: $keywords;
52 }
53
54 @if (map.get($annotations, alternate) == true) {
55 /* @alternate */
56 }
57
58 // noflip must be the last tag right before the property
59 @if (map.get($annotations, noflip) == true) {
60 /* @noflip */ /*rtl:ignore*/
61 }
62}