@@ -12,7 +12,6 @@ import postcss, {
1212 Document ,
1313} from 'postcss' ;
1414import postcssSafeParser from 'postcss-safe-parser' ;
15- import resolveConfig from 'tailwindcss/resolveConfig' ;
1615import { parse , stringify , isTraversal } from 'css-what' ;
1716
1817import { TailwindNode , TailwindNodesManager } from './TailwindNodesManager' ;
@@ -23,6 +22,7 @@ import {
2322} from './utils/converterMappingByTailwindTheme' ;
2423import {
2524 convertDeclarationValue ,
25+ prepareArbitraryValue ,
2626 TAILWIND_DECLARATION_CONVERTERS ,
2727} from './constants/converters' ;
2828import { isChildNode } from './utils/isChildNode' ;
@@ -31,15 +31,18 @@ import { removeUnnecessarySpaces } from './utils/removeUnnecessarySpaces';
3131import { reduceTailwindClasses } from './utils/reduceTailwindClasses' ;
3232import { PSEUDOS_MAPPING } from './constants/pseudos-mapping' ;
3333import { detectIndent } from './utils/detectIndent' ;
34+ import { resolveConfig , ResolvedTailwindConfig } from './utils/resolveConfig' ;
3435
3536export interface TailwindConverterConfig {
3637 remInPx ?: number | null ;
37- tailwindConfig : Config ;
38+ tailwindConfig ? : Config ;
3839 postCSSPlugins : AcceptedPlugin [ ] ;
40+ arbitraryPropertiesIsEnabled : boolean ;
3941}
4042
4143export interface ResolvedTailwindConverterConfig
4244 extends TailwindConverterConfig {
45+ tailwindConfig : ResolvedTailwindConfig ;
4346 mapping : ConverterMapping ;
4447}
4548
@@ -48,6 +51,7 @@ export const DEFAULT_CONVERTER_CONFIG: Omit<
4851 'tailwindConfig'
4952> = {
5053 postCSSPlugins : [ ] ,
54+ arbitraryPropertiesIsEnabled : false ,
5155} ;
5256
5357export class TailwindConverter {
@@ -58,7 +62,7 @@ export class TailwindConverter {
5862 ...converterConfig
5963 } : Partial < TailwindConverterConfig > = { } ) {
6064 const resolvedTailwindConfig = resolveConfig (
61- tailwindConfig || ( { } as Config )
65+ tailwindConfig || ( { content : [ ] } as Config )
6266 ) ;
6367
6468 this . config = {
@@ -146,12 +150,23 @@ export class TailwindConverter {
146150 }
147151
148152 protected convertDeclarationToClasses ( declaration : Declaration ) {
149- return (
153+ let classes =
150154 TAILWIND_DECLARATION_CONVERTERS [ declaration . prop ] ?.(
151155 declaration ,
152156 this . config
153- ) || [ ]
154- ) ;
157+ ) || [ ] ;
158+
159+ if ( classes . length === 0 && this . config . arbitraryPropertiesIsEnabled ) {
160+ classes = [
161+ `[${ declaration . prop } :${ prepareArbitraryValue ( declaration . value ) } ]` ,
162+ ] ;
163+ }
164+
165+ return this . config . tailwindConfig . prefix
166+ ? classes . map (
167+ className => `${ this . config . tailwindConfig . prefix } ${ className } `
168+ )
169+ : classes ;
155170 }
156171
157172 protected makeTailwindNode (
@@ -222,7 +237,7 @@ export class TailwindConverter {
222237 if ( selector . type === 'pseudo' || selector . type === 'pseudo-element' ) {
223238 const mapped = ( PSEUDOS_MAPPING as any ) [ selector . name ] ;
224239
225- return mapped ? `${ mapped } : ` : null ;
240+ return mapped ? `${ mapped } ${ this . config . tailwindConfig . separator } ` : null ;
226241 }
227242
228243 if ( selector . type === 'attribute' ) {
@@ -234,7 +249,7 @@ export class TailwindConverter {
234249 return null ;
235250 }
236251
237- return `${ mapped } : ` ;
252+ return `${ mapped } ${ this . config . tailwindConfig . separator } ` ;
238253 }
239254
240255 if ( selector . name . startsWith ( 'data-' ) ) {
@@ -245,7 +260,7 @@ export class TailwindConverter {
245260 return null ;
246261 }
247262
248- return `${ mapped } : ` ;
263+ return `${ mapped } ${ this . config . tailwindConfig . separator } ` ;
249264 }
250265 }
251266
@@ -345,9 +360,11 @@ export class TailwindConverter {
345360 modifiers . push ( mappedScreen ) ;
346361 }
347362
348- const classPrefix = modifiers . join ( ':' ) ;
363+ const classPrefix = modifiers . join ( this . config . tailwindConfig . separator ) ;
349364
350- return classPrefix ? classPrefix + ':' : '' ;
365+ return classPrefix
366+ ? classPrefix + this . config . tailwindConfig . separator
367+ : '' ;
351368 }
352369
353370 protected convertSupportsParamsToClassPrefix ( supportParams : string [ ] ) {
@@ -360,6 +377,8 @@ export class TailwindConverter {
360377 'supports'
361378 ) ;
362379
363- return classPrefix ? classPrefix + ':' : '' ;
380+ return classPrefix
381+ ? classPrefix + this . config . tailwindConfig . separator
382+ : '' ;
364383 }
365384}
0 commit comments