Passed
Push — main ( dffd8b...f3f4c9 )
by Andrii
02:15
created

map.ts ➔ classNamesMap   A

Complexity

Conditions 2

Size

Total Lines 19
Code Lines 16

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 16
dl 0
loc 19
rs 9.6
c 0
b 0
f 0
1
import { ClassHash, ClassNamesProperty, CssModule } from "./defs";
2
import {resolver} from "./core"
3
4
const {keys: $keys} = Object
5
6
export default classNamesMap
7
8
function classNamesMap<
9
  Target extends ClassNamesProperty<CssModule>,
10
  Source extends ClassNamesProperty<CssModule>,
11
>(map: {
12
  [T in keyof Target["classnames"]]:
13
    {[S in keyof Source["classnames"]]?: ClassHash}
14
  }
15
): {classnames: {[T in keyof Target["classnames"]]: string}} {
16
  const keys = $keys(map) as (keyof Target["classnames"])[]
17
  , classnames = {} as {[T in keyof Target["classnames"]]: string}
18
19
  for (let i = keys.length; i--;) {
20
    const key = keys[i]
21
    
22
    classnames[key] = resolver(undefined, map[key]).join(" ")
23
  }
24
25
  return {classnames}
26
}