/
remove.scss
34 lines (32 loc) · 892 Bytes
/
remove.scss
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
@use "sass:list";
@use "sass:meta";
@use "sass:map";
@use "get" as *;
@use "remove-nth" as *;
@use "set" as *;
/// Remove $keys (deeply) from $map
/// @param {Map} $map - The map to remove keys from
/// @param {String|List} $keys... - Keys to be removed
/// @return {Map}
@function remove($map, $keys...) {
@if meta.type-of($map) != map {
@return $map;
}
@each $set in $keys {
@if meta.type-of($set) == list {
@if get($map, $set) {
$key: remove-nth($set, -1);
$overwrite: remove(
get($map, $key),
list.nth($set, list.length($set))
);
$map: set($map, $key, $overwrite, false);
}
} @else {
@if map.has-key($map, $set) {
$map: map.remove($map, $set);
}
}
}
@return $map;
}