Security News
GitHub Removes Malicious Pull Requests Targeting Open Source Repositories
GitHub removed 27 malicious pull requests attempting to inject harmful code across multiple open source repositories, in another round of low-effort attacks.
inline-style-prefixer
Advanced tools
Autoprefixer for Inline Style objects using userAgent and caniuse data
The inline-style-prefixer is a JavaScript library used for automatically adding vendor prefixes to CSS styles defined in JavaScript objects. This is particularly useful when developing React applications that handle styles primarily in JavaScript. The prefixer uses the user agent to determine which prefixes are necessary for the current browser, ensuring cross-browser compatibility for CSS properties that require vendor prefixes.
Automatic Prefixing
Automatically adds necessary CSS vendor prefixes to style objects based on the current browser's requirements.
{"display": 'flex'} // becomes {'display': ['-webkit-box', '-moz-box', '-ms-flexbox', '-webkit-flex', 'flex']} after processing
User Agent Based Prefixing
Initializes the prefixer with a specific user agent to tailor the prefixing process to a particular browser's needs.
const prefixer = new Prefixer({userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}); const style = prefixer.prefix({display: 'flex'});
Autoprefixer is a more robust solution that integrates with build tools like PostCSS to automatically add vendor prefixes to CSS files. Unlike inline-style-prefixer, which is designed for inline styles in JavaScript, Autoprefixer works with static CSS files, making it suitable for a broader range of web development tasks.
PostCSS-prefixer is a PostCSS plugin that allows developers to add prefixes to CSS properties manually. It requires explicit configuration for each prefix, offering more control but less automation compared to inline-style-prefixer, which automatically determines necessary prefixes.
Warning: Very early stage supporting only a small set of prefixes by now. Usage on your own risk!
npm install inline-style-prefixer
inline-style-prefixer adds required vendor prefixes to your style object. It only adds prefixes if they're actually required since it evaluates the environments userAgent
.
The information is based on caniuse.com.
import Prefixer from 'inline-style-prefixer';
let styles = {
transition: '200ms all linear',
userSelect: 'none',
nested : {
boxSizing: 'border-box',
appearance: 'none',
color: 'blue',
flex: 1
}
}
Prefixer.process(styles);
Assuming you are using .e.g Chrome version 27.0 this would output the following styles object:
{
transition: '200ms all linear',
WebkitUserSelect: 'none',
userSelect: 'none',
nested: {
boxSizing: 'border-box',
WebkitAppearance: 'none',
appearance: 'none',
color: 'blue',
WebkitFlex: 1,
flex: 1
}
}
Sometimes your environment does not provide a proper userAgent string e.g. if you are rendering on server-side. Therefore you can use setUserAgent
and getUserAgent
.
import Prefixer from 'inline-style-prefixer';
Prefixer.setUserAgent('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.155 Safari/537.36');
Prefixer.getUserAgent() // => Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.155 Safari/537.36
While installing it automatically searches the latest caniuse.com data for CSS properties and creates a data map sort by browsers. Those maps include pairs of properties and the maximum version that needs a prefix.
Based on browser and browser version it then generates a list of properties that need to be prefixed.
Conclusion: It only adds prefixes that are really needed!
inline-style-prefixer is licensed under the MIT License.
Created with ♥ by @rofrischmann.
FAQs
Run-time Autoprefixer for JavaScript style objects
The npm package inline-style-prefixer receives a total of 1,975,091 weekly downloads. As such, inline-style-prefixer popularity was classified as popular.
We found that inline-style-prefixer demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
GitHub removed 27 malicious pull requests attempting to inject harmful code across multiple open source repositories, in another round of low-effort attacks.
Security News
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.
Security News
Node.js will be enforcing stricter semver-major PR policies a month before major releases to enhance stability and ensure reliable release candidates.