Blame view

天文台pc/tianwentai-ui/node_modules/tailwind-merge/src/lib/tw-join.ts 1.42 KB
bc518174   王天杨   提交两个项目文件
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
  /**
   * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.
   *
   * Specifically:
   * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js
   * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts
   *
   * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)
   */
  
  export type ClassNameValue = ClassNameArray | string | null | undefined | 0 | 0n | false
  type ClassNameArray = ClassNameValue[]
  
  export function twJoin(...classLists: ClassNameValue[]): string
  export function twJoin() {
      let index = 0
      let argument: ClassNameValue
      let resolvedValue: string
      let string = ''
  
      while (index < arguments.length) {
          if ((argument = arguments[index++])) {
              if ((resolvedValue = toValue(argument))) {
                  string && (string += ' ')
                  string += resolvedValue
              }
          }
      }
      return string
  }
  
  const toValue = (mix: ClassNameArray | string) => {
      if (typeof mix === 'string') {
          return mix
      }
  
      let resolvedValue: string
      let string = ''
  
      for (let k = 0; k < mix.length; k++) {
          if (mix[k]) {
              if ((resolvedValue = toValue(mix[k] as ClassNameArray | string))) {
                  string && (string += ' ')
                  string += resolvedValue
              }
          }
      }
  
      return string
  }