1- import { ComponentResolver } from '../../types'
1+ import { ComponentResolver , ComponentResolveResult } from '../../types'
22import { kebabCase } from '../utils'
33
44export interface VarletUIResolverOptions {
@@ -9,48 +9,69 @@ export interface VarletUIResolverOptions {
99 */
1010 importStyle ?: boolean | 'css' | 'less'
1111
12+ /**
13+ * auto import for directives
14+ *
15+ * @default true
16+ */
17+ directives ?: boolean
18+
1219 /**
1320 * @deprecated use `importStyle: 'css'` instead
1421 */
1522 importCss ?: boolean
23+
1624 /**
1725 * @deprecated use `importStyle: 'less'` instead
1826 */
1927 importLess ?: boolean
2028}
2129
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+
2253/**
2354 * Resolver for VarletUI
2455 *
2556 * @link https://github.com/haoziqaq/varlet
2657 */
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+ } ,
5465 } ,
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+ ]
5677}
0 commit comments