1
- import { ComponentResolver } from '../../types'
1
+ import { ComponentResolver , ComponentResolveResult } from '../../types'
2
2
import { kebabCase } from '../utils'
3
3
4
4
export interface VarletUIResolverOptions {
@@ -9,48 +9,69 @@ export interface VarletUIResolverOptions {
9
9
*/
10
10
importStyle ?: boolean | 'css' | 'less'
11
11
12
+ /**
13
+ * auto import for directives
14
+ *
15
+ * @default true
16
+ */
17
+ directives ?: boolean
18
+
12
19
/**
13
20
* @deprecated use `importStyle: 'css'` instead
14
21
*/
15
22
importCss ?: boolean
23
+
16
24
/**
17
25
* @deprecated use `importStyle: 'less'` instead
18
26
*/
19
27
importLess ?: boolean
20
28
}
21
29
30
+ export function getResolved ( name : string , options : VarletUIResolverOptions ) : ComponentResolveResult {
31
+ const {
32
+ importStyle = 'css' ,
33
+ importCss = true ,
34
+ importLess,
35
+ } = options
36
+
37
+ const sideEffects = [ ]
38
+
39
+ if ( importStyle || importCss ) {
40
+ if ( importStyle === 'less' || importLess )
41
+ sideEffects . push ( `@varlet/ui/es/${ kebabCase ( name ) } /style/less.js` )
42
+ else
43
+ sideEffects . push ( `@varlet/ui/es/${ kebabCase ( name ) } /style` )
44
+ }
45
+
46
+ return {
47
+ path : '@varlet/ui' ,
48
+ importName : `_${ name } Component` ,
49
+ sideEffects,
50
+ }
51
+ }
52
+
22
53
/**
23
54
* Resolver for VarletUI
24
55
*
25
56
* @link https://github.com/haoziqaq/varlet
26
57
*/
27
- export function VarletUIResolver ( options : VarletUIResolverOptions = { } ) : ComponentResolver {
28
- return {
29
- type : 'component' ,
30
- resolve : ( name : string ) => {
31
- const {
32
- importStyle = 'css' ,
33
- importCss = true ,
34
- importLess,
35
- } = options
36
-
37
- if ( name . startsWith ( 'Var' ) ) {
38
- const partialName = name . slice ( 3 )
39
- const sideEffects = [ ]
40
-
41
- if ( importStyle || importCss ) {
42
- if ( importStyle === 'less' || importLess )
43
- sideEffects . push ( `@varlet/ui/es/${ kebabCase ( partialName ) } /style/less.js` )
44
- else
45
- sideEffects . push ( `@varlet/ui/es/${ kebabCase ( partialName ) } /style` )
46
- }
47
-
48
- return {
49
- importName : `_${ partialName } Component` ,
50
- path : '@varlet/ui' ,
51
- sideEffects,
52
- }
53
- }
58
+ export function VarletUIResolver ( options : VarletUIResolverOptions = { } ) : ComponentResolver [ ] {
59
+ return [
60
+ {
61
+ type : 'component' ,
62
+ resolve : ( name : string ) => {
63
+ if ( name . startsWith ( 'Var' ) ) return getResolved ( name . slice ( 3 ) , options )
64
+ } ,
54
65
} ,
55
- }
66
+ {
67
+ type : 'directive' ,
68
+ resolve : ( name : string ) => {
69
+ const { directives = true } = options
70
+
71
+ if ( ! directives ) return
72
+
73
+ return getResolved ( name , options )
74
+ } ,
75
+ } ,
76
+ ]
56
77
}
0 commit comments