You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
20 lines
640 B
20 lines
640 B
9 months ago
|
// 合并 map
|
||
|
@function map-deep-merge($parent-map, $child-map){
|
||
|
$result: $parent-map;
|
||
|
@each $key, $child in $child-map {
|
||
|
$parent-has-key: map-has-key($result, $key);
|
||
|
$parent-value: map-get($result, $key);
|
||
|
$parent-type: type-of($parent-value);
|
||
|
$child-type: type-of($child);
|
||
|
$parent-is-map: $parent-type == map;
|
||
|
$child-is-map: $child-type == map;
|
||
|
|
||
|
@if (not $parent-has-key) or ($parent-type != $child-type) or (not ($parent-is-map and $child-is-map)){
|
||
|
$result: map-merge($result, ( $key: $child ));
|
||
|
}@else {
|
||
|
$result: map-merge($result, ( $key: map-deep-merge($parent-value, $child) ));
|
||
|
}
|
||
|
}
|
||
|
@return $result;
|
||
|
};
|