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.
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
.
~7kb gzipped.
The information is based on caniuse.com.
Supports the major browsers with the following versions.
You may have to create a custom build if you need older browser versions. Just modify the config.js file which includes all the browser version specifications.
npm install
npm run build
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(styles)
// Assuming you are using e.g. Chrome version 27.0 this would
// transform your styles object to the following the following
let output = {
transition: '200ms all linear',
WebkitUserSelect: 'none',
nested: {
boxSizing: 'border-box',
WebkitAppearance: 'none',
color: 'blue',
WebkitFlex: 1
}
}
Sometimes your environment does not provide a proper userAgent string e.g. if you are rendering on server-side. Therefore optionally just pass a userAgent-string.
import Prefixer from 'inline-style-prefixer'
const customUserAgent = '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(styles, customUserAgent)
The following list shows all supported properties that get evaluated.
They are grouped in caniuse groups.
Sometimes it is not enough to just prefix a property, but you also need to prefix the value or even transform the value at all.
Therefore special plugins are used to tackle browser incompatibilities.
Right now there are 7 plugins. More might come if suggested.
calc: Adds support for prefixed calc
values on any property.
cursor: Adds support for prefixed new cursor
values zoom-in
, zoom-out
, grab
, grabbing
.
flex: Adds support for prefixed display
values using display: flex
or display: inline-flex
.
flexboxIE: Adds trasformators for the early 2012 flexbox specification used in IE 10 and IE Mobile 10.
flexboxOld: Adds trasformators for the old 2009 flexbox specification used in old Webkit-based browsers.
gradient: Adds support for prefixed background
and backgroundImage
values linear-gradient
, radial-gradient
, repeating-linear-gradient
and repeating-radial-gradient
.
sizing: Adds support for prefixed maxHeight
, maxWidth
, width
, height
, columnWidth
,minWidth
, minHeight
intrinsic & extrinsic sizing values min-content
, max-content
, fill-available
, fit-content
, contain-floats
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,703,171 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.