Skip to content

Babel plugin to transform css into cssobj (CSS in JS solution), map class names into cssobj localized names

License

Notifications You must be signed in to change notification settings

cssobj/babel-plugin-transform-cssobj

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

babel-plugin-transform-cssobj-jsx

Babel plugin to transform class names into cssobj localized names, easily transform existing code into cssobj.

Join the chat at https://gitter.im/css-in-js/cssobj Build Status Coverage Status

Usage

  1. Install
npm install --save-dev babel-plugin-transform-cssobj-jsx
  1. In your .babelrc:
{
  "plugins": ["transform-cssobj-jsx"]
}
  1. Wrap your JSX in result.mapClass()

    const style = cssobj(obj)
    
    const html = style.mapClass(
      <div className='container'>
        <div className={func()}>
        <p className='!news item active'> </p></div></div>
    )

    Which transform into below code:

    const html = (
      <div className={style.mapClass('container')}>
        <div className={style.mapClass(func())}>
        <p className={style.mapClass('!news item active')}> </p></div></div>
    )

Note: According to cssobj mapClass rule, the !news will become news and not localized (aka keep AS IS).

More Usage

This plugin only transform the format: result.mapClass(JSX)

But if your existing code already has the form, .e.g:

// existing code, you don't want below to transform
myObj.mapClass(<div className='abc'>should not be transformed</div>)

You have two way to escape the transform

  1. Transform the method call as myObj['mapClass']

  2. Pass plugin option mapName to use other name rather than mapClass

{
  "plugins": [ ["transform-cssobj-jsx", {"mapName": "makeLocal"}] ]
}

Then you can use makeLocal instead of mapClass

// below will be transformed
style.makeLocal(<div className='nav'></div>

// your existing code keep untouched
myObj.mapClass(<div className='abc'>)

TODO

  • Support JSX Spread
  • Child element should regard to parent cssobj scope

About

Babel plugin to transform css into cssobj (CSS in JS solution), map class names into cssobj localized names

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published