UNPKG

9.68 kBJavaScriptView Raw
1(function webpackUniversalModuleDefinition(root, factory) {
2 if(typeof exports === 'object' && typeof module === 'object')
3 module.exports = factory();
4 else if(typeof define === 'function' && define.amd)
5 define([], factory);
6 else if(typeof exports === 'object')
7 exports["jssVendorPrefixer"] = factory();
8 else
9 root["jssVendorPrefixer"] = factory();
10})(this, function() {
11return /******/ (function(modules) { // webpackBootstrap
12/******/ // The module cache
13/******/ var installedModules = {};
14
15/******/ // The require function
16/******/ function __webpack_require__(moduleId) {
17
18/******/ // Check if module is in cache
19/******/ if(installedModules[moduleId])
20/******/ return installedModules[moduleId].exports;
21
22/******/ // Create a new module (and put it into the cache)
23/******/ var module = installedModules[moduleId] = {
24/******/ exports: {},
25/******/ id: moduleId,
26/******/ loaded: false
27/******/ };
28
29/******/ // Execute the module function
30/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
31
32/******/ // Flag the module as loaded
33/******/ module.loaded = true;
34
35/******/ // Return the exports of the module
36/******/ return module.exports;
37/******/ }
38
39
40/******/ // expose the modules object (__webpack_modules__)
41/******/ __webpack_require__.m = modules;
42
43/******/ // expose the module cache
44/******/ __webpack_require__.c = installedModules;
45
46/******/ // __webpack_public_path__
47/******/ __webpack_require__.p = "";
48
49/******/ // Load entry module and return exports
50/******/ return __webpack_require__(0);
51/******/ })
52/************************************************************************/
53/******/ ([
54/* 0 */
55/***/ function(module, exports, __webpack_require__) {
56
57 'use strict';
58
59 Object.defineProperty(exports, "__esModule", {
60 value: true
61 });
62 exports.default = jssVendorPrefixer;
63
64 var _cssVendor = __webpack_require__(1);
65
66 var vendor = _interopRequireWildcard(_cssVendor);
67
68 function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
69
70 /**
71 * Add vendor prefix to a property name when needed.
72 *
73 * @param {Rule} rule
74 * @api public
75 */
76 function jssVendorPrefixer() {
77 return function (rule) {
78 if (rule.type === 'keyframe') {
79 rule.selector = '@' + vendor.prefix.css + rule.selector.substr(1);
80 return;
81 }
82
83 if (rule.type !== 'regular') return;
84
85 for (var prop in rule.style) {
86 var value = rule.style[prop];
87
88 var changeProp = false;
89 var supportedProp = vendor.supportedProperty(prop);
90 if (supportedProp && supportedProp !== prop) changeProp = true;
91
92 var changeValue = false;
93 var supportedValue = vendor.supportedValue(supportedProp, value);
94 if (supportedValue && supportedValue !== value) changeValue = true;
95
96 if (changeProp || changeValue) {
97 if (changeProp) delete rule.style[prop];
98 rule.style[supportedProp || prop] = supportedValue || value;
99 }
100 }
101 };
102 }
103
104/***/ },
105/* 1 */
106/***/ function(module, exports, __webpack_require__) {
107
108 'use strict';
109
110 Object.defineProperty(exports, "__esModule", {
111 value: true
112 });
113 exports.supportedValue = exports.supportedProperty = exports.prefix = undefined;
114
115 var _prefix = __webpack_require__(2);
116
117 var _prefix2 = _interopRequireDefault(_prefix);
118
119 var _supportedProperty = __webpack_require__(3);
120
121 var _supportedProperty2 = _interopRequireDefault(_supportedProperty);
122
123 var _supportedValue = __webpack_require__(5);
124
125 var _supportedValue2 = _interopRequireDefault(_supportedValue);
126
127 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
128
129 exports.default = {
130 prefix: _prefix2.default,
131 supportedProperty: _supportedProperty2.default,
132 supportedValue: _supportedValue2.default
133 }; /**
134 * CSS Vendor prefix detection and property feature testing.
135 *
136 * @copyright Oleg Slobodskoi 2015
137 * @website https://github.com/jsstyles/css-vendor
138 * @license MIT
139 */
140
141 exports.prefix = _prefix2.default;
142 exports.supportedProperty = _supportedProperty2.default;
143 exports.supportedValue = _supportedValue2.default;
144
145/***/ },
146/* 2 */
147/***/ function(module, exports) {
148
149 'use strict';
150
151 Object.defineProperty(exports, "__esModule", {
152 value: true
153 });
154 /**
155 * Export javascript style and css style vendor prefixes.
156 * Based on "transform" support test.
157 */
158
159 var js = '';
160 var css = '';
161
162 // We should not do anything if required serverside.
163 if (typeof document != 'undefined') {
164 var jsCssMap = {
165 Webkit: '-webkit-',
166 Moz: '-moz-',
167 // IE did it wrong again ...
168 ms: '-ms-',
169 O: '-o-'
170 };
171 var style = document.createElement('p').style;
172 var testProp = 'Transform';
173
174 for (var key in jsCssMap) {
175 if (key + testProp in style) {
176 js = key;
177 css = jsCssMap[key];
178 break;
179 }
180 }
181 }
182
183 /**
184 * Vendor prefix string for the current browser.
185 *
186 * @type {{js: String, css: String}}
187 * @api public
188 */
189 exports.default = { js: js, css: css };
190
191/***/ },
192/* 3 */
193/***/ function(module, exports, __webpack_require__) {
194
195 'use strict';
196
197 Object.defineProperty(exports, "__esModule", {
198 value: true
199 });
200 exports.default = supportedProperty;
201
202 var _prefix = __webpack_require__(2);
203
204 var _prefix2 = _interopRequireDefault(_prefix);
205
206 var _camelize = __webpack_require__(4);
207
208 var _camelize2 = _interopRequireDefault(_camelize);
209
210 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
211
212 var el = void 0;
213 var cache = {};
214
215 // For server-side rendering.
216 if (typeof document != 'undefined') {
217 el = document.createElement('p');
218
219 /**
220 * We test every property on vendor prefix requirement.
221 * Once tested, result is cached. It gives us up to 70% perf boost.
222 * http://jsperf.com/element-style-object-access-vs-plain-object
223 *
224 * Prefill cache with known css properties to reduce amount of
225 * properties we need to feature test at runtime.
226 * http://davidwalsh.name/vendor-prefix
227 */
228 var computed = window.getComputedStyle(document.documentElement, '');
229 for (var key in computed) {
230 cache[computed[key]] = computed[key];
231 }
232 }
233
234 /**
235 * Test if a property is supported, returns supported property with vendor
236 * prefix if required. Returns `false` if not supported.
237 *
238 * @param {String} prop dash separated
239 * @return {String|Boolean}
240 * @api public
241 */
242 function supportedProperty(prop) {
243 // For server-side rendering.
244 if (!el) return prop;
245
246 // We have not tested this prop yet, lets do the test.
247 if (cache[prop] != null) return cache[prop];
248
249 // Camelization is required because we can't test using
250 // css syntax for e.g. in FF.
251 // Test if property is supported as it is.
252 if ((0, _camelize2.default)(prop) in el.style) {
253 cache[prop] = prop;
254 }
255 // Test if property is supported with vendor prefix.
256 else if (_prefix2.default.js + (0, _camelize2.default)('-' + prop) in el.style) {
257 cache[prop] = _prefix2.default.css + prop;
258 } else {
259 cache[prop] = false;
260 }
261
262 return cache[prop];
263 }
264
265/***/ },
266/* 4 */
267/***/ function(module, exports) {
268
269 'use strict';
270
271 Object.defineProperty(exports, "__esModule", {
272 value: true
273 });
274 exports.default = camelize;
275 var regExp = /[-\s]+(.)?/g;
276
277 /**
278 * Convert dash separated strings to camel cased.
279 *
280 * @param {String} str
281 * @return {String}
282 */
283 function camelize(str) {
284 return str.replace(regExp, toUpper);
285 }
286
287 function toUpper(match, c) {
288 return c ? c.toUpperCase() : '';
289 }
290
291/***/ },
292/* 5 */
293/***/ function(module, exports, __webpack_require__) {
294
295 'use strict';
296
297 Object.defineProperty(exports, "__esModule", {
298 value: true
299 });
300 exports.default = supportedValue;
301
302 var _prefix = __webpack_require__(2);
303
304 var _prefix2 = _interopRequireDefault(_prefix);
305
306 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
307
308 var cache = {};
309 var el = void 0;
310
311 // For server-side rendering.
312 if (typeof document != 'undefined') el = document.createElement('p');
313
314 /**
315 * Returns prefixed value if needed. Returns `false` if value is not supported.
316 *
317 * @param {String} property
318 * @param {String} value
319 * @return {String|Boolean}
320 * @api public
321 */
322 function supportedValue(property, value) {
323 // For server-side rendering.
324 if (!el) return value;
325
326 // It is a string or a number as a string like '1'.
327 // We want only prefixable values here.
328 if (typeof value !== 'string' || !isNaN(parseInt(value, 10))) return value;
329
330 var cacheKey = property + value;
331
332 if (cache[cacheKey] != null) return cache[cacheKey];
333
334 // IE can even throw an error in some cases, for e.g. style.content = 'bar'
335 try {
336 // Test value as it is.
337 el.style[property] = value;
338 } catch (err) {
339 cache[cacheKey] = false;
340 return false;
341 }
342
343 // Value is supported as it is.
344 if (el.style[property] === value) {
345 cache[cacheKey] = value;
346 } else {
347 // Test value with vendor prefix.
348 value = _prefix2.default.css + value;
349
350 // Hardcode test to convert "flex" to "-ms-flexbox" for IE10.
351 if (value === '-ms-flex') value = '-ms-flexbox';
352
353 el.style[property] = value;
354
355 // Value is supported with vendor prefix.
356 if (el.style[property] === value) cache[cacheKey] = value;
357 }
358
359 if (!cache[cacheKey]) cache[cacheKey] = false;
360
361 return cache[cacheKey];
362 }
363
364/***/ }
365/******/ ])
366});
367;
\No newline at end of file