Started adding frontend notifications, fixing firefox file upload bug

This commit is contained in:
2018-01-22 19:03:06 -05:00
parent f14e96c490
commit 5856052f82
1536 changed files with 109746 additions and 2658 deletions

View File

@@ -0,0 +1,145 @@
# Changelog
## 3.0
### 3.0.8
* added support for `writing-mode` [#139](https://github.com/rofrischmann/inline-style-prefixer/issues/139) )
### 3.0.7
* fix `flexBasis` fallback for legacy IE 10 (`msPreferredSize` to `msFlexPreferredSize`) ( [#134](https://github.com/rofrischmann/inline-style-prefixer/issues/134) )
### 3.0.6
* fix legacy display prefixing for `inline-flex` ( [#132](https://github.com/rofrischmann/inline-style-prefixer/issues/132) )
### 3.0.5
* use Chrome data for Yandex browser ( [#127](https://github.com/rofrischmann/inline-style-prefixer/issues/127) )
### 3.0.4
* removed `caniuse-api` as a `devDependency`
### 3.0.3
* data update
### 3.0.2
* performance improvements (up to 30% faster)
### 3.0.1
* performance improvements (~10% faster) ( [#115](https://github.com/rofrischmann/inline-style-prefixer/pull/115) ) ( [#116](https://github.com/rofrischmann/inline-style-prefixer/pull/116) )
* ordering prefixed properties correctly ( [#117](https://github.com/rofrischmann/inline-style-prefixer/pull/117) )
### 3.0.0
#### Complete Rewrite
* introducing new core prefixer that perform up to 4.5x faster
* added a whole new generator to create your custom prefixer
* added 4 new plugins to prefix special values
* new documentation using gitbook
* integrated flowtype
------
## 2.0
### 2.0.5
* added style sorting to prepend prefixed properties ( [#105](https://github.com/rofrischmann/inline-style-prefixer/issues/105) )
* support for `position: -webkit-sticky` ( [#103](https://github.com/rofrischmann/inline-style-prefixer/issues/103) )
### 2.0.4
* added type checks for `flexDirection` specification alternatives
### 2.0.3
* fixed updated caniuse-api search keys
### 2.0.2
* fixed a bug that used the prefixAll fallback for Windows Phone browsers ( [#97](https://github.com/rofrischmann/inline-style-prefixer/issues/97) )
* fixed a bug preventing Firefox on Android to correct prefixes ( [#95]((https://github.com/rofrischmann/inline-style-prefixer/issues/95) )
### 2.0.1
* fixed a bug that removed array values ( [#89](https://github.com/rofrischmann/inline-style-prefixer/issues/89) )
* added array prefixing to the dynamic version
* improved prefixing performance
### 2.0.0
##### API Changes
* merged [inline-style-prefix-all](https://github.com/rofrischmann/inline-style-prefix-all) as `inline-style-prefixer/static`
##### Improvements
* support for Chromium browser ( [#75](https://github.com/rofrischmann/inline-style-prefixer/pull/86) )
* support for Vivaldi browser ( [#81](https://github.com/rofrischmann/inline-style-prefixer/pull/81) )
* support for zoom and grab `cursor` values ( [#82](https://github.com/rofrischmann/inline-style-prefixer/pull/82) )
* support for prefixing arrays of values ( [@inline-style-prefix-all#16](https://github.com/rofrischmann/inline-style-prefix-all/pull/16) )
##### Bugs
* fixed a bug where `border` within transitions was treated as `order` ( [@inline-style-prefix-all#15](https://github.com/rofrischmann/inline-style-prefix-all/issues/15) )
* fixed a bug where prefixed transition values where incorrectly concatenated ( [@inline-style-prefix-all#17](https://github.com/rofrischmann/inline-style-prefix-all/issues/17) )
## 1.0
### 1.0.4
* updated inline-style-prefix-all dependency to correct fallback value order
### 1.0.3
* replaced `Set` with ES5 alternative
### 1.0.2
* fixed a bug that caused crashes if `display` got either `null` or `undefined` assigned ( [#71](https://github.com/rofrischmann/inline-style-prefixer/pull/71#issue-139056802) )
### 1.0.1
* added `undefined` check for `userAgent` to prevent bowser errors
### 1.0.0
* pulled a bugfix by Khan Academy that dash-cases fallback properties ( https://github.com/Khan/inline-style-prefixer/commit/f41f3040ac27eeec3b7a1fb7450ddce250cac4e4 )
* using [inline-style-prefix-all](https://github.com/rofrischmann/inline-style-prefix-all) for `prefixAll` now
* `display` does not get removed anymore ( #65 )
* not throwing anymore if unsupported `userAgent` is provided ( #62 )
## 0.6
### 0.6.7
* Fixed a bug that caused `transition` with `cubic-bezier` to resolve false
* Replaced `for of` in favor of a basic `for` loop to not require `Symbol` to be available
### 0.6.6
* Prevent crashes if a value is `false` or `undefined`
### 0.6.5
* Plugins won't crash if a `number` value is passed
* Added default `options`
### 0.6.4
* support for prefixed `transition` properties *e.g. `transition: '-webkit-filter 200ms linear'`*
* wider support for **gradients** on all properties
* `prefixAll` now prefixes all plugin values
* uses default `userAgent` if no userAgent, `undefined` or `false` is passed
### 0.6.3
* added support for Cordova apps & in-app browser *(especially on iOS 8.4.x)*
* fixed Android Chrome detection *(on Android 4.x)*
* added some [FAQ](docs/FAQ.md)'s
### 0.6.2
* fixed dist files to register globally
### 0.6.1
* replaced multi-options with an object hash
* renamed `keepDefaults` to `keepUnprefixed`
### 0.6.0
* fixed a bug that caused the `display:flex` plugin to prefix incorrectly
* added `forceRun`-option to plugins to support plugins when using `prefixAll`
* added `keepDefault`-option to keep defaults after prefixing
* added MS Edge support
* added whitelist for headless browsers
* several data updates
## 0.5
## 0.5.4
* fixed a typo in `animationIterationCount`
## 0.5.3
* Added 2D Transform to the searchMap so IE 9 prefixes `transform`, `transformOrigin`, `transformOriginX` and `transformOriginY`
* Removed unsupported browsers from browser detection to avoid false prefixes
## 0.5.2
* Added Changelog
* Android detection for older Versions (< 5)
* added `flexWrap` to the properties list

View File

@@ -0,0 +1,22 @@
The MIT License (MIT)
Copyright (c) 2015 Robin Frischmann
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -0,0 +1,158 @@
# Autoprefixer for Style Objects
**inline-style-prefixer** adds required **vendor prefixes** to your style object. It only adds prefixes if they're actually required by evaluating the browser's `userAgent` against data from [caniuse.com](http://caniuse.com/).
<br>
Alternatively it ships a static version that adds all available vendor prefixes.
[![Build Status](https://travis-ci.org/rofrischmann/inline-style-prefixer.svg)](https://travis-ci.org/rofrischmann/inline-style-prefixer)
[![Test Coverage](https://codeclimate.com/github/rofrischmann/inline-style-prefixer/badges/coverage.svg)](https://codeclimate.com/github/rofrischmann/inline-style-prefixer/coverage)
[![npm downloads](https://img.shields.io/npm/dm/inline-style-prefixer.svg)](https://img.shields.io/npm/dm/inline-style-prefixer.svg)
![Dependencies](https://david-dm.org/rofrischmann/inline-style-prefixer.svg)
## Installation
```sh
yarn add inline-style-prefixer
```
If you're still using npm, you may run `npm i --save inline-style-prefixer`.
We also provide [UMD](https://github.com/umdjs/umd) builds for each package in the `dist` folder. You can easily use them via [unpkg](https://unpkg.com/).
```HTML
<!-- Unminified versions -->
<script src="https://unpkg.com/inline-style-prefixer@3.0.1/dist/inline-style-prefixer.js"></script>
<script src="https://unpkg.com/inline-style-prefixer@3.0.1/dist/inline-style-prefix-all.js"></script>
<!-- Minified versions -->
<script src="https://unpkg.com/inline-style-prefixer@3.0.1/dist/inline-style-prefixer.min.js"></script>
<script src="https://unpkg.com/inline-style-prefixer@3.0.1/dist/inline-style-prefix-all.min.js"></script>
```
## Browser Support
It supports all major browsers with the following versions. For other, unsupported browses, we automatically use a fallback.
* Chrome: 46+
* Android (Chrome): 46+
* Android (Stock Browser): 4+
* Android (UC): 9+
* Firefox: 40+
* Safari: 8+
* iOS (Safari): 8+
* Opera: 16+
* Opera (Mini): 12+
* IE: 11+
* IE (Mobile): 11+
* Edge: 12+
It will **only** add prefixes if a property still needs them in one of the above mentioned versions.<br> Therefore, e.g. `border-radius` will not be prefixed at all.
> **Need to support legacy browser versions?**<br>
Don't worry - we got you covered. Check [this guide](https://github.com/rofrischmann/inline-style-prefixer/blob/master/docs/guides/CustomPrefixer.md).
## Dynamic vs. Static
Before using the prefixer, you have to decide which one you want to use. We ship two different versions - a dynamic and a static version.
The **dynamic prefixer** evaluates the `userAgent` to identify the browser environment. Using this technique, we are able to only add the bare minimum of prefixes. Browser detection is quite accurate (~90% correctness), but yet also expensive which is why the package is almost 3 times as big as the static version.
> It uses the static prefixer as a fallback.
![Gzipped Size](https://img.shields.io/badge/gzipped-8.50kb-brightgreen.svg)
```javascript
import Prefixer from 'inline-style-prefixer'
const style = {
transition: '200ms all linear',
userSelect: 'none',
boxSizing: 'border-box',
display: 'flex',
color: 'blue'
}
const prefixer = new Prefixer()
const prefixedStyle = prefixer.prefix(style)
// prefixedStyle === output
const output = {
transition: '200ms all linear',
WebkitUserSelect: 'none',
boxSizing: 'border-box',
display: '-webkit-flex',
color: 'blue'
}
```
The **static prefixer**, on the other hand, adds all required prefixes according the above mentioned browser versions. Removing the browser detection makes it both smaller and fast, but also drastically increases the output.
![Gzipped Size](https://img.shields.io/badge/gzipped-2.70kb-brightgreen.svg)
```javascript
import prefixAll from 'inline-style-prefixer/static'
const style = {
transition: '200ms all linear',
boxSizing: 'border-box',
display: 'flex',
color: 'blue'
}
const prefixedStyle = prefixAll(style)
// prefixedStyle === output
const output = {
WebkitTransition: '200ms all linear',
transition: '200ms all linear',
MozBoxSizing: 'border-box',
boxSizing: 'border-box',
display: [ '-webkit-box', '-moz-box', '-ms-flexbox', '-webkit-flex', 'flex' ]
color: 'blue'
}
```
## Usage with TypeScript
You can use TypeScript definition from [DefinitelyTyped](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/inline-style-prefixer) using [@types/inline-style-prefixer](https://www.npmjs.com/package/@types/inline-style-prefixer)
```sh
npm install --save @types/inline-style-prefixer
```
Then import in your code:
```typescript
import prefixAll = require('inline-style-prefixer/static');
const prefixedStyle = prefixAll({
transition: '200ms all linear',
boxSizing: 'border-box',
display: 'flex',
color: 'blue'
});
```
## Documentation
If you got any issue using this prefixer, please first check the FAQ's. Most cases are already covered and provide a solid solution.
* [Usage Guides](https://inline-style-prefixer.js.org/docs/UsageGuides.html)
* [Data Reference](https://inline-style-prefixer.js.org/docs/DataReference.html)
* [API Reference](https://inline-style-prefixer.js.org/docs/API.html)
* [FAQ](https://inline-style-prefixer.js.org/docs/FAQ.html)
## Community
Here are some popular users of this library:
* [Aphrodite](https://github.com/Khan/aphrodite)
* [Fela](https://github.com/rofrischmann/fela)
* [Glamor](https://github.com/threepointone/glamor)
* [Material UI](https://github.com/callemall/material-ui)
* [Radium](https://github.com/FormidableLabs/radium)
* [react-native-web](https://github.com/necolas/react-native-web)
* [styled-components](https://github.com/styled-components/styled-components)
* [Styletron](https://github.com/rtsao/styletron)
> PS: Feel free to add your solution!
## Support
Join us on [Gitter](https://gitter.im/rofrischmann/fela). We highly appreciate any contribution.<br>
We also love to get feedback.
## License
**inline-style-prefixer** is licensed under the [MIT License](http://opensource.org/licenses/MIT).<br>
Documentation is licensed under [Creative Common License](http://creativecommons.org/licenses/by/4.0/).<br>
Created with ♥ by [@rofrischmann](http://rofrischmann.de) and all contributors.

View File

@@ -0,0 +1,175 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
exports.default = createPrefixer;
var _getBrowserInformation = require('../utils/getBrowserInformation');
var _getBrowserInformation2 = _interopRequireDefault(_getBrowserInformation);
var _getPrefixedKeyframes = require('../utils/getPrefixedKeyframes');
var _getPrefixedKeyframes2 = _interopRequireDefault(_getPrefixedKeyframes);
var _capitalizeString = require('../utils/capitalizeString');
var _capitalizeString2 = _interopRequireDefault(_capitalizeString);
var _addNewValuesOnly = require('../utils/addNewValuesOnly');
var _addNewValuesOnly2 = _interopRequireDefault(_addNewValuesOnly);
var _isObject = require('../utils/isObject');
var _isObject2 = _interopRequireDefault(_isObject);
var _prefixValue = require('../utils/prefixValue');
var _prefixValue2 = _interopRequireDefault(_prefixValue);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function createPrefixer(_ref) {
var prefixMap = _ref.prefixMap,
plugins = _ref.plugins;
var fallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (style) {
return style;
};
return function () {
/**
* Instantiante a new prefixer
* @param {string} userAgent - userAgent to gather prefix information according to caniuse.com
* @param {string} keepUnprefixed - keeps unprefixed properties and values
*/
function Prefixer() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
_classCallCheck(this, Prefixer);
var defaultUserAgent = typeof navigator !== 'undefined' ? navigator.userAgent : undefined;
this._userAgent = options.userAgent || defaultUserAgent;
this._keepUnprefixed = options.keepUnprefixed || false;
if (this._userAgent) {
this._browserInfo = (0, _getBrowserInformation2.default)(this._userAgent);
}
// Checks if the userAgent was resolved correctly
if (this._browserInfo && this._browserInfo.cssPrefix) {
this.prefixedKeyframes = (0, _getPrefixedKeyframes2.default)(this._browserInfo.browserName, this._browserInfo.browserVersion, this._browserInfo.cssPrefix);
} else {
this._useFallback = true;
return false;
}
var prefixData = this._browserInfo.browserName && prefixMap[this._browserInfo.browserName];
if (prefixData) {
this._requiresPrefix = {};
for (var property in prefixData) {
if (prefixData[property] >= this._browserInfo.browserVersion) {
this._requiresPrefix[property] = true;
}
}
this._hasPropsRequiringPrefix = Object.keys(this._requiresPrefix).length > 0;
} else {
this._useFallback = true;
}
this._metaData = {
browserVersion: this._browserInfo.browserVersion,
browserName: this._browserInfo.browserName,
cssPrefix: this._browserInfo.cssPrefix,
jsPrefix: this._browserInfo.jsPrefix,
keepUnprefixed: this._keepUnprefixed,
requiresPrefix: this._requiresPrefix
};
}
_createClass(Prefixer, [{
key: 'prefix',
value: function prefix(style) {
// use static prefixer as fallback if userAgent can not be resolved
if (this._useFallback) {
return fallback(style);
}
// only add prefixes if needed
if (!this._hasPropsRequiringPrefix) {
return style;
}
return this._prefixStyle(style);
}
}, {
key: '_prefixStyle',
value: function _prefixStyle(style) {
for (var property in style) {
var value = style[property];
// handle nested objects
if ((0, _isObject2.default)(value)) {
style[property] = this.prefix(value);
// handle array values
} else if (Array.isArray(value)) {
var combinedValue = [];
for (var i = 0, len = value.length; i < len; ++i) {
var processedValue = (0, _prefixValue2.default)(plugins, property, value[i], style, this._metaData);
(0, _addNewValuesOnly2.default)(combinedValue, processedValue || value[i]);
}
// only modify the value if it was touched
// by any plugin to prevent unnecessary mutations
if (combinedValue.length > 0) {
style[property] = combinedValue;
}
} else {
var _processedValue = (0, _prefixValue2.default)(plugins, property, value, style, this._metaData);
// only modify the value if it was touched
// by any plugin to prevent unnecessary mutations
if (_processedValue) {
style[property] = _processedValue;
}
// add prefixes to properties
if (this._requiresPrefix.hasOwnProperty(property)) {
style[this._browserInfo.jsPrefix + (0, _capitalizeString2.default)(property)] = value;
if (!this._keepUnprefixed) {
delete style[property];
}
}
}
}
return style;
}
/**
* Returns a prefixed version of the style object using all vendor prefixes
* @param {Object} styles - Style object that gets prefixed properties added
* @returns {Object} - Style object with prefixed properties and values
*/
}], [{
key: 'prefixAll',
value: function prefixAll(styles) {
return fallback(styles);
}
}]);
return Prefixer;
}();
}
module.exports = exports['default'];

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,68 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _createPrefixer = require('./createPrefixer');
var _createPrefixer2 = _interopRequireDefault(_createPrefixer);
var _cursor = require('./plugins/cursor');
var _cursor2 = _interopRequireDefault(_cursor);
var _crossFade = require('./plugins/crossFade');
var _crossFade2 = _interopRequireDefault(_crossFade);
var _filter = require('./plugins/filter');
var _filter2 = _interopRequireDefault(_filter);
var _flex = require('./plugins/flex');
var _flex2 = _interopRequireDefault(_flex);
var _flexboxOld = require('./plugins/flexboxOld');
var _flexboxOld2 = _interopRequireDefault(_flexboxOld);
var _gradient = require('./plugins/gradient');
var _gradient2 = _interopRequireDefault(_gradient);
var _imageSet = require('./plugins/imageSet');
var _imageSet2 = _interopRequireDefault(_imageSet);
var _position = require('./plugins/position');
var _position2 = _interopRequireDefault(_position);
var _sizing = require('./plugins/sizing');
var _sizing2 = _interopRequireDefault(_sizing);
var _transition = require('./plugins/transition');
var _transition2 = _interopRequireDefault(_transition);
var _static = require('../static');
var _static2 = _interopRequireDefault(_static);
var _dynamicData = require('./dynamicData');
var _dynamicData2 = _interopRequireDefault(_dynamicData);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var plugins = [_crossFade2.default, _cursor2.default, _filter2.default, _flexboxOld2.default, _gradient2.default, _imageSet2.default, _position2.default, _sizing2.default, _transition2.default, _flex2.default];
var Prefixer = (0, _createPrefixer2.default)({
prefixMap: _dynamicData2.default.prefixMap,
plugins: plugins
}, _static2.default);
exports.default = Prefixer;
module.exports = exports['default'];

View File

@@ -0,0 +1,24 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = calc;
var _getPrefixedValue = require('../../utils/getPrefixedValue');
var _getPrefixedValue2 = _interopRequireDefault(_getPrefixedValue);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function calc(property, value, style, _ref) {
var browserName = _ref.browserName,
browserVersion = _ref.browserVersion,
cssPrefix = _ref.cssPrefix,
keepUnprefixed = _ref.keepUnprefixed;
if (typeof value === 'string' && value.indexOf('calc(') > -1 && (browserName === 'firefox' && browserVersion < 15 || browserName === 'chrome' && browserVersion < 25 || browserName === 'safari' && browserVersion < 6.1 || browserName === 'ios_saf' && browserVersion < 7)) {
return (0, _getPrefixedValue2.default)(value.replace(/calc\(/g, cssPrefix + 'calc('), value, keepUnprefixed);
}
}
module.exports = exports['default'];

View File

@@ -0,0 +1,24 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = crossFade;
var _getPrefixedValue = require('../../utils/getPrefixedValue');
var _getPrefixedValue2 = _interopRequireDefault(_getPrefixedValue);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function crossFade(property, value, style, _ref) {
var browserName = _ref.browserName,
browserVersion = _ref.browserVersion,
cssPrefix = _ref.cssPrefix,
keepUnprefixed = _ref.keepUnprefixed;
if (typeof value === 'string' && value.indexOf('cross-fade(') > -1 && (browserName === 'chrome' || browserName === 'opera' || browserName === 'and_chr' || (browserName === 'ios_saf' || browserName === 'safari') && browserVersion < 10)) {
return (0, _getPrefixedValue2.default)(value.replace(/cross-fade\(/g, cssPrefix + 'cross-fade('), value, keepUnprefixed);
}
}
module.exports = exports['default'];

View File

@@ -0,0 +1,42 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = cursor;
var _getPrefixedValue = require('../../utils/getPrefixedValue');
var _getPrefixedValue2 = _interopRequireDefault(_getPrefixedValue);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var grabValues = {
grab: true,
grabbing: true
};
var zoomValues = {
'zoom-in': true,
'zoom-out': true
};
function cursor(property, value, style, _ref) {
var browserName = _ref.browserName,
browserVersion = _ref.browserVersion,
cssPrefix = _ref.cssPrefix,
keepUnprefixed = _ref.keepUnprefixed;
// adds prefixes for firefox, chrome, safari, and opera regardless of
// version until a reliable browser support info can be found
// see: https://github.com/rofrischmann/inline-style-prefixer/issues/79
if (property === 'cursor' && grabValues[value] && (browserName === 'firefox' || browserName === 'chrome' || browserName === 'safari' || browserName === 'opera')) {
return (0, _getPrefixedValue2.default)(cssPrefix + value, value, keepUnprefixed);
}
if (property === 'cursor' && zoomValues[value] && (browserName === 'firefox' && browserVersion < 24 || browserName === 'chrome' && browserVersion < 37 || browserName === 'safari' && browserVersion < 9 || browserName === 'opera' && browserVersion < 24)) {
return (0, _getPrefixedValue2.default)(cssPrefix + value, value, keepUnprefixed);
}
}
module.exports = exports['default'];

View File

@@ -0,0 +1,24 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = filter;
var _getPrefixedValue = require('../../utils/getPrefixedValue');
var _getPrefixedValue2 = _interopRequireDefault(_getPrefixedValue);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function filter(property, value, style, _ref) {
var browserName = _ref.browserName,
browserVersion = _ref.browserVersion,
cssPrefix = _ref.cssPrefix,
keepUnprefixed = _ref.keepUnprefixed;
if (typeof value === 'string' && value.indexOf('filter(') > -1 && (browserName === 'ios_saf' || browserName === 'safari' && browserVersion < 9.1)) {
return (0, _getPrefixedValue2.default)(value.replace(/filter\(/g, cssPrefix + 'filter('), value, keepUnprefixed);
}
}
module.exports = exports['default'];

View File

@@ -0,0 +1,28 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = flex;
var _getPrefixedValue = require('../../utils/getPrefixedValue');
var _getPrefixedValue2 = _interopRequireDefault(_getPrefixedValue);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var values = {
flex: true,
'inline-flex': true
};
function flex(property, value, style, _ref) {
var browserName = _ref.browserName,
browserVersion = _ref.browserVersion,
cssPrefix = _ref.cssPrefix,
keepUnprefixed = _ref.keepUnprefixed;
if (property === 'display' && values[value] && (browserName === 'chrome' && browserVersion < 29 && browserVersion > 20 || (browserName === 'safari' || browserName === 'ios_saf') && browserVersion < 9 && browserVersion > 6 || browserName === 'opera' && (browserVersion === 15 || browserVersion === 16))) {
return (0, _getPrefixedValue2.default)(cssPrefix + value, value, keepUnprefixed);
}
}
module.exports = exports['default'];

View File

@@ -0,0 +1,55 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = flexboxIE;
var _getPrefixedValue = require('../../utils/getPrefixedValue');
var _getPrefixedValue2 = _interopRequireDefault(_getPrefixedValue);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var alternativeValues = {
'space-around': 'distribute',
'space-between': 'justify',
'flex-start': 'start',
'flex-end': 'end',
flex: 'flexbox',
'inline-flex': 'inline-flexbox'
};
var alternativeProps = {
alignContent: 'msFlexLinePack',
alignSelf: 'msFlexItemAlign',
alignItems: 'msFlexAlign',
justifyContent: 'msFlexPack',
order: 'msFlexOrder',
flexGrow: 'msFlexPositive',
flexShrink: 'msFlexNegative',
flexBasis: 'msFlexPreferredSize'
};
function flexboxIE(property, value, style, _ref) {
var browserName = _ref.browserName,
browserVersion = _ref.browserVersion,
cssPrefix = _ref.cssPrefix,
keepUnprefixed = _ref.keepUnprefixed,
requiresPrefix = _ref.requiresPrefix;
if ((alternativeProps.hasOwnProperty(property) || property === 'display' && typeof value === 'string' && value.indexOf('flex') > -1) && (browserName === 'ie_mob' || browserName === 'ie') && browserVersion === 10) {
delete requiresPrefix[property];
if (!keepUnprefixed && !Array.isArray(style[property])) {
delete style[property];
}
if (property === 'display' && alternativeValues.hasOwnProperty(value)) {
return (0, _getPrefixedValue2.default)(cssPrefix + alternativeValues[value], value, keepUnprefixed);
}
if (alternativeProps.hasOwnProperty(property)) {
style[alternativeProps[property]] = alternativeValues[value] || value;
}
}
}
module.exports = exports['default'];

View File

@@ -0,0 +1,68 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = flexboxOld;
var _getPrefixedValue = require('../../utils/getPrefixedValue');
var _getPrefixedValue2 = _interopRequireDefault(_getPrefixedValue);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var alternativeValues = {
'space-around': 'justify',
'space-between': 'justify',
'flex-start': 'start',
'flex-end': 'end',
'wrap-reverse': 'multiple',
wrap: 'multiple',
flex: 'box',
'inline-flex': 'inline-box'
};
var alternativeProps = {
alignItems: 'WebkitBoxAlign',
justifyContent: 'WebkitBoxPack',
flexWrap: 'WebkitBoxLines'
};
var otherProps = ['alignContent', 'alignSelf', 'order', 'flexGrow', 'flexShrink', 'flexBasis', 'flexDirection'];
var properties = Object.keys(alternativeProps).concat(otherProps);
function flexboxOld(property, value, style, _ref) {
var browserName = _ref.browserName,
browserVersion = _ref.browserVersion,
cssPrefix = _ref.cssPrefix,
keepUnprefixed = _ref.keepUnprefixed,
requiresPrefix = _ref.requiresPrefix;
if ((properties.indexOf(property) > -1 || property === 'display' && typeof value === 'string' && value.indexOf('flex') > -1) && (browserName === 'firefox' && browserVersion < 22 || browserName === 'chrome' && browserVersion < 21 || (browserName === 'safari' || browserName === 'ios_saf') && browserVersion <= 6.1 || browserName === 'android' && browserVersion < 4.4 || browserName === 'and_uc')) {
delete requiresPrefix[property];
if (!keepUnprefixed && !Array.isArray(style[property])) {
delete style[property];
}
if (property === 'flexDirection' && typeof value === 'string') {
if (value.indexOf('column') > -1) {
style.WebkitBoxOrient = 'vertical';
} else {
style.WebkitBoxOrient = 'horizontal';
}
if (value.indexOf('reverse') > -1) {
style.WebkitBoxDirection = 'reverse';
} else {
style.WebkitBoxDirection = 'normal';
}
}
if (property === 'display' && alternativeValues.hasOwnProperty(value)) {
return (0, _getPrefixedValue2.default)(cssPrefix + alternativeValues[value], value, keepUnprefixed);
}
if (alternativeProps.hasOwnProperty(property)) {
style[alternativeProps[property]] = alternativeValues[value] || value;
}
}
}
module.exports = exports['default'];

View File

@@ -0,0 +1,25 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = gradient;
var _getPrefixedValue = require('../../utils/getPrefixedValue');
var _getPrefixedValue2 = _interopRequireDefault(_getPrefixedValue);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var values = /linear-gradient|radial-gradient|repeating-linear-gradient|repeating-radial-gradient/;
function gradient(property, value, style, _ref) {
var browserName = _ref.browserName,
browserVersion = _ref.browserVersion,
cssPrefix = _ref.cssPrefix,
keepUnprefixed = _ref.keepUnprefixed;
if (typeof value === 'string' && values.test(value) && (browserName === 'firefox' && browserVersion < 16 || browserName === 'chrome' && browserVersion < 26 || (browserName === 'safari' || browserName === 'ios_saf') && browserVersion < 7 || (browserName === 'opera' || browserName === 'op_mini') && browserVersion < 12.1 || browserName === 'android' && browserVersion < 4.4 || browserName === 'and_uc')) {
return (0, _getPrefixedValue2.default)(cssPrefix + value, value, keepUnprefixed);
}
}
module.exports = exports['default'];

View File

@@ -0,0 +1,23 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = imageSet;
var _getPrefixedValue = require('../../utils/getPrefixedValue');
var _getPrefixedValue2 = _interopRequireDefault(_getPrefixedValue);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function imageSet(property, value, style, _ref) {
var browserName = _ref.browserName,
cssPrefix = _ref.cssPrefix,
keepUnprefixed = _ref.keepUnprefixed;
if (typeof value === 'string' && value.indexOf('image-set(') > -1 && (browserName === 'chrome' || browserName === 'opera' || browserName === 'and_chr' || browserName === 'and_uc' || browserName === 'ios_saf' || browserName === 'safari')) {
return (0, _getPrefixedValue2.default)(value.replace(/image-set\(/g, cssPrefix + 'image-set('), value, keepUnprefixed);
}
}
module.exports = exports['default'];

View File

@@ -0,0 +1,58 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _calc = require('./calc');
var _calc2 = _interopRequireDefault(_calc);
var _cursor = require('./cursor');
var _cursor2 = _interopRequireDefault(_cursor);
var _crossFade = require('./crossFade');
var _crossFade2 = _interopRequireDefault(_crossFade);
var _filter = require('./filter');
var _filter2 = _interopRequireDefault(_filter);
var _flex = require('./flex');
var _flex2 = _interopRequireDefault(_flex);
var _flexboxIE = require('./flexboxIE');
var _flexboxIE2 = _interopRequireDefault(_flexboxIE);
var _flexboxOld = require('./flexboxOld');
var _flexboxOld2 = _interopRequireDefault(_flexboxOld);
var _gradient = require('./gradient');
var _gradient2 = _interopRequireDefault(_gradient);
var _imageSet = require('./imageSet');
var _imageSet2 = _interopRequireDefault(_imageSet);
var _position = require('./position');
var _position2 = _interopRequireDefault(_position);
var _sizing = require('./sizing');
var _sizing2 = _interopRequireDefault(_sizing);
var _transition = require('./transition');
var _transition2 = _interopRequireDefault(_transition);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.default = [_position2.default, _calc2.default, _cursor2.default, _imageSet2.default, _crossFade2.default, _filter2.default, _sizing2.default, _gradient2.default, _transition2.default, _flexboxIE2.default, _flexboxOld2.default, _flex2.default];
module.exports = exports['default'];

View File

@@ -0,0 +1,23 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = position;
var _getPrefixedValue = require('../../utils/getPrefixedValue');
var _getPrefixedValue2 = _interopRequireDefault(_getPrefixedValue);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function position(property, value, style, _ref) {
var browserName = _ref.browserName,
cssPrefix = _ref.cssPrefix,
keepUnprefixed = _ref.keepUnprefixed;
if (property === 'position' && value === 'sticky' && (browserName === 'safari' || browserName === 'ios_saf')) {
return (0, _getPrefixedValue2.default)(cssPrefix + value, value, keepUnprefixed);
}
}
module.exports = exports['default'];

View File

@@ -0,0 +1,42 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = sizing;
var _getPrefixedValue = require('../../utils/getPrefixedValue');
var _getPrefixedValue2 = _interopRequireDefault(_getPrefixedValue);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var properties = {
maxHeight: true,
maxWidth: true,
width: true,
height: true,
columnWidth: true,
minWidth: true,
minHeight: true
};
var values = {
'min-content': true,
'max-content': true,
'fill-available': true,
'fit-content': true,
'contain-floats': true
// TODO: chrome & opera support it
};function sizing(property, value, style, _ref) {
var cssPrefix = _ref.cssPrefix,
keepUnprefixed = _ref.keepUnprefixed;
// This might change in the future
// Keep an eye on it
if (properties.hasOwnProperty(property) && values.hasOwnProperty(value)) {
return (0, _getPrefixedValue2.default)(cssPrefix + value, value, keepUnprefixed);
}
}
module.exports = exports['default'];

View File

@@ -0,0 +1,53 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = transition;
var _hyphenateProperty = require('css-in-js-utils/lib/hyphenateProperty');
var _hyphenateProperty2 = _interopRequireDefault(_hyphenateProperty);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var properties = {
transition: true,
transitionProperty: true,
WebkitTransition: true,
WebkitTransitionProperty: true,
MozTransition: true,
MozTransitionProperty: true
};
var requiresPrefixDashCased = void 0;
function transition(property, value, style, _ref) {
var cssPrefix = _ref.cssPrefix,
keepUnprefixed = _ref.keepUnprefixed,
requiresPrefix = _ref.requiresPrefix;
if (typeof value === 'string' && properties.hasOwnProperty(property)) {
// memoize the prefix array for later use
if (!requiresPrefixDashCased) {
requiresPrefixDashCased = Object.keys(requiresPrefix).map(function (prop) {
return (0, _hyphenateProperty2.default)(prop);
});
}
// only split multi values, not cubic beziers
var multipleValues = value.split(/,(?![^()]*(?:\([^()]*\))?\))/g);
requiresPrefixDashCased.forEach(function (prop) {
multipleValues.forEach(function (val, index) {
if (val.indexOf(prop) > -1 && prop !== 'order') {
multipleValues[index] = val.replace(prop, cssPrefix + prop) + (keepUnprefixed ? ',' + val : '');
}
});
});
return multipleValues.join(',');
}
}
module.exports = exports['default'];

View File

@@ -0,0 +1,71 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
exports.default = generateDynamicPrefixMap;
var _caniuseApi = require('caniuse-api');
var _propertyMap = require('./maps/propertyMap');
var _propertyMap2 = _interopRequireDefault(_propertyMap);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var prefixBrowserMap = {
chrome: 'Webkit',
safari: 'Webkit',
firefox: 'Moz',
opera: 'Webkit',
ie: 'ms',
edge: 'ms',
ios_saf: 'Webkit',
android: 'Webkit',
and_chr: 'Webkit',
and_uc: 'Webkit',
op_mini: 'Webkit',
ie_mob: 'ms'
};
var browsers = Object.keys(prefixBrowserMap);
// remove flexprops from IE
var flexPropsIE = ['alignContent', 'alignSelf', 'alignItems', 'justifyContent', 'order', 'flexGrow', 'flexShrink', 'flexBasis'];
function generateDynamicPrefixMap(browserList) {
var prefixMap = {};
for (var i = 0, len = browsers.length; i < len; ++i) {
var browser = browsers[i];
if (!prefixMap.hasOwnProperty(browser)) {
prefixMap[browser] = {};
}
for (var keyword in _propertyMap2.default) {
var keywordProperties = [].concat(_propertyMap2.default[keyword]);
var versions = (0, _caniuseApi.getSupport)(keyword);
for (var j = 0, kLen = keywordProperties.length; j < kLen; ++j) {
if (versions[browser].x >= browserList[browser]) {
prefixMap[browser][keywordProperties[j]] = versions[browser].x;
}
}
}
}
prefixMap.ie = _extends({}, prefixMap.ie, prefixMap.ie_mob);
delete prefixMap.ie_mob;
// remove flexProps from IE due to alternative syntax
for (var _i = 0, _len = flexPropsIE.length; _i < _len; ++_i) {
delete prefixMap.ie[flexPropsIE[_i]];
}
return prefixMap;
}
module.exports = exports['default'];

View File

@@ -0,0 +1,33 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = getRecommendedPlugins;
var _pluginMap = require('./maps/pluginMap');
var _pluginMap2 = _interopRequireDefault(_pluginMap);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function getRecommendedPlugins(browserList) {
var recommendedPlugins = {};
for (var plugin in _pluginMap2.default) {
var browserSupportByPlugin = _pluginMap2.default[plugin];
for (var browser in browserSupportByPlugin) {
if (browserList.hasOwnProperty(browser)) {
var browserVersion = browserSupportByPlugin[browser];
if (browserList[browser] < browserVersion) {
recommendedPlugins[plugin] = true;
}
}
}
}
return Object.keys(recommendedPlugins);
}
module.exports = exports['default'];

View File

@@ -0,0 +1,86 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = generateStaticPrefixMap;
var _caniuseApi = require('caniuse-api');
var _propertyMap = require('./maps/propertyMap');
var _propertyMap2 = _interopRequireDefault(_propertyMap);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var prefixBrowserMap = {
chrome: 'Webkit',
safari: 'Webkit',
firefox: 'Moz',
opera: 'Webkit',
ie: 'ms',
edge: 'ms',
ios_saf: 'Webkit',
android: 'Webkit',
and_chr: 'Webkit',
and_uc: 'Webkit',
op_mini: 'Webkit',
ie_mob: 'ms'
// remove flexprops from IE
};var flexPropsIE = ['alignContent', 'alignSelf', 'alignItems', 'justifyContent', 'order', 'flexGrow', 'flexShrink', 'flexBasis'];
function filterAndRemoveIfEmpty(map, property, filter) {
map[property] = map[property].filter(filter);
if (map[property].length === 0) {
delete map[property];
}
}
function generateStaticPrefixMap(browserList) {
var prefixMap = {};
for (var browser in prefixBrowserMap) {
var prefix = prefixBrowserMap[browser];
for (var keyword in _propertyMap2.default) {
var keywordProperties = [].concat(_propertyMap2.default[keyword]);
var versions = (0, _caniuseApi.getSupport)(keyword);
for (var i = 0, len = keywordProperties.length; i < len; ++i) {
if (versions[browser].x >= browserList[browser]) {
var property = keywordProperties[i];
if (!prefixMap[property]) {
prefixMap[property] = [];
}
if (prefixMap[property].indexOf(prefix) === -1) {
prefixMap[property].push(prefix);
}
}
}
}
}
// remove flexProps from IE and Firefox due to alternative syntax
for (var _i = 0, _len = flexPropsIE.length; _i < _len; ++_i) {
filterAndRemoveIfEmpty(prefixMap, flexPropsIE[_i], function (prefix) {
return prefix !== 'ms' && prefix !== 'Moz';
});
}
// remove transition from Moz and Webkit as they are handled
// specially by the transition plugins
filterAndRemoveIfEmpty(prefixMap, 'transition', function (prefix) {
return prefix !== 'Moz' && prefix !== 'Webkit';
});
// remove WebkitFlexDirection as it does not exist
filterAndRemoveIfEmpty(prefixMap, 'flexDirection', function (prefix) {
return prefix !== 'Moz';
});
return prefixMap;
}
module.exports = exports['default'];

View File

@@ -0,0 +1,93 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = generateData;
var _generateStaticPrefixMap = require('./generateStaticPrefixMap');
var _generateStaticPrefixMap2 = _interopRequireDefault(_generateStaticPrefixMap);
var _generateDynamicPrefixMap = require('./generateDynamicPrefixMap');
var _generateDynamicPrefixMap2 = _interopRequireDefault(_generateDynamicPrefixMap);
var _generatePluginList = require('./generatePluginList');
var _generatePluginList2 = _interopRequireDefault(_generatePluginList);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function generateImportString(plugin, pluginPath, compatibility) {
if (compatibility) {
return 'var ' + plugin + ' = require(\'inline-style-prefixer/' + pluginPath + '/plugins/' + plugin + '\')';
}
return 'import ' + plugin + ' from \'inline-style-prefixer/' + pluginPath + '/plugins/' + plugin + '\'';
}
function generateFile(prefixMap, pluginList, compatibility, pluginPath) {
var pluginImports = pluginList.map(function (plugin) {
return generateImportString(plugin, pluginPath, compatibility);
}).join('\n');
var moduleExporter = compatibility ? 'module.exports = ' : 'export default';
var pluginExport = '[' + pluginList.join(',') + ']';
var prefixMapExport = JSON.stringify(prefixMap);
if (pluginPath === 'static') {
var prefixVariables = ['var w = ["Webkit"];', 'var m = ["Moz"];', 'var ms = ["ms"];', 'var wm = ["Webkit","Moz"];', 'var wms = ["Webkit","ms"];', 'var wmms = ["Webkit","Moz","ms"];'].join('\n');
return pluginImports + '\n' + prefixVariables + '\n\n' + moduleExporter + ' {\n plugins: ' + pluginExport + ',\n prefixMap: ' + prefixMapExport.replace(/\["Webkit"\]/g, 'w').replace(/\["Moz"\]/g, 'm').replace(/\["ms"\]/g, 'ms').replace(/\["Webkit","Moz"\]/g, 'wm').replace(/\["Webkit","ms"\]/g, 'wms').replace(/\["Webkit","Moz","ms"\]/g, 'wmms') + '\n}';
}
return pluginImports + '\n\n' + moduleExporter + ' {\n plugins: ' + pluginExport + ',\n prefixMap: ' + prefixMapExport + '\n}';
}
function saveFile(fileContent, path) {
/* eslint-disable global-require */
var fs = require('fs');
/* eslint-enable global-require */
fs.writeFile(path, fileContent, function (err) {
if (err) {
throw err;
}
console.log('Successfully saved data to "' + path + '".');
});
}
function generateData(browserList) {
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
compatibility = _ref.compatibility,
plugins = _ref.plugins,
staticPath = _ref.staticPath,
dynamicPath = _ref.dynamicPath,
prefixMap = _ref.prefixMap;
var shouldRenderPlugins = plugins !== undefined ? plugins : true;
var shouldRenderPrefixMap = prefixMap !== undefined ? prefixMap : true;
var data = {
static: shouldRenderPrefixMap ? (0, _generateStaticPrefixMap2.default)(browserList) : {},
dynamic: shouldRenderPrefixMap ? (0, _generateDynamicPrefixMap2.default)(browserList) : {},
plugins: shouldRenderPlugins ? (0, _generatePluginList2.default)(browserList) : []
};
if (staticPath) {
var fileContent = generateFile(data.static, data.plugins, compatibility, 'static');
saveFile(fileContent, staticPath);
}
if (dynamicPath) {
var _fileContent = generateFile(data.dynamic, data.plugins, compatibility, 'dynamic');
saveFile(_fileContent, dynamicPath);
}
return data;
}
module.exports = exports['default'];

View File

@@ -0,0 +1,94 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
// values are "up-to"
var maximumVersion = 9999;
exports.default = {
calc: {
firefox: 15,
chrome: 25,
safari: 6.1,
ios_saf: 7
},
crossFade: {
chrome: maximumVersion,
opera: maximumVersion,
and_chr: maximumVersion,
ios_saf: 10,
safari: 10
},
cursor: {
firefox: maximumVersion,
chrome: maximumVersion,
safari: maximumVersion,
opera: maximumVersion
},
filter: {
ios_saf: maximumVersion,
safari: 9.1
},
flex: {
chrome: 29,
safari: 9,
ios_saf: 9,
opera: 16
},
flexboxIE: {
ie_mob: 11,
ie: 11
},
flexboxOld: {
firefox: 22,
chrome: 21,
safari: 6.2,
ios_saf: 6.2,
android: 4.4,
and_uc: maximumVersion
},
gradient: {
firefox: 16,
chrome: 26,
safari: 7,
ios_saf: 7,
opera: 12.1,
op_mini: 12.1,
android: 4.4,
and_uc: maximumVersion
},
imageSet: {
chrome: maximumVersion,
safari: maximumVersion,
opera: maximumVersion,
and_chr: maximumVersion,
and_uc: maximumVersion,
ios_saf: maximumVersion
},
position: {
safari: maximumVersion,
ios_saf: maximumVersion
},
sizing: {
chrome: 46,
safari: maximumVersion,
opera: 33,
and_chr: 53,
ios_saf: maximumVersion
},
transition: {
chrome: maximumVersion,
safari: maximumVersion,
opera: maximumVersion,
and_chr: maximumVersion,
and_uc: maximumVersion,
ios_saf: maximumVersion,
msie: maximumVersion,
ie_mob: maximumVersion,
edge: maximumVersion,
firefox: maximumVersion,
op_mini: maximumVersion
}
};
module.exports = exports["default"];

View File

@@ -0,0 +1,44 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = {
'border-radius': 'borderRadius',
'border-image': ['borderImage', 'borderImageOutset', 'borderImageRepeat', 'borderImageSlice', 'borderImageSource', 'borderImageWidth'],
flexbox: ['flex', 'flexBasis', 'flexDirection', 'flexGrow', 'flexFlow', 'flexShrink', 'flexWrap', 'alignContent', 'alignItems', 'alignSelf', 'justifyContent', 'order'],
'css-transitions': ['transition', 'transitionDelay', 'transitionDuration', 'transitionProperty', 'transitionTimingFunction'],
transforms2d: ['transform', 'transformOrigin', 'transformOriginX', 'transformOriginY'],
transforms3d: ['backfaceVisibility', 'perspective', 'perspectiveOrigin', 'transform', 'transformOrigin', 'transformStyle', 'transformOriginX', 'transformOriginY', 'transformOriginZ'],
'css-animation': ['animation', 'animationDelay', 'animationDirection', 'animationFillMode', 'animationDuration', 'animationIterationCount', 'animationName', 'animationPlayState', 'animationTimingFunction'],
'css-appearance': 'appearance',
'user-select-none': 'userSelect',
'css-backdrop-filter': 'backdropFilter',
'css3-boxsizing': 'boxSizing',
'font-kerning': 'fontKerning',
'css-exclusions': ['wrapFlow', 'wrapThrough', 'wrapMargin'],
'css-snappoints': ['scrollSnapType', 'scrollSnapPointsX', 'scrollSnapPointsY', 'scrollSnapDestination', 'scrollSnapCoordinate'],
'text-emphasis': ['textEmphasisPosition', 'textEmphasis', 'textEmphasisStyle', 'textEmphasisColor'],
'css-text-align-last': 'textAlignLast',
'css-boxdecorationbreak': 'boxDecorationBreak',
'css-clip-path': 'clipPath',
'css-masks': ['maskImage', 'maskMode', 'maskRepeat', 'maskPosition', 'maskClip', 'maskOrigin', 'maskSize', 'maskComposite', 'mask', 'maskBorderSource', 'maskBorderMode', 'maskBorderSlice', 'maskBorderWidth', 'maskBorderOutset', 'maskBorderRepeat', 'maskBorder', 'maskType'],
'css-touch-action': 'touchAction',
'text-size-adjust': 'textSizeAdjust',
'text-decoration': ['textDecorationStyle', 'textDecorationSkip', 'textDecorationLine', 'textDecorationColor'],
'css-shapes': ['shapeImageThreshold', 'shapeImageMargin', 'shapeImageOutside'],
'css3-tabsize': 'tabSize',
'css-filters': 'filter',
'css-resize': 'resize',
'css-hyphens': 'hyphens',
'css-regions': ['flowInto', 'flowFrom', 'breakBefore', 'breakAfter', 'breakInside', 'regionFragment'],
'css-grid': ['gridTemplateColumns', 'gridTemplateRows', 'gridTemplateAreas', 'gridTemplate', 'gridAutoColumns', 'gridAutoRows', 'gridAutoFlow', 'grid', 'gridRowStart', 'gridColumnStart', 'gridRowEnd', 'gridRow', 'gridColumn', 'gridColumnEnd', 'gridColumnGap', 'gridRowGap', 'gridArea', 'gridGap'],
'object-fit': ['objectFit', 'objectPosition'],
'text-overflow': 'textOverflow',
'background-img-opts': ['backgroundClip', 'backgroundOrigin', 'backgroundSize'],
'font-feature': 'fontFeatureSettings',
'css-boxshadow': 'boxShadow',
multicolumn: ['breakAfter', 'breakBefore', 'breakInside', 'columnCount', 'columnFill', 'columnGap', 'columnRule', 'columnRuleColor', 'columnRuleStyle', 'columnRuleWidth', 'columns', 'columnSpan', 'columnWidth', 'columnGap'],
'css-writing-mode': ['writingMode']
};
module.exports = exports['default'];

View File

@@ -0,0 +1,117 @@
{
"_from": "inline-style-prefixer@^3.0.6",
"_id": "inline-style-prefixer@3.0.8",
"_inBundle": false,
"_integrity": "sha1-hVG45bTVcyROZqNLBPfTIHaitTQ=",
"_location": "/react-toastify/inline-style-prefixer",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "inline-style-prefixer@^3.0.6",
"name": "inline-style-prefixer",
"escapedName": "inline-style-prefixer",
"rawSpec": "^3.0.6",
"saveSpec": null,
"fetchSpec": "^3.0.6"
},
"_requiredBy": [
"/react-toastify/glamor"
],
"_resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-3.0.8.tgz",
"_shasum": "8551b8e5b4d573244e66a34b04f7d32076a2b534",
"_spec": "inline-style-prefixer@^3.0.6",
"_where": "C:\\Users\\deranjer\\go\\src\\github.com\\deranjer\\goTorrent\\goTorrentWebUI\\node_modules\\react-toastify\\node_modules\\glamor",
"author": {
"name": "Robin Frischmann"
},
"bugs": {
"url": "https://github.com/rofrischmann/inline-style-prefixer/issues"
},
"bundleDependencies": false,
"dependencies": {
"bowser": "^1.7.3",
"css-in-js-utils": "^2.0.0"
},
"deprecated": false,
"description": "Run-time Autoprefixer for JavaScript style objects",
"devDependencies": {
"babel": "^6.5.2",
"babel-cli": "^6.6.0",
"babel-core": "^6.6.0",
"babel-eslint": "^7.1.1",
"babel-plugin-add-module-exports": "^0.2.1",
"babel-plugin-transform-class-properties": "^6.9.1",
"babel-preset-es2015": "^6.6.0",
"babel-preset-es2015-rollup": "^1.1.1",
"babel-preset-react": "^6.5.0",
"babel-preset-stage-0": "^6.5.0",
"caniuse-api": "^2.0.0",
"chai": "^3.2.0",
"codeclimate-test-reporter": "^0.1.1",
"cross-env": "^1.0.8",
"eslint": "^3.14.0",
"eslint-config-airbnb": "^14.0.0",
"eslint-plugin-flowtype": "^2.30.0",
"eslint-plugin-import": "^2.2.0",
"eslint-plugin-jsx-a11y": "^3.0.2",
"eslint-plugin-react": "^6.9.0",
"flow-bin": "^0.38.0",
"gh-pages": "^0.12.0",
"gitbook": "^3.2.2",
"gitbook-cli": "^2.3.0",
"gitbook-plugin-anker-enable": "0.0.4",
"gitbook-plugin-edit-link": "^2.0.2",
"gitbook-plugin-github": "^2.0.0",
"gitbook-plugin-prism": "^2.2.1",
"istanbul": "1.0.0-alpha.2",
"mocha": "^2.4.5",
"prettier": "^1.3.1",
"rimraf": "^2.4.2",
"rollup": "0.26.3",
"rollup-plugin-babel": "2.4.0",
"rollup-plugin-commonjs": "2.2.1",
"rollup-plugin-node-resolve": "1.5.0",
"rollup-plugin-uglify": "0.3.1"
},
"files": [
"LICENSE",
"README.md",
"dist/",
"static/",
"generator/",
"dynamic/",
"utils/"
],
"homepage": "https://github.com/rofrischmann/inline-style-prefixer#readme",
"keywords": [
"react",
"react styling",
"prefixer",
"inline styles",
"autoprefixer",
"vendor prefix",
"userAgent"
],
"license": "MIT",
"main": "dynamic/index.js",
"name": "inline-style-prefixer",
"repository": {
"type": "git",
"url": "git+https://github.com/rofrischmann/inline-style-prefixer.git"
},
"scripts": {
"babel": "babel modules/ --out-dir .",
"build": "npm run check && mkdir dist && npm run generate && npm run babel && npm run dist",
"check": "npm run clean && npm run lint && npm test && npm run flow",
"clean": "rimraf static dynamic generator utils dist coverage",
"dist": "cross-env NODE_ENV=production babel-node buildPackage && cross-env NODE_ENV=development babel-node buildPackage",
"docs": "gitbook install && gitbook build && gh-pages -d _book",
"flow": "flow",
"generate": "babel-node generateDefaultData",
"lint": "eslint .",
"release": "npm run build && npm publish && npm run docs",
"test": "istanbul cover node_modules/mocha/bin/_mocha -- --opts test/_setup/mocha.opts"
},
"version": "3.0.8"
}

View File

@@ -0,0 +1,69 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = createPrefixer;
var _prefixProperty = require('../utils/prefixProperty');
var _prefixProperty2 = _interopRequireDefault(_prefixProperty);
var _prefixValue = require('../utils/prefixValue');
var _prefixValue2 = _interopRequireDefault(_prefixValue);
var _addNewValuesOnly = require('../utils/addNewValuesOnly');
var _addNewValuesOnly2 = _interopRequireDefault(_addNewValuesOnly);
var _isObject = require('../utils/isObject');
var _isObject2 = _interopRequireDefault(_isObject);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function createPrefixer(_ref) {
var prefixMap = _ref.prefixMap,
plugins = _ref.plugins;
function prefixAll(style) {
for (var property in style) {
var value = style[property];
// handle nested objects
if ((0, _isObject2.default)(value)) {
style[property] = prefixAll(value);
// handle array values
} else if (Array.isArray(value)) {
var combinedValue = [];
for (var i = 0, len = value.length; i < len; ++i) {
var processedValue = (0, _prefixValue2.default)(plugins, property, value[i], style, prefixMap);
(0, _addNewValuesOnly2.default)(combinedValue, processedValue || value[i]);
}
// only modify the value if it was touched
// by any plugin to prevent unnecessary mutations
if (combinedValue.length > 0) {
style[property] = combinedValue;
}
} else {
var _processedValue = (0, _prefixValue2.default)(plugins, property, value, style, prefixMap);
// only modify the value if it was touched
// by any plugin to prevent unnecessary mutations
if (_processedValue) {
style[property] = _processedValue;
}
(0, _prefixProperty2.default)(prefixMap, property, style);
}
}
return style;
}
return prefixAll;
}
module.exports = exports['default'];

View File

@@ -0,0 +1,63 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _createPrefixer = require('./createPrefixer');
var _createPrefixer2 = _interopRequireDefault(_createPrefixer);
var _staticData = require('./staticData');
var _staticData2 = _interopRequireDefault(_staticData);
var _cursor = require('./plugins/cursor');
var _cursor2 = _interopRequireDefault(_cursor);
var _crossFade = require('./plugins/crossFade');
var _crossFade2 = _interopRequireDefault(_crossFade);
var _filter = require('./plugins/filter');
var _filter2 = _interopRequireDefault(_filter);
var _flex = require('./plugins/flex');
var _flex2 = _interopRequireDefault(_flex);
var _flexboxOld = require('./plugins/flexboxOld');
var _flexboxOld2 = _interopRequireDefault(_flexboxOld);
var _gradient = require('./plugins/gradient');
var _gradient2 = _interopRequireDefault(_gradient);
var _imageSet = require('./plugins/imageSet');
var _imageSet2 = _interopRequireDefault(_imageSet);
var _position = require('./plugins/position');
var _position2 = _interopRequireDefault(_position);
var _sizing = require('./plugins/sizing');
var _sizing2 = _interopRequireDefault(_sizing);
var _transition = require('./plugins/transition');
var _transition2 = _interopRequireDefault(_transition);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var plugins = [_crossFade2.default, _cursor2.default, _filter2.default, _flexboxOld2.default, _gradient2.default, _imageSet2.default, _position2.default, _sizing2.default, _transition2.default, _flex2.default];
exports.default = (0, _createPrefixer2.default)({
prefixMap: _staticData2.default.prefixMap,
plugins: plugins
});
module.exports = exports['default'];

View File

@@ -0,0 +1,22 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = calc;
var _isPrefixedValue = require('css-in-js-utils/lib/isPrefixedValue');
var _isPrefixedValue2 = _interopRequireDefault(_isPrefixedValue);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var prefixes = ['-webkit-', '-moz-', ''];
function calc(property, value) {
if (typeof value === 'string' && !(0, _isPrefixedValue2.default)(value) && value.indexOf('calc(') > -1) {
return prefixes.map(function (prefix) {
return value.replace(/calc\(/g, prefix + 'calc(');
});
}
}
module.exports = exports['default'];

View File

@@ -0,0 +1,23 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = crossFade;
var _isPrefixedValue = require('css-in-js-utils/lib/isPrefixedValue');
var _isPrefixedValue2 = _interopRequireDefault(_isPrefixedValue);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// http://caniuse.com/#search=cross-fade
var prefixes = ['-webkit-', ''];
function crossFade(property, value) {
if (typeof value === 'string' && !(0, _isPrefixedValue2.default)(value) && value.indexOf('cross-fade(') > -1) {
return prefixes.map(function (prefix) {
return value.replace(/cross-fade\(/g, prefix + 'cross-fade(');
});
}
}
module.exports = exports['default'];

View File

@@ -0,0 +1,23 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = cursor;
var prefixes = ['-webkit-', '-moz-', ''];
var values = {
'zoom-in': true,
'zoom-out': true,
grab: true,
grabbing: true
};
function cursor(property, value) {
if (property === 'cursor' && values.hasOwnProperty(value)) {
return prefixes.map(function (prefix) {
return prefix + value;
});
}
}
module.exports = exports['default'];

View File

@@ -0,0 +1,23 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = filter;
var _isPrefixedValue = require('css-in-js-utils/lib/isPrefixedValue');
var _isPrefixedValue2 = _interopRequireDefault(_isPrefixedValue);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// http://caniuse.com/#feat=css-filter-function
var prefixes = ['-webkit-', ''];
function filter(property, value) {
if (typeof value === 'string' && !(0, _isPrefixedValue2.default)(value) && value.indexOf('filter(') > -1) {
return prefixes.map(function (prefix) {
return value.replace(/filter\(/g, prefix + 'filter(');
});
}
}
module.exports = exports['default'];

View File

@@ -0,0 +1,17 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = flex;
var values = {
flex: ['-webkit-box', '-moz-box', '-ms-flexbox', '-webkit-flex', 'flex'],
'inline-flex': ['-webkit-inline-box', '-moz-inline-box', '-ms-inline-flexbox', '-webkit-inline-flex', 'inline-flex']
};
function flex(property, value) {
if (property === 'display' && values.hasOwnProperty(value)) {
return values[value];
}
}
module.exports = exports['default'];

View File

@@ -0,0 +1,29 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = flexboxIE;
var alternativeValues = {
'space-around': 'distribute',
'space-between': 'justify',
'flex-start': 'start',
'flex-end': 'end'
};
var alternativeProps = {
alignContent: 'msFlexLinePack',
alignSelf: 'msFlexItemAlign',
alignItems: 'msFlexAlign',
justifyContent: 'msFlexPack',
order: 'msFlexOrder',
flexGrow: 'msFlexPositive',
flexShrink: 'msFlexNegative',
flexBasis: 'msFlexPreferredSize'
};
function flexboxIE(property, value, style) {
if (alternativeProps.hasOwnProperty(property)) {
style[alternativeProps[property]] = alternativeValues[value] || value;
}
}
module.exports = exports['default'];

View File

@@ -0,0 +1,39 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = flexboxOld;
var alternativeValues = {
'space-around': 'justify',
'space-between': 'justify',
'flex-start': 'start',
'flex-end': 'end',
'wrap-reverse': 'multiple',
wrap: 'multiple'
};
var alternativeProps = {
alignItems: 'WebkitBoxAlign',
justifyContent: 'WebkitBoxPack',
flexWrap: 'WebkitBoxLines'
};
function flexboxOld(property, value, style) {
if (property === 'flexDirection' && typeof value === 'string') {
if (value.indexOf('column') > -1) {
style.WebkitBoxOrient = 'vertical';
} else {
style.WebkitBoxOrient = 'horizontal';
}
if (value.indexOf('reverse') > -1) {
style.WebkitBoxDirection = 'reverse';
} else {
style.WebkitBoxDirection = 'normal';
}
}
if (alternativeProps.hasOwnProperty(property)) {
style[alternativeProps[property]] = alternativeValues[value] || value;
}
}
module.exports = exports['default'];

View File

@@ -0,0 +1,25 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = gradient;
var _isPrefixedValue = require('css-in-js-utils/lib/isPrefixedValue');
var _isPrefixedValue2 = _interopRequireDefault(_isPrefixedValue);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var prefixes = ['-webkit-', '-moz-', ''];
var values = /linear-gradient|radial-gradient|repeating-linear-gradient|repeating-radial-gradient/;
function gradient(property, value) {
if (typeof value === 'string' && !(0, _isPrefixedValue2.default)(value) && values.test(value)) {
return prefixes.map(function (prefix) {
return prefix + value;
});
}
}
module.exports = exports['default'];

View File

@@ -0,0 +1,23 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = imageSet;
var _isPrefixedValue = require('css-in-js-utils/lib/isPrefixedValue');
var _isPrefixedValue2 = _interopRequireDefault(_isPrefixedValue);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// http://caniuse.com/#feat=css-image-set
var prefixes = ['-webkit-', ''];
function imageSet(property, value) {
if (typeof value === 'string' && !(0, _isPrefixedValue2.default)(value) && value.indexOf('image-set(') > -1) {
return prefixes.map(function (prefix) {
return value.replace(/image-set\(/g, prefix + 'image-set(');
});
}
}
module.exports = exports['default'];

View File

@@ -0,0 +1,58 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _calc = require('./calc');
var _calc2 = _interopRequireDefault(_calc);
var _cursor = require('./cursor');
var _cursor2 = _interopRequireDefault(_cursor);
var _crossFade = require('./crossFade');
var _crossFade2 = _interopRequireDefault(_crossFade);
var _filter = require('./filter');
var _filter2 = _interopRequireDefault(_filter);
var _flex = require('./flex');
var _flex2 = _interopRequireDefault(_flex);
var _flexboxIE = require('./flexboxIE');
var _flexboxIE2 = _interopRequireDefault(_flexboxIE);
var _flexboxOld = require('./flexboxOld');
var _flexboxOld2 = _interopRequireDefault(_flexboxOld);
var _gradient = require('./gradient');
var _gradient2 = _interopRequireDefault(_gradient);
var _imageSet = require('./imageSet');
var _imageSet2 = _interopRequireDefault(_imageSet);
var _position = require('./position');
var _position2 = _interopRequireDefault(_position);
var _sizing = require('./sizing');
var _sizing2 = _interopRequireDefault(_sizing);
var _transition = require('./transition');
var _transition2 = _interopRequireDefault(_transition);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.default = [_position2.default, _calc2.default, _imageSet2.default, _crossFade2.default, _filter2.default, _cursor2.default, _sizing2.default, _gradient2.default, _transition2.default, _flexboxIE2.default, _flexboxOld2.default, _flex2.default];
module.exports = exports['default'];

View File

@@ -0,0 +1,12 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = position;
function position(property, value) {
if (property === 'position' && value === 'sticky') {
return ['-webkit-sticky', 'sticky'];
}
}
module.exports = exports['default'];

View File

@@ -0,0 +1,33 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = sizing;
var prefixes = ['-webkit-', '-moz-', ''];
var properties = {
maxHeight: true,
maxWidth: true,
width: true,
height: true,
columnWidth: true,
minWidth: true,
minHeight: true
};
var values = {
'min-content': true,
'max-content': true,
'fill-available': true,
'fit-content': true,
'contain-floats': true
};
function sizing(property, value) {
if (properties.hasOwnProperty(property) && values.hasOwnProperty(value)) {
return prefixes.map(function (prefix) {
return prefix + value;
});
}
}
module.exports = exports['default'];

View File

@@ -0,0 +1,93 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = transition;
var _hyphenateProperty = require('css-in-js-utils/lib/hyphenateProperty');
var _hyphenateProperty2 = _interopRequireDefault(_hyphenateProperty);
var _isPrefixedValue = require('css-in-js-utils/lib/isPrefixedValue');
var _isPrefixedValue2 = _interopRequireDefault(_isPrefixedValue);
var _capitalizeString = require('../../utils/capitalizeString');
var _capitalizeString2 = _interopRequireDefault(_capitalizeString);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var properties = {
transition: true,
transitionProperty: true,
WebkitTransition: true,
WebkitTransitionProperty: true,
MozTransition: true,
MozTransitionProperty: true
};
var prefixMapping = {
Webkit: '-webkit-',
Moz: '-moz-',
ms: '-ms-'
};
function prefixValue(value, propertyPrefixMap) {
if ((0, _isPrefixedValue2.default)(value)) {
return value;
}
// only split multi values, not cubic beziers
var multipleValues = value.split(/,(?![^()]*(?:\([^()]*\))?\))/g);
for (var i = 0, len = multipleValues.length; i < len; ++i) {
var singleValue = multipleValues[i];
var values = [singleValue];
for (var property in propertyPrefixMap) {
var dashCaseProperty = (0, _hyphenateProperty2.default)(property);
if (singleValue.indexOf(dashCaseProperty) > -1 && dashCaseProperty !== 'order') {
var prefixes = propertyPrefixMap[property];
for (var j = 0, pLen = prefixes.length; j < pLen; ++j) {
// join all prefixes and create a new value
values.unshift(singleValue.replace(dashCaseProperty, prefixMapping[prefixes[j]] + dashCaseProperty));
}
}
}
multipleValues[i] = values.join(',');
}
return multipleValues.join(',');
}
function transition(property, value, style, propertyPrefixMap) {
// also check for already prefixed transitions
if (typeof value === 'string' && properties.hasOwnProperty(property)) {
var outputValue = prefixValue(value, propertyPrefixMap);
// if the property is already prefixed
var webkitOutput = outputValue.split(/,(?![^()]*(?:\([^()]*\))?\))/g).filter(function (val) {
return !/-moz-|-ms-/.test(val);
}).join(',');
if (property.indexOf('Webkit') > -1) {
return webkitOutput;
}
var mozOutput = outputValue.split(/,(?![^()]*(?:\([^()]*\))?\))/g).filter(function (val) {
return !/-webkit-|-ms-/.test(val);
}).join(',');
if (property.indexOf('Moz') > -1) {
return mozOutput;
}
style['Webkit' + (0, _capitalizeString2.default)(property)] = webkitOutput;
style['Moz' + (0, _capitalizeString2.default)(property)] = mozOutput;
return outputValue;
}
}
module.exports = exports['default'];

View File

@@ -0,0 +1,18 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var w = ["Webkit"];
var m = ["Moz"];
var ms = ["ms"];
var wm = ["Webkit", "Moz"];
var wms = ["Webkit", "ms"];
var wmms = ["Webkit", "Moz", "ms"];
exports.default = {
plugins: [],
prefixMap: { "appearance": wm, "userSelect": wmms, "textEmphasisPosition": w, "textEmphasis": w, "textEmphasisStyle": w, "textEmphasisColor": w, "boxDecorationBreak": w, "clipPath": w, "maskImage": w, "maskMode": w, "maskRepeat": w, "maskPosition": w, "maskClip": w, "maskOrigin": w, "maskSize": w, "maskComposite": w, "mask": w, "maskBorderSource": w, "maskBorderMode": w, "maskBorderSlice": w, "maskBorderWidth": w, "maskBorderOutset": w, "maskBorderRepeat": w, "maskBorder": w, "maskType": w, "textDecorationStyle": w, "textDecorationSkip": w, "textDecorationLine": w, "textDecorationColor": w, "filter": w, "fontFeatureSettings": w, "breakAfter": wmms, "breakBefore": wmms, "breakInside": wmms, "columnCount": wm, "columnFill": wm, "columnGap": wm, "columnRule": wm, "columnRuleColor": wm, "columnRuleStyle": wm, "columnRuleWidth": wm, "columns": wm, "columnSpan": wm, "columnWidth": wm, "writingMode": wms, "flex": w, "flexBasis": w, "flexDirection": w, "flexGrow": w, "flexFlow": w, "flexShrink": w, "flexWrap": w, "alignContent": w, "alignItems": w, "alignSelf": w, "justifyContent": w, "order": w, "transform": w, "transformOrigin": w, "transformOriginX": w, "transformOriginY": w, "backfaceVisibility": w, "perspective": w, "perspectiveOrigin": w, "transformStyle": w, "transformOriginZ": w, "animation": w, "animationDelay": w, "animationDirection": w, "animationFillMode": w, "animationDuration": w, "animationIterationCount": w, "animationName": w, "animationPlayState": w, "animationTimingFunction": w, "backdropFilter": w, "fontKerning": w, "scrollSnapType": wms, "scrollSnapPointsX": wms, "scrollSnapPointsY": wms, "scrollSnapDestination": wms, "scrollSnapCoordinate": wms, "shapeImageThreshold": w, "shapeImageMargin": w, "shapeImageOutside": w, "hyphens": wmms, "flowInto": wms, "flowFrom": wms, "regionFragment": wms, "textAlignLast": m, "tabSize": m, "wrapFlow": ms, "wrapThrough": ms, "wrapMargin": ms, "gridTemplateColumns": ms, "gridTemplateRows": ms, "gridTemplateAreas": ms, "gridTemplate": ms, "gridAutoColumns": ms, "gridAutoRows": ms, "gridAutoFlow": ms, "grid": ms, "gridRowStart": ms, "gridColumnStart": ms, "gridRowEnd": ms, "gridRow": ms, "gridColumn": ms, "gridColumnEnd": ms, "gridColumnGap": ms, "gridRowGap": ms, "gridArea": ms, "gridGap": ms, "textSizeAdjust": wms, "borderImage": w, "borderImageOutset": w, "borderImageRepeat": w, "borderImageSlice": w, "borderImageSource": w, "borderImageWidth": w, "transitionDelay": w, "transitionDuration": w, "transitionProperty": w, "transitionTimingFunction": w }
};
module.exports = exports["default"];

View File

@@ -0,0 +1,22 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = addNewValuesOnly;
function addIfNew(list, value) {
if (list.indexOf(value) === -1) {
list.push(value);
}
}
function addNewValuesOnly(list, values) {
if (Array.isArray(values)) {
for (var i = 0, len = values.length; i < len; ++i) {
addIfNew(list, values[i]);
}
} else {
addIfNew(list, values);
}
}
module.exports = exports["default"];

View File

@@ -0,0 +1,10 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = capitalizeString;
function capitalizeString(str) {
return str.charAt(0).toUpperCase() + str.slice(1);
}
module.exports = exports["default"];

View File

@@ -0,0 +1,131 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = getBrowserInformation;
var _bowser = require('bowser');
var _bowser2 = _interopRequireDefault(_bowser);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var prefixByBrowser = {
chrome: 'Webkit',
safari: 'Webkit',
ios: 'Webkit',
android: 'Webkit',
phantom: 'Webkit',
opera: 'Webkit',
webos: 'Webkit',
blackberry: 'Webkit',
bada: 'Webkit',
tizen: 'Webkit',
chromium: 'Webkit',
vivaldi: 'Webkit',
firefox: 'Moz',
seamoney: 'Moz',
sailfish: 'Moz',
msie: 'ms',
msedge: 'ms'
};
var browserByCanIuseAlias = {
chrome: 'chrome',
chromium: 'chrome',
safari: 'safari',
firfox: 'firefox',
msedge: 'edge',
opera: 'opera',
vivaldi: 'opera',
msie: 'ie'
};
function getBrowserName(browserInfo) {
if (browserInfo.firefox) {
return 'firefox';
}
if (browserInfo.mobile || browserInfo.tablet) {
if (browserInfo.ios) {
return 'ios_saf';
} else if (browserInfo.android) {
return 'android';
} else if (browserInfo.opera) {
return 'op_mini';
}
}
for (var browser in browserByCanIuseAlias) {
if (browserInfo.hasOwnProperty(browser)) {
return browserByCanIuseAlias[browser];
}
}
}
/**
* Uses bowser to get default browser browserInformation such as version and name
* Evaluates bowser browserInfo and adds vendorPrefix browserInformation
* @param {string} userAgent - userAgent that gets evaluated
*/
function getBrowserInformation(userAgent) {
var browserInfo = _bowser2.default._detect(userAgent);
if (browserInfo.yandexbrowser) {
browserInfo = _bowser2.default._detect(userAgent.replace(/YaBrowser\/[0-9.]*/, ''));
}
for (var browser in prefixByBrowser) {
if (browserInfo.hasOwnProperty(browser)) {
var prefix = prefixByBrowser[browser];
browserInfo.jsPrefix = prefix;
browserInfo.cssPrefix = '-' + prefix.toLowerCase() + '-';
break;
}
}
browserInfo.browserName = getBrowserName(browserInfo);
// For cordova IOS 8 the version is missing, set truncated osversion to prevent NaN
if (browserInfo.version) {
browserInfo.browserVersion = parseFloat(browserInfo.version);
} else {
browserInfo.browserVersion = parseInt(parseFloat(browserInfo.osversion), 10);
}
browserInfo.osVersion = parseFloat(browserInfo.osversion);
// iOS forces all browsers to use Safari under the hood
// as the Safari version seems to match the iOS version
// we just explicitely use the osversion instead
// https://github.com/rofrischmann/inline-style-prefixer/issues/72
if (browserInfo.browserName === 'ios_saf' && browserInfo.browserVersion > browserInfo.osVersion) {
browserInfo.browserVersion = browserInfo.osVersion;
}
// seperate native android chrome
// https://github.com/rofrischmann/inline-style-prefixer/issues/45
if (browserInfo.browserName === 'android' && browserInfo.chrome && browserInfo.browserVersion > 37) {
browserInfo.browserName = 'and_chr';
}
// For android < 4.4 we want to check the osversion
// not the chrome version, see issue #26
// https://github.com/rofrischmann/inline-style-prefixer/issues/26
if (browserInfo.browserName === 'android' && browserInfo.osVersion < 5) {
browserInfo.browserVersion = browserInfo.osVersion;
}
// Samsung browser are basically build on Chrome > 44
// https://github.com/rofrischmann/inline-style-prefixer/issues/102
if (browserInfo.browserName === 'android' && browserInfo.samsungBrowser) {
browserInfo.browserName = 'and_chr';
browserInfo.browserVersion = 44;
}
return browserInfo;
}
module.exports = exports['default'];

View File

@@ -0,0 +1,15 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = getPrefixedKeyframes;
function getPrefixedKeyframes(browserName, browserVersion, cssPrefix) {
var prefixedKeyframes = 'keyframes';
if (browserName === 'chrome' && browserVersion < 43 || (browserName === 'safari' || browserName === 'ios_saf') && browserVersion < 9 || browserName === 'opera' && browserVersion < 30 || browserName === 'android' && browserVersion <= 4.4 || browserName === 'and_uc') {
return cssPrefix + prefixedKeyframes;
}
return prefixedKeyframes;
}
module.exports = exports['default'];

View File

@@ -0,0 +1,13 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = getPrefixedValue;
function getPrefixedValue(prefixedValue, value, keepUnprefixed) {
if (keepUnprefixed) {
return [prefixedValue, value];
}
return prefixedValue;
}
module.exports = exports["default"];

View File

@@ -0,0 +1,10 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = isObject;
function isObject(value) {
return value instanceof Object && !Array.isArray(value);
}
module.exports = exports["default"];

View File

@@ -0,0 +1,22 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = prefixProperty;
var _capitalizeString = require('./capitalizeString');
var _capitalizeString2 = _interopRequireDefault(_capitalizeString);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function prefixProperty(prefixProperties, property, style) {
if (prefixProperties.hasOwnProperty(property)) {
var requiredPrefixes = prefixProperties[property];
for (var i = 0, len = requiredPrefixes.length; i < len; ++i) {
style[requiredPrefixes[i] + (0, _capitalizeString2.default)(property)] = style[property];
}
}
}
module.exports = exports['default'];

View File

@@ -0,0 +1,18 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = prefixValue;
function prefixValue(plugins, property, value, style, metaData) {
for (var i = 0, len = plugins.length; i < len; ++i) {
var processedValue = plugins[i](property, value, style, metaData);
// we can stop processing if a value is returned
// as all plugin criteria are unique
if (processedValue) {
return processedValue;
}
}
}
module.exports = exports["default"];