UNPKG

twreporter-react

Version:

React-Redux site for The Reporter Foundation in Taiwan

1,090 lines (911 loc) 56.2 kB
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Prefixer = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var _pluginsCalc = require('./plugins/calc'); var _pluginsCalc2 = _interopRequireDefault(_pluginsCalc); var _pluginsCursor = require('./plugins/cursor'); var _pluginsCursor2 = _interopRequireDefault(_pluginsCursor); var _pluginsFlex = require('./plugins/flex'); var _pluginsFlex2 = _interopRequireDefault(_pluginsFlex); var _pluginsSizing = require('./plugins/sizing'); var _pluginsSizing2 = _interopRequireDefault(_pluginsSizing); var _pluginsGradient = require('./plugins/gradient'); var _pluginsGradient2 = _interopRequireDefault(_pluginsGradient); var _pluginsTransition = require('./plugins/transition'); var _pluginsTransition2 = _interopRequireDefault(_pluginsTransition); // special flexbox specifications var _pluginsFlexboxIE = require('./plugins/flexboxIE'); var _pluginsFlexboxIE2 = _interopRequireDefault(_pluginsFlexboxIE); var _pluginsFlexboxOld = require('./plugins/flexboxOld'); var _pluginsFlexboxOld2 = _interopRequireDefault(_pluginsFlexboxOld); exports['default'] = [_pluginsCalc2['default'], _pluginsCursor2['default'], _pluginsSizing2['default'], _pluginsGradient2['default'], _pluginsTransition2['default'], _pluginsFlexboxIE2['default'], _pluginsFlexboxOld2['default'], // this must be run AFTER the flexbox specs _pluginsFlex2['default']]; module.exports = exports['default']; },{"./plugins/calc":4,"./plugins/cursor":5,"./plugins/flex":6,"./plugins/flexboxIE":7,"./plugins/flexboxOld":8,"./plugins/gradient":9,"./plugins/sizing":10,"./plugins/transition":11}],2:[function(require,module,exports){ '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; }; 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; }; })(); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } var _utilsGetBrowserInformation = require('./utils/getBrowserInformation'); var _utilsGetBrowserInformation2 = _interopRequireDefault(_utilsGetBrowserInformation); var _utilsGetPrefixedKeyframes = require('./utils/getPrefixedKeyframes'); var _utilsGetPrefixedKeyframes2 = _interopRequireDefault(_utilsGetPrefixedKeyframes); var _utilsCapitalizeString = require('./utils/capitalizeString'); var _utilsCapitalizeString2 = _interopRequireDefault(_utilsCapitalizeString); var _utilsAssign = require('./utils/assign'); var _utilsAssign2 = _interopRequireDefault(_utilsAssign); var _utilsWarn = require('./utils/warn'); var _utilsWarn2 = _interopRequireDefault(_utilsWarn); var _caniuseData = require('./caniuseData'); var _caniuseData2 = _interopRequireDefault(_caniuseData); var _Plugins = require('./Plugins'); var _Plugins2 = _interopRequireDefault(_Plugins); var browserWhitelist = ['phantom']; var Prefixer = (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 _this = this; 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; this._browserInfo = (0, _utilsGetBrowserInformation2['default'])(this._userAgent); // Checks if the userAgent was resolved correctly if (this._browserInfo && this._browserInfo.prefix) { // set additional prefix information this.cssPrefix = this._browserInfo.prefix.css; this.jsPrefix = this._browserInfo.prefix.inline; this.prefixedKeyframes = (0, _utilsGetPrefixedKeyframes2['default'])(this._browserInfo); } else { this._hasPropsRequiringPrefix = false; (0, _utilsWarn2['default'])('Either the global navigator was undefined or an invalid userAgent was provided.', 'Using a valid userAgent? Please let us know and create an issue at https://github.com/rofrischmann/inline-style-prefixer/issues'); return false; } var data = this._browserInfo.browser && _caniuseData2['default'][this._browserInfo.browser]; if (data) { this._requiresPrefix = Object.keys(data).filter(function (key) { return data[key] >= _this._browserInfo.version; }).reduce(function (result, name) { return _extends({}, result, _defineProperty({}, name, true)); }, {}); this._hasPropsRequiringPrefix = Object.keys(this._requiresPrefix).length > 0; } else { // check for whitelisted browsers browserWhitelist.forEach(function (browser) { if (_this._browserInfo[browser]) { _this._isWhitelisted = true; } }); this._hasPropsRequiringPrefix = false; // Do not throw a warning if whitelisted if (this._isWhitelisted) { return true; } (0, _utilsWarn2['default'])('Your userAgent seems to be not supported by inline-style-prefixer. Feel free to open an issue.'); return false; } } /** * Returns a prefixed version of the style object * @param {Object} styles - Style object that gets prefixed properties added * @returns {Object} - Style object with prefixed properties and values */ _createClass(Prefixer, [{ key: 'prefix', value: function prefix(styles) { var _this2 = this; // only add prefixes if needed if (!this._hasPropsRequiringPrefix) { return styles; } styles = (0, _utilsAssign2['default'])({}, styles); Object.keys(styles).forEach(function (property) { var value = styles[property]; if (value instanceof Object) { // recurse through nested style objects styles[property] = _this2.prefix(value); } else { // add prefixes if needed if (_this2._requiresPrefix[property]) { styles[_this2.jsPrefix + (0, _utilsCapitalizeString2['default'])(property)] = value; if (!_this2._keepUnprefixed) { delete styles[property]; } } // resolve plugins _Plugins2['default'].forEach(function (plugin) { // generates a new plugin interface with current data var resolvedStyles = plugin({ property: property, value: value, styles: styles, browserInfo: _this2._browserInfo, prefix: { js: _this2.jsPrefix, css: _this2.cssPrefix, keyframes: _this2.prefixedKeyframes }, keepUnprefixed: _this2._keepUnprefixed, requiresPrefix: _this2._requiresPrefix, forceRun: false }); (0, _utilsAssign2['default'])(styles, resolvedStyles); }); } }); return styles; } /** * 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) { var prefixes = {}; var browserInfo = (0, _utilsGetBrowserInformation2['default'])('*'); browserInfo.browsers.forEach(function (browser) { var data = _caniuseData2['default'][browser]; if (data) { (0, _utilsAssign2['default'])(prefixes, data); } }); // there should always be at least one prefixed style, but just incase if (!Object.keys(prefixes).length > 0) { return styles; } styles = (0, _utilsAssign2['default'])({}, styles); Object.keys(styles).forEach(function (property) { var value = styles[property]; if (value instanceof Object) { // recurse through nested style objects styles[property] = Prefixer.prefixAll(value); } else { var browsers = Object.keys(browserInfo.prefixes); browsers.forEach(function (browser) { var style = browserInfo.prefixes[browser]; // add prefixes if needed if (prefixes[property]) { styles[style.inline + (0, _utilsCapitalizeString2['default'])(property)] = value; } // resolve plugins for each browser _Plugins2['default'].forEach(function (plugin) { var resolvedStyles = plugin({ property: property, value: value, styles: styles, browserInfo: { name: browser, prefix: style, version: 0 // assume lowest }, prefix: {}, keepUnprefixed: true, requiresPrefix: prefixes, forceRun: true }); (0, _utilsAssign2['default'])(styles, resolvedStyles); }); }); } }); return styles; } }]); return Prefixer; })(); exports['default'] = Prefixer; module.exports = exports['default']; },{"./Plugins":1,"./caniuseData":3,"./utils/assign":12,"./utils/capitalizeString":14,"./utils/getBrowserInformation":15,"./utils/getPrefixedKeyframes":16,"./utils/warn":17}],3:[function(require,module,exports){ var caniuseData = {"chrome":{"transform":35,"transformOrigin":35,"transformOriginX":35,"transformOriginY":35,"backfaceVisibility":35,"perspective":35,"perspectiveOrigin":35,"transformStyle":35,"transformOriginZ":35,"animation":42,"animationDelay":42,"animationDirection":42,"animationFillMode":42,"animationDuration":42,"animationIterationCount":42,"animationName":42,"animationPlayState":42,"animationTimingFunction":42,"appearance":50,"userSelect":50,"fontKerning":32,"textEmphasisPosition":50,"textEmphasis":50,"textEmphasisStyle":50,"textEmphasisColor":50,"boxDecorationBreak":50,"clipPath":50,"maskImage":50,"maskMode":50,"maskRepeat":50,"maskPosition":50,"maskClip":50,"maskOrigin":50,"maskSize":50,"maskComposite":50,"mask":50,"maskBorderSource":50,"maskBorderMode":50,"maskBorderSlice":50,"maskBorderWidth":50,"maskBorderOutset":50,"maskBorderRepeat":50,"maskBorder":50,"maskType":50,"textDecorationStyle":50,"textDecorationSkip":50,"textDecorationLine":50,"textDecorationColor":50,"filter":50,"fontFeatureSettings":47,"breakAfter":50,"breakBefore":50,"breakInside":50,"columnCount":50,"columnFill":50,"columnGap":50,"columnRule":50,"columnRuleColor":50,"columnRuleStyle":50,"columnRuleWidth":50,"columns":50,"columnSpan":50,"columnWidth":50},"safari":{"flex":8,"flexBasis":8,"flexDirection":8,"flexGrow":8,"flexFlow":8,"flexShrink":8,"flexWrap":8,"alignContent":8,"alignItems":8,"alignSelf":8,"justifyContent":8,"order":8,"transition":6,"transitionDelay":6,"transitionDuration":6,"transitionProperty":6,"transitionTimingFunction":6,"transform":8,"transformOrigin":8,"transformOriginX":8,"transformOriginY":8,"backfaceVisibility":8,"perspective":8,"perspectiveOrigin":8,"transformStyle":8,"transformOriginZ":8,"animation":8,"animationDelay":8,"animationDirection":8,"animationFillMode":8,"animationDuration":8,"animationIterationCount":8,"animationName":8,"animationPlayState":8,"animationTimingFunction":8,"appearance":9.1,"userSelect":9.1,"backdropFilter":9.1,"fontKerning":9.1,"scrollSnapType":9.1,"scrollSnapPointsX":9.1,"scrollSnapPointsY":9.1,"scrollSnapDestination":9.1,"scrollSnapCoordinate":9.1,"textEmphasisPosition":7,"textEmphasis":7,"textEmphasisStyle":7,"textEmphasisColor":7,"boxDecorationBreak":9.1,"clipPath":9.1,"maskImage":9.1,"maskMode":9.1,"maskRepeat":9.1,"maskPosition":9.1,"maskClip":9.1,"maskOrigin":9.1,"maskSize":9.1,"maskComposite":9.1,"mask":9.1,"maskBorderSource":9.1,"maskBorderMode":9.1,"maskBorderSlice":9.1,"maskBorderWidth":9.1,"maskBorderOutset":9.1,"maskBorderRepeat":9.1,"maskBorder":9.1,"maskType":9.1,"textDecorationStyle":9.1,"textDecorationSkip":9.1,"textDecorationLine":9.1,"textDecorationColor":9.1,"shapeImageThreshold":9.1,"shapeImageMargin":9.1,"shapeImageOutside":9.1,"filter":9,"hyphens":9.1,"flowInto":9.1,"flowFrom":9.1,"breakBefore":8,"breakAfter":8,"breakInside":8,"regionFragment":9.1,"columnCount":8,"columnFill":8,"columnGap":8,"columnRule":8,"columnRuleColor":8,"columnRuleStyle":8,"columnRuleWidth":8,"columns":8,"columnSpan":8,"columnWidth":8},"firefox":{"appearance":46,"userSelect":46,"boxSizing":28,"textAlignLast":46,"textDecorationStyle":35,"textDecorationSkip":35,"textDecorationLine":35,"textDecorationColor":35,"tabSize":46,"hyphens":42,"fontFeatureSettings":33,"breakAfter":46,"breakBefore":46,"breakInside":46,"columnCount":46,"columnFill":46,"columnGap":46,"columnRule":46,"columnRuleColor":46,"columnRuleStyle":46,"columnRuleWidth":46,"columns":46,"columnSpan":46,"columnWidth":46},"opera":{"flex":16,"flexBasis":16,"flexDirection":16,"flexGrow":16,"flexFlow":16,"flexShrink":16,"flexWrap":16,"alignContent":16,"alignItems":16,"alignSelf":16,"justifyContent":16,"order":16,"transform":22,"transformOrigin":22,"transformOriginX":22,"transformOriginY":22,"backfaceVisibility":22,"perspective":22,"perspectiveOrigin":22,"transformStyle":22,"transformOriginZ":22,"animation":29,"animationDelay":29,"animationDirection":29,"animationFillMode":29,"animationDuration":29,"animationIterationCount":29,"animationName":29,"animationPlayState":29,"animationTimingFunction":29,"appearance":36,"userSelect":36,"fontKerning":19,"textEmphasisPosition":36,"textEmphasis":36,"textEmphasisStyle":36,"textEmphasisColor":36,"boxDecorationBreak":36,"clipPath":36,"maskImage":36,"maskMode":36,"maskRepeat":36,"maskPosition":36,"maskClip":36,"maskOrigin":36,"maskSize":36,"maskComposite":36,"mask":36,"maskBorderSource":36,"maskBorderMode":36,"maskBorderSlice":36,"maskBorderWidth":36,"maskBorderOutset":36,"maskBorderRepeat":36,"maskBorder":36,"maskType":36,"filter":36,"fontFeatureSettings":36,"breakAfter":36,"breakBefore":36,"breakInside":36,"columnCount":36,"columnFill":36,"columnGap":36,"columnRule":36,"columnRuleColor":36,"columnRuleStyle":36,"columnRuleWidth":36,"columns":36,"columnSpan":36,"columnWidth":36},"ie":{"gridArea":11,"gridGap":11,"gridColumnStart":11,"userSelect":11,"grid":11,"breakInside":11,"hyphens":11,"gridTemplateAreas":11,"breakAfter":11,"scrollSnapCoordinate":11,"gridRowStart":11,"gridAutoFlow":11,"scrollSnapDestination":11,"gridTemplate":11,"gridTemplateColumns":11,"transformOrigin":9,"gridAutoRows":11,"gridColumnEnd":11,"transformOriginY":9,"scrollSnapPointsY":11,"breakBefore":11,"gridRowGap":11,"scrollSnapPointsX":11,"regionFragment":11,"flexWrap":10,"wrapFlow":11,"gridRowEnd":11,"flex":10,"flexDirection":10,"flowInto":11,"touchAction":10,"gridColumn":11,"transform":9,"gridTemplateRows":11,"flexFlow":10,"transformOriginX":9,"flowFrom":11,"scrollSnapType":11,"wrapMargin":11,"gridColumnGap":11,"gridRow":11,"wrapThrough":11,"gridAutoColumns":11,"textSizeAdjust":11},"edge":{"userSelect":14,"wrapFlow":14,"wrapThrough":14,"wrapMargin":14,"scrollSnapType":14,"scrollSnapPointsX":14,"scrollSnapPointsY":14,"scrollSnapDestination":14,"scrollSnapCoordinate":14,"hyphens":14,"flowInto":14,"flowFrom":14,"breakBefore":14,"breakAfter":14,"breakInside":14,"regionFragment":14,"gridTemplateColumns":14,"gridTemplateRows":14,"gridTemplateAreas":14,"gridTemplate":14,"gridAutoColumns":14,"gridAutoRows":14,"gridAutoFlow":14,"grid":14,"gridRowStart":14,"gridColumnStart":14,"gridRowEnd":14,"gridRow":14,"gridColumn":14,"gridColumnEnd":14,"gridColumnGap":14,"gridRowGap":14,"gridArea":14,"gridGap":14},"ios_saf":{"flex":8.1,"flexBasis":8.1,"flexDirection":8.1,"flexGrow":8.1,"flexFlow":8.1,"flexShrink":8.1,"flexWrap":8.1,"alignContent":8.1,"alignItems":8.1,"alignSelf":8.1,"justifyContent":8.1,"order":8.1,"transition":6,"transitionDelay":6,"transitionDuration":6,"transitionProperty":6,"transitionTimingFunction":6,"transform":8.1,"transformOrigin":8.1,"transformOriginX":8.1,"transformOriginY":8.1,"backfaceVisibility":8.1,"perspective":8.1,"perspectiveOrigin":8.1,"transformStyle":8.1,"transformOriginZ":8.1,"animation":8.1,"animationDelay":8.1,"animationDirection":8.1,"animationFillMode":8.1,"animationDuration":8.1,"animationIterationCount":8.1,"animationName":8.1,"animationPlayState":8.1,"animationTimingFunction":8.1,"appearance":9.3,"userSelect":9.3,"backdropFilter":9.3,"fontKerning":9.3,"scrollSnapType":9.3,"scrollSnapPointsX":9.3,"scrollSnapPointsY":9.3,"scrollSnapDestination":9.3,"scrollSnapCoordinate":9.3,"boxDecorationBreak":9.3,"clipPath":9.3,"maskImage":9.3,"maskMode":9.3,"maskRepeat":9.3,"maskPosition":9.3,"maskClip":9.3,"maskOrigin":9.3,"maskSize":9.3,"maskComposite":9.3,"mask":9.3,"maskBorderSource":9.3,"maskBorderMode":9.3,"maskBorderSlice":9.3,"maskBorderWidth":9.3,"maskBorderOutset":9.3,"maskBorderRepeat":9.3,"maskBorder":9.3,"maskType":9.3,"textSizeAdjust":9.3,"textDecorationStyle":9.3,"textDecorationSkip":9.3,"textDecorationLine":9.3,"textDecorationColor":9.3,"shapeImageThreshold":9.3,"shapeImageMargin":9.3,"shapeImageOutside":9.3,"filter":9,"hyphens":9.3,"flowInto":9.3,"flowFrom":9.3,"breakBefore":8.1,"breakAfter":8.1,"breakInside":8.1,"regionFragment":9.3,"columnCount":8.1,"columnFill":8.1,"columnGap":8.1,"columnRule":8.1,"columnRuleColor":8.1,"columnRuleStyle":8.1,"columnRuleWidth":8.1,"columns":8.1,"columnSpan":8.1,"columnWidth":8.1},"android":{"borderImage":4.2,"borderImageOutset":4.2,"borderImageRepeat":4.2,"borderImageSlice":4.2,"borderImageSource":4.2,"borderImageWidth":4.2,"flex":4.2,"flexBasis":4.2,"flexDirection":4.2,"flexGrow":4.2,"flexFlow":4.2,"flexShrink":4.2,"flexWrap":4.2,"alignContent":4.2,"alignItems":4.2,"alignSelf":4.2,"justifyContent":4.2,"order":4.2,"transition":4.2,"transitionDelay":4.2,"transitionDuration":4.2,"transitionProperty":4.2,"transitionTimingFunction":4.2,"transform":4.4,"transformOrigin":4.4,"transformOriginX":4.4,"transformOriginY":4.4,"backfaceVisibility":4.4,"perspective":4.4,"perspectiveOrigin":4.4,"transformStyle":4.4,"transformOriginZ":4.4,"animation":4.4,"animationDelay":4.4,"animationDirection":4.4,"animationFillMode":4.4,"animationDuration":4.4,"animationIterationCount":4.4,"animationName":4.4,"animationPlayState":4.4,"animationTimingFunction":4.4,"appearance":46,"userSelect":46,"fontKerning":4.4,"textEmphasisPosition":46,"textEmphasis":46,"textEmphasisStyle":46,"textEmphasisColor":46,"boxDecorationBreak":46,"clipPath":46,"maskImage":46,"maskMode":46,"maskRepeat":46,"maskPosition":46,"maskClip":46,"maskOrigin":46,"maskSize":46,"maskComposite":46,"mask":46,"maskBorderSource":46,"maskBorderMode":46,"maskBorderSlice":46,"maskBorderWidth":46,"maskBorderOutset":46,"maskBorderRepeat":46,"maskBorder":46,"maskType":46,"filter":46,"fontFeatureSettings":46,"breakAfter":46,"breakBefore":46,"breakInside":46,"columnCount":46,"columnFill":46,"columnGap":46,"columnRule":46,"columnRuleColor":46,"columnRuleStyle":46,"columnRuleWidth":46,"columns":46,"columnSpan":46,"columnWidth":46},"and_chr":{"appearance":47,"userSelect":47,"textEmphasisPosition":47,"textEmphasis":47,"textEmphasisStyle":47,"textEmphasisColor":47,"boxDecorationBreak":47,"clipPath":47,"maskImage":47,"maskMode":47,"maskRepeat":47,"maskPosition":47,"maskClip":47,"maskOrigin":47,"maskSize":47,"maskComposite":47,"mask":47,"maskBorderSource":47,"maskBorderMode":47,"maskBorderSlice":47,"maskBorderWidth":47,"maskBorderOutset":47,"maskBorderRepeat":47,"maskBorder":47,"maskType":47,"textDecorationStyle":47,"textDecorationSkip":47,"textDecorationLine":47,"textDecorationColor":47,"filter":47,"fontFeatureSettings":47,"breakAfter":47,"breakBefore":47,"breakInside":47,"columnCount":47,"columnFill":47,"columnGap":47,"columnRule":47,"columnRuleColor":47,"columnRuleStyle":47,"columnRuleWidth":47,"columns":47,"columnSpan":47,"columnWidth":47},"and_uc":{"flex":9.9,"flexBasis":9.9,"flexDirection":9.9,"flexGrow":9.9,"flexFlow":9.9,"flexShrink":9.9,"flexWrap":9.9,"alignContent":9.9,"alignItems":9.9,"alignSelf":9.9,"justifyContent":9.9,"order":9.9,"transition":9.9,"transitionDelay":9.9,"transitionDuration":9.9,"transitionProperty":9.9,"transitionTimingFunction":9.9,"transform":9.9,"transformOrigin":9.9,"transformOriginX":9.9,"transformOriginY":9.9,"backfaceVisibility":9.9,"perspective":9.9,"perspectiveOrigin":9.9,"transformStyle":9.9,"transformOriginZ":9.9,"animation":9.9,"animationDelay":9.9,"animationDirection":9.9,"animationFillMode":9.9,"animationDuration":9.9,"animationIterationCount":9.9,"animationName":9.9,"animationPlayState":9.9,"animationTimingFunction":9.9,"appearance":9.9,"userSelect":9.9,"fontKerning":9.9,"textEmphasisPosition":9.9,"textEmphasis":9.9,"textEmphasisStyle":9.9,"textEmphasisColor":9.9,"maskImage":9.9,"maskMode":9.9,"maskRepeat":9.9,"maskPosition":9.9,"maskClip":9.9,"maskOrigin":9.9,"maskSize":9.9,"maskComposite":9.9,"mask":9.9,"maskBorderSource":9.9,"maskBorderMode":9.9,"maskBorderSlice":9.9,"maskBorderWidth":9.9,"maskBorderOutset":9.9,"maskBorderRepeat":9.9,"maskBorder":9.9,"maskType":9.9,"textSizeAdjust":9.9,"filter":9.9,"hyphens":9.9,"flowInto":9.9,"flowFrom":9.9,"breakBefore":9.9,"breakAfter":9.9,"breakInside":9.9,"regionFragment":9.9,"fontFeatureSettings":9.9,"columnCount":9.9,"columnFill":9.9,"columnGap":9.9,"columnRule":9.9,"columnRuleColor":9.9,"columnRuleStyle":9.9,"columnRuleWidth":9.9,"columns":9.9,"columnSpan":9.9,"columnWidth":9.9},"op_mini":{"borderImage":5,"borderImageOutset":5,"borderImageRepeat":5,"borderImageSlice":5,"borderImageSource":5,"borderImageWidth":5,"tabSize":5,"objectFit":5,"objectPosition":5}}; module.exports = caniuseData },{}],4:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); exports['default'] = calc; function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function calc(pluginInterface) { var property = pluginInterface.property; var value = pluginInterface.value; var browserInfo = pluginInterface.browserInfo; var prefix = pluginInterface.prefix; var keepUnprefixed = pluginInterface.keepUnprefixed; var forceRun = pluginInterface.forceRun; var browser = browserInfo.browser; var version = browserInfo.version; if (typeof value === 'string' && value.indexOf('calc(') > -1 && (forceRun || browser === 'firefox' && version < 15 || browser === 'chrome' && version < 25 || browser === 'safari' && version < 6.1 || browser === 'ios_saf' && version < 7)) { var newValue = forceRun ? // prefix all ['-webkit-', '-moz-'].map(function (prefix) { return value.replace(/calc\(/g, prefix + 'calc('); }).join(';' + property + ':') : // default value.replace(/calc\(/g, prefix.css + 'calc('); return _defineProperty({}, property, newValue + (keepUnprefixed ? ';' + property + ':' + value : '')); } } module.exports = exports['default']; },{}],5:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); exports['default'] = cursor; var values = { 'zoom-in': true, 'zoom-out': true, grab: true, grabbing: true }; function cursor(pluginInterface) { var property = pluginInterface.property; var value = pluginInterface.value; var browserInfo = pluginInterface.browserInfo; var prefix = pluginInterface.prefix; var keepUnprefixed = pluginInterface.keepUnprefixed; var forceRun = pluginInterface.forceRun; var browser = browserInfo.browser; var version = browserInfo.version; if (property === 'cursor' && values[value] && (forceRun || browser === 'firefox' && version < 24 || browser === 'chrome' && version < 37 || browser === 'safari' && version < 9 || browser === 'opera' && version < 24)) { var newValue = forceRun ? // prefix all ['-webkit-', '-moz-'].map(function (prefix) { return prefix + value; }).join(';' + property + ':') : // default prefix.css + value; return { cursor: newValue + (keepUnprefixed ? ';' + property + ':' + value : '') }; } } module.exports = exports['default']; },{}],6:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); exports['default'] = flex; var values = { flex: true, 'inline-flex': true }; function flex(pluginInterface) { var property = pluginInterface.property; var value = pluginInterface.value; var browserInfo = pluginInterface.browserInfo; var prefix = pluginInterface.prefix; var keepUnprefixed = pluginInterface.keepUnprefixed; var forceRun = pluginInterface.forceRun; var browser = browserInfo.browser; var version = browserInfo.version; if (property === 'display' && values[value] && (forceRun || browser === 'chrome' && version < 29 && version > 20 || (browser === 'safari' || browser === 'ios_saf') && version < 9 && version > 6 || browser === 'opera' && (version == 15 || version == 16))) { var newValue = forceRun ? // prefix all ['-webkit-box', '-moz-box', '-ms-' + value + 'box', '-webkit-' + value].join(';' + property + ':') : // default '-webkit-' + value; return { display: newValue + (keepUnprefixed ? ';' + property + ':' + value : '') }; } } module.exports = exports['default']; },{}],7:[function(require,module,exports){ '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'] = flexboxIE; function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var alternativeValues = { 'space-around': 'distribute', 'space-between': 'justify', 'flex-start': 'start', 'flex-end': 'end', flex: '-ms-flexbox', 'inline-flex': '-ms-inline-flexbox' }; var alternativeProps = { alignContent: 'msFlexLinePack', alignSelf: 'msFlexItemAlign', alignItems: 'msFlexAlign', justifyContent: 'msFlexPack', order: 'msFlexOrder', flexGrow: 'msFlexPositive', flexShrink: 'msFlexNegative', flexBasis: 'msPreferredSize' }; var properties = Object.keys(alternativeProps).concat('display').reduce(function (result, prop) { return _extends({}, result, _defineProperty({}, prop, true)); }, {}); function flexboxIE(pluginInterface) { var property = pluginInterface.property; var value = pluginInterface.value; var styles = pluginInterface.styles; var browserInfo = pluginInterface.browserInfo; var prefix = pluginInterface.prefix; var keepUnprefixed = pluginInterface.keepUnprefixed; var forceRun = pluginInterface.forceRun; var browser = browserInfo.browser; var version = browserInfo.version; if (properties[property] && (forceRun || (browser === 'ie_mob' || browser === 'ie') && version == 10)) { if (!keepUnprefixed) { delete styles[property]; } if (alternativeProps[property]) { return _defineProperty({}, alternativeProps[property], alternativeValues[value] || value); } if (alternativeValues[value]) { return _defineProperty({}, property, alternativeValues[value] + (keepUnprefixed ? ';' + property + ':' + value : '')); } } } module.exports = exports['default']; },{}],8:[function(require,module,exports){ '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'] = flexboxOld; function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return 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 properties = Object.keys(alternativeProps).concat(['alignContent', 'alignSelf', 'display', 'order', 'flexGrow', 'flexShrink', 'flexBasis', 'flexDirection']).reduce(function (result, prop) { return _extends({}, result, _defineProperty({}, prop, true)); }, {}); function flexboxOld(pluginInterface) { var property = pluginInterface.property; var value = pluginInterface.value; var styles = pluginInterface.styles; var browserInfo = pluginInterface.browserInfo; var prefix = pluginInterface.prefix; var keepUnprefixed = pluginInterface.keepUnprefixed; var forceRun = pluginInterface.forceRun; var browser = browserInfo.browser; var version = browserInfo.version; if (properties[property] && (forceRun || browser === 'firefox' && version < 22 || browser === 'chrome' && version < 21 || (browser === 'safari' || browser === 'ios_saf') && version <= 6.1 || browser === 'android' && version < 4.4 || browser === 'and_uc')) { if (!keepUnprefixed) { delete styles[property]; } if (property === 'flexDirection') { return { WebkitBoxOrient: value.indexOf('column') > -1 ? 'vertical' : 'horizontal', WebkitBoxDirection: value.indexOf('reverse') > -1 ? 'reverse' : 'normal' }; } if (property === 'display' && alternativeValues[value]) { return { display: prefix.css + alternativeValues[value] + (keepUnprefixed ? ';' + property + ':' + value : '') }; } if (alternativeProps[property]) { return _defineProperty({}, alternativeProps[property], alternativeValues[value] || value); } if (alternativeValues[value]) { return _defineProperty({}, property, alternativeValues[value] + (keepUnprefixed ? ';' + property + ':' + value : '')); } } } module.exports = exports['default']; },{}],9:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); exports['default'] = gradient; function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var values = /linear-gradient|radial-gradient|repeating-linear-gradient|repeating-radial-gradient/; function gradient(pluginInterface) { var property = pluginInterface.property; var value = pluginInterface.value; var browserInfo = pluginInterface.browserInfo; var prefix = pluginInterface.prefix; var keepUnprefixed = pluginInterface.keepUnprefixed; var forceRun = pluginInterface.forceRun; var browser = browserInfo.browser; var version = browserInfo.version; if (typeof value === 'string' && value.match(values) !== null && (forceRun || browser === 'firefox' && version < 16 || browser === 'chrome' && version < 26 || (browser === 'safari' || browser === 'ios_saf') && version < 7 || (browser === 'opera' || browser === 'op_mini') && version < 12.1 || browser === 'android' && version < 4.4 || browser === 'and_uc')) { var newValue = forceRun ? // prefix all ['-webkit-', '-moz-'].map(function (prefix) { return prefix + value; }).join(';' + property + ':') : // default prefix.css + value; return _defineProperty({}, property, newValue + (keepUnprefixed ? ';' + property + ':' + value : '')); } } module.exports = exports['default']; },{}],10:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); exports['default'] = sizing; function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return 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 }; function sizing(pluginInterface) { var property = pluginInterface.property; var value = pluginInterface.value; var browserInfo = pluginInterface.browserInfo; var prefix = pluginInterface.prefix; var keepUnprefixed = pluginInterface.keepUnprefixed; var forceRun = pluginInterface.forceRun; var browser = browserInfo.browser; var version = browserInfo.version; // This might change in the future // Keep an eye on it if (properties[property] && values[value]) { var newValue = forceRun ? // prefix all ['-webkit-', '-moz-'].map(function (prefix) { return prefix + value; }).join(';' + property + ':') : // default prefix.css + value; return _defineProperty({}, property, newValue + (keepUnprefixed ? ';' + property + ':' + value : '')); } } module.exports = exports['default']; },{}],11:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); exports['default'] = calc; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var _utilsCamelToDashCase = require('../utils/camelToDashCase'); var _utilsCamelToDashCase2 = _interopRequireDefault(_utilsCamelToDashCase); var _utilsCapitalizeString = require('../utils/capitalizeString'); var _utilsCapitalizeString2 = _interopRequireDefault(_utilsCapitalizeString); function calc(pluginInterface) { var property = pluginInterface.property; var value = pluginInterface.value; var browserInfo = pluginInterface.browserInfo; var prefix = pluginInterface.prefix; var keepUnprefixed = pluginInterface.keepUnprefixed; var forceRun = pluginInterface.forceRun; var requiresPrefix = pluginInterface.requiresPrefix; var browser = browserInfo.browser; var version = browserInfo.version; if ( // also check for already prefixed transitions typeof value === 'string' && (property.toLowerCase().indexOf('transition') > -1 || property.toLowerCase().indexOf('transitionproperty') > -1)) { var _ref; var _ret = (function () { var requiresPrefixDashCased = Object.keys(requiresPrefix).map(function (property) { return (0, _utilsCamelToDashCase2['default'])(property); }); var newValue = value; // only split multi values, not cubic beziers var multipleValues = newValue.split(/,(?![^()]*(?:\([^()]*\))?\))/g); requiresPrefixDashCased.forEach(function (property) { multipleValues.forEach(function (val, index) { if (val.indexOf(property) > -1) { var newVal = forceRun ? // prefix all ['-webkit-', '-moz-', '-ms-'].map(function (prefix) { return val.replace(property, prefix + property); }).join(',') : // default val.replace(property, prefix.css + property); multipleValues[index] = newVal + (keepUnprefixed ? ',' + val : ''); } }); }); var outputValue = multipleValues.join(','); if (forceRun) { return { v: (_ref = {}, _defineProperty(_ref, 'Webkit' + (0, _utilsCapitalizeString2['default'])(property), outputValue), _defineProperty(_ref, 'Moz' + (0, _utilsCapitalizeString2['default'])(property), outputValue), _defineProperty(_ref, 'ms' + (0, _utilsCapitalizeString2['default'])(property), outputValue), _defineProperty(_ref, property, outputValue), _ref) }; } return { v: _defineProperty({}, property, outputValue) }; })(); if (typeof _ret === 'object') return _ret.v; } } module.exports = exports['default']; },{"../utils/camelToDashCase":13,"../utils/capitalizeString":14}],12:[function(require,module,exports){ // leight polyfill for Object.assign "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = function (base) { var extend = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; Object.keys(extend).forEach(function (key) { return base[key] = extend[key]; }); return base; }; module.exports = exports["default"]; },{}],13:[function(require,module,exports){ /** * Converts a camel-case string to a dash-case string * @param {string} str - str that gets converted to dash-case */ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); exports['default'] = function (str) { return str.replace(/([a-z]|^)([A-Z])/g, function (match, p1, p2) { return p1 + '-' + p2.toLowerCase(); }).replace('ms-', '-ms-'); }; module.exports = exports['default']; },{}],14:[function(require,module,exports){ // helper to capitalize strings "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = function (str) { return str.charAt(0).toUpperCase() + str.slice(1); }; module.exports = exports["default"]; },{}],15:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var _bowser = require('bowser'); var _bowser2 = _interopRequireDefault(_bowser); var vendorPrefixes = { Webkit: ['chrome', 'safari', 'ios', 'android', 'phantom', 'opera', 'webos', 'blackberry', 'bada', 'tizen'], Moz: ['firefox', 'seamonkey', 'sailfish'], ms: ['msie', 'msedge'] }; var browsers = { chrome: [['chrome']], safari: [['safari']], firefox: [['firefox']], ie: [['msie']], edge: [['msedge']], opera: [['opera']], ios_saf: [['ios', 'mobile'], ['ios', 'tablet']], ie_mob: [['windowsphone', 'mobile', 'msie'], ['windowsphone', 'tablet', 'msie'], ['windowsphone', 'mobile', 'msedge'], ['windowsphone', 'tablet', 'msedge']], op_mini: [['opera', 'mobile'], ['opera', 'tablet']], and_uc: [['android', 'mobile'], ['android', 'tablet']], android: [['android', 'mobile'], ['android', 'tablet']] }; /** * Returns an object containing prefix data associated with a browser * @param {string} browser - browser to find a prefix for */ var getPrefixes = function getPrefixes(browser) { var prefixKeys = undefined; var prefix = undefined; var vendors = undefined; var conditions = undefined; var prefixVendor = undefined; var browserVendors = undefined; // Find the prefix for this browser (if any) prefixKeys = Object.keys(vendorPrefixes); for (var i = 0; i < prefixKeys.length; i++) { prefix = prefixKeys[i]; // Find a matching vendor vendors = vendorPrefixes[prefix]; conditions = browsers[browser]; for (var j = 0; j < vendors.length; j++) { prefixVendor = vendors[j]; for (var k = 0; k < conditions.length; k++) { browserVendors = conditions[k]; if (browserVendors.indexOf(prefixVendor) !== -1) { return { inline: prefix, css: '-' + prefix.toLowerCase() + '-' }; } } } } // No prefix found for this browser return { inline: '', css: '' }; }; /** * Uses bowser to get default browser information such as version and name * Evaluates bowser info and adds vendorPrefix information * @param {string} userAgent - userAgent that gets evaluated */ exports['default'] = function (userAgent) { if (!userAgent) { return false; } var info = {}; // Special user agent, return all supported prefixes // instead of returning a string browser name and a prefix object // we return an array of browser names and map of prefixes for each browser if (userAgent === '*') { // Return an array of supported browsers info.browsers = Object.keys(browsers); // Return prefixes associated by browser info.prefixes = {}; // Iterate browser list, assign prefix to each info.browsers.forEach(function (browser) { info.prefixes[browser] = getPrefixes(browser); }); return info; } // Normal user agent, detect browser info = _bowser2['default']._detect(userAgent); Object.keys(vendorPrefixes).forEach(function (prefix) { vendorPrefixes[prefix].forEach(function (browser) { if (info[browser]) { info.prefix = { inline: prefix, css: '-' + prefix.toLowerCase() + '-' }; } }); }); var name = ''; Object.keys(browsers).forEach(function (browser) { browsers[browser].forEach(function (condition) { var match = 0; condition.forEach(function (single) { if (info[single]) { match += 1; } }); if (condition.length === match) { name = browser; } }); }); info.browser = name; // For cordova IOS 8 the version is missing, set truncated osversion to prevent NaN info.version = info.version ? parseFloat(info.version) : parseInt(parseFloat(info.osversion), 10); // seperate native android chrome // https://github.com/rofrischmann/inline-style-prefixer/issues/45 if (info.browser === 'android' && info.chrome && info.version > 37) { info.browser = 'and_chr'; } info.version = parseFloat(info.version); info.osversion = parseFloat(info.osversion); // 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 (info.browser === 'android' && info.osversion < 5) { info.version = info.osversion; } return info; }; module.exports = exports['default']; },{"bowser":18}],16:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); exports['default'] = function (_ref) { var browser = _ref.browser; var version = _ref.version; var prefix = _ref.prefix; var prefixedKeyframes = 'keyframes'; if (browser === 'chrome' && version < 43 || (browser === 'safari' || browser === 'ios_saf') && version < 9 || browser === 'opera' && version < 30 || browser === 'android' && version <= 4.4 || browser === 'and_uc') { prefixedKeyframes = prefix.css + prefixedKeyframes; } return prefixedKeyframes; }; module.exports = exports['default']; },{}],17:[function(require,module,exports){ (function (process){ // only throw warnings if devmode is enabled 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); exports['default'] = function () { if (process.env.NODE_ENV !== 'production') { console.warn.apply(console, arguments); } }; module.exports = exports['default']; }).call(this,require('_process')) },{"_process":19}],18:[function(require,module,exports){ /*! * Bowser - a browser detector * https://github.com/ded/bowser * MIT License | (c) Dustin Diaz 2015 */ !function (name, definition) { if (typeof module != 'undefined' && module.exports) module.exports = definition() else if (typeof define == 'function' && define.amd) define(definition) else this[name] = definition() }('bowser', function () { /** * See useragents.js for examples of navigator.userAgent */ var t = true function detect(ua) { function getFirstMatch(regex) { var match = ua.match(regex); return (match && match.length > 1 && match[1]) || ''; } function getSecondMatch(regex) { var match = ua.match(regex); return (match && match.length > 1 && match[2]) || ''; } var iosdevice = getFirstMatch(/(ipod|iphone|ipad)/i).toLowerCase() , likeAndroid = /like android/i.test(ua) , android = !likeAndroid && /android/i.test(ua) , chromeBook = /CrOS/.test(ua) , edgeVersion = getFirstMatch(/edge\/(\d+(\.\d+)?)/i) , versionIdentifier = getFirstMatch(/version\/(\d+(\.\d+)?)/i) , tablet = /tablet/i.test(ua) , mobile = !tablet && /[^-]mobi/i.test(ua) , result if (/opera|opr/i.test(ua)) { result = { name: 'Opera' , opera: t , version: versionIdentifier || getFirstMatch(/(?:opera|opr)[\s\/](\d+(\.\d+)?)/i) } } else if (/yabrowser/i.test(ua)) { result = { name: 'Yandex Browser' , yandexbrowser: t , version: versionIdentifier || getFirstMatch(/(?:yabrowser)[\s\/](\d+(\.\d+)?)/i) } } else if (/windows phone/i.test(ua)) { result = { name: 'Windows Phone' , windowsphone: t } if (edgeVersion) { result.msedge = t result.version = edgeVersion } else { result.msie = t result.version = getFirstMatch(/iemobile\/(\d+(\.\d+)?)/i) } } else if (/msie|trident/i.test(ua)) { result = { name: 'Internet Explorer' , msie: t , version: getFirstMatch(/(?:msie |rv:)(\d+(\.\d+)?)/i) } } else if (chromeBook) { result = { name: 'Chrome' , chromeBook: t , chrome: t , version: getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.\d+)?)/i) } } else if (/chrome.+? edge/i.test(ua)) { result = { name: 'Microsoft Edge' , msedge: t , version: edgeVersion } } else if (/chrome|crios|crmo/i.test(ua)) { result = { name: 'Chrome' , chrome: t , version: getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.\d+)?)/i) } } else if (iosdevice) { result = { name : iosdevice == 'iphone' ? 'iPhone' : iosdevice == 'ipad' ? 'iPad' : 'iPod' } // WTF: version is not part of user agent in web apps if (versionIdentifier) { result.version = versionIdentifier } } else if (/sailfish/i.test(ua)) { result = { name: 'Sailfish' , sailfish: t , version: getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i) } } else if (/seamonkey\//i.test(ua)) { result = { name: 'SeaMonkey' , seamonkey: t , version: getFirstMatch(/seamonkey\/(\d+(\.\d+)?)/i) } } else if (/firefox|iceweasel/i.test(ua)) { result = { name: 'Firefox' , firefox: t , version: getFirstMatch(/(?:firefox|iceweasel)[ \/](\d+(\.\d+)?)/i) } if (/\((mobile|tablet);[^\)]*rv:[\d\.]+\)/i.test(ua)) { result.firefoxos = t } } else if (/silk/i.test(ua)) { result = { name: 'Amazon Silk' , silk: t , version : getFirstMatch(/silk\/(\d+(\.\d+)?)/i) } } else if (android) { result = { name: 'Android' , version: versionIdentifier } } else if (/phantom/i.test(ua)) { result = { name: 'PhantomJS' , phantom: t , version: getFirstMatch(/phantomjs\/(\d+(\.\d+)?)/i) } } else if (/blackberry|\bbb\d+/i.test(ua) || /rim\stablet/i.test(ua)) { result = { name: 'BlackBerry' , blackberry: t , version: versionIdentifier || getFirstMatch(/blackberry[\d]+\/(\d+(\.\d+)?)/i) } } else if (/(web|hpw)os/i.test(ua)) { result = { name: 'WebOS' , webos: t , version: versionIdentifier || getFirstMatch(/w(?:eb)?osbrowser\/(\d+(\.\d+)?)/i) }; /touchpad\//i.test(ua) && (result.touchpad = t) } else if (/bada/i.test(ua)) { result = { name: 'Bada'