| 
6 | 6 | 
 
  | 
7 | 7 | // Functions.  | 
8 | 8 | @use '../color/functions/color.name.function' as *;  | 
9 |  | -@use '../color/functions/color.retrieve.function' as *;  | 
 | 9 | +@use '../color/functions/name';  | 
10 | 10 | 
 
  | 
11 | 11 | // Status: DONE  | 
12 | 12 | // The `variant.nest()` nest indicated by '+' variant of `list` or `map` type.  | 
13 |  | -// @arbitrary `$values...`  | 
 | 13 | +// @arbitrary `$variants...`  | 
14 | 14 | // @returns The returned value is nested `list` or `map`.  | 
15 |  | -@function nest($values...) {  | 
 | 15 | +@function nest($variants...) {  | 
16 | 16 |   $result: ();  | 
17 |  | -  @each $value in $values {  | 
18 |  | -    @each $name, $resolved-value in $value {  | 
 | 17 | +  @each $variant in $variants {  | 
 | 18 | +    @each $name, $resolved-value in $variant {  | 
19 | 19 |       $-resolved-value: $resolved-value;  | 
20 | 20 |       @each $name in if(list.separator($name) == comma, $name, ($name,)) {  | 
21 | 21 |         $nested: indicator.index($name, '+');  | 
 | 
25 | 25 |             @each $key, $v in $resolved-value {  | 
26 | 26 |               $resolved-value: map.key-replace($resolved-value, $key, list.nth(selector.nest($name, $key), 1));  | 
27 | 27 |             }  | 
28 |  | - | 
29 |  | -            $result: map.deep-merge($result, ($name: $resolved-value));  | 
30 | 28 |           } @else {  | 
31 |  | -            $retrieved: ();  | 
32 |  | -            $i: 1;  | 
33 |  | -            @each $-name in $resolved-value {  | 
34 |  | -              $retrieved: list.append($retrieved, retrieve($-name), comma);  | 
35 |  | -              $resolved-value: list.set-nth($resolved-value, $i, map.get(retrieve($-name), name));  | 
36 |  | -              $i: $i + 1;  | 
37 |  | -            }  | 
38 |  | - | 
39 |  | -            $resolved-value: selector.nest($name, $resolved-value);  | 
40 |  | -            @if list.length($retrieved) > 0 {  | 
41 |  | -              $i: 1;  | 
42 |  | -              @each $value in $resolved-value {  | 
43 |  | -                @if list.length(map.keys(list.nth($retrieved, $i))) > 1 {  | 
44 |  | -                  $resolved-value: list.set-nth($resolved-value, $i, name(  | 
45 |  | -                    $value,  | 
46 |  | -                    $hue: map.get(list.nth($retrieved, $i), hue),  | 
47 |  | -                    $saturation: map.get(list.nth($retrieved, $i), saturation),  | 
48 |  | -                    $lightness: map.get(list.nth($retrieved, $i), lightness),  | 
49 |  | -                    $alpha: map.get(list.nth($retrieved, $i), alpha),  | 
50 |  | -                  ));  | 
51 |  | -                }  | 
52 |  | - | 
53 |  | -                $i: $i + 1;  | 
54 |  | -              }  | 
55 |  | -            }  | 
56 |  | - | 
57 |  | -            $result: map.deep-merge($result, ($name: $resolved-value));  | 
 | 29 | +            $resolved-value: name.nest($name, $resolved-value);  | 
58 | 30 |           }  | 
59 |  | -        } @else {  | 
60 |  | -          $result: map.deep-merge($result, ($name: $-resolved-value));  | 
61 | 31 |         }  | 
 | 32 | + | 
 | 33 | +        $result: map.deep-merge($result, ($name: if($nested, $resolved-value, $-resolved-value)));  | 
62 | 34 |       }  | 
63 | 35 |     }  | 
64 | 36 |   }  | 
 | 
69 | 41 | // @debug nest((control: (disabled, error, info, success, warning)));  | 
70 | 42 | // @debug nest((+control: (disabled, error, info, success, warning)));  | 
71 | 43 | // @debug nest((+primary: (color: #aaa, dark: #bbb, light: #ccc)));  | 
 | 44 | + | 
 | 45 | +// nest color variant  | 
 | 46 | +// @debug nest(((+secondary, primary): (color, dark, light)));  | 
72 | 47 | // @debug nest(((+secondary, primary): (color, (ultra dark, -30%), (mega light, 60%))));  | 
0 commit comments