UNPKG

styletron-vue

Version:
905 lines (668 loc) 25.9 kB
/*! * styletron-vue v0.4.1 * (c) 2017-present egoist <0x142857@gmail.com> * Released under the MIT License. */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : (factory((global.Styletron = {}))); }(this, (function (exports) { 'use strict'; function plugin (Vue) { Vue.mixin({ beforeCreate: function beforeCreate() { this.$styletron = this.$options.styletron || this.$parent && this.$parent.$options.styletron; } }); } function unwrapExports (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } function createCommonjsModule(fn, module) { return module = { exports: {} }, fn(module, module.exports), module.exports; } var capitalizeString_1 = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = capitalizeString; function capitalizeString(str) { return str.charAt(0).toUpperCase() + str.slice(1); } module.exports = exports["default"]; }); unwrapExports(capitalizeString_1); var prefixProperty_1 = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = prefixProperty; var _capitalizeString2 = _interopRequireDefault(capitalizeString_1); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function prefixProperty(prefixProperties, property, style) { if (prefixProperties.hasOwnProperty(property)) { var newStyle = {}; var requiredPrefixes = prefixProperties[property]; var capitalizedProperty = (0, _capitalizeString2.default)(property); var keys = Object.keys(style); for (var i = 0; i < keys.length; i++) { var styleProperty = keys[i]; if (styleProperty === property) { for (var j = 0; j < requiredPrefixes.length; j++) { newStyle[requiredPrefixes[j] + capitalizedProperty] = style[property]; } } newStyle[styleProperty] = style[styleProperty]; } return newStyle; } return style; } module.exports = exports["default"]; }); unwrapExports(prefixProperty_1); var prefixValue_1 = createCommonjsModule(function (module, exports) { 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"]; }); unwrapExports(prefixValue_1); var addNewValuesOnly_1 = createCommonjsModule(function (module, exports) { 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"]; }); unwrapExports(addNewValuesOnly_1); var isObject_1 = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = isObject; function isObject(value) { return value instanceof Object && !Array.isArray(value); } module.exports = exports["default"]; }); unwrapExports(isObject_1); var createPrefixer_1 = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = createPrefixer; var _prefixProperty2 = _interopRequireDefault(prefixProperty_1); var _prefixValue2 = _interopRequireDefault(prefixValue_1); var _addNewValuesOnly2 = _interopRequireDefault(addNewValuesOnly_1); var _isObject2 = _interopRequireDefault(isObject_1); 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; } style = (0, _prefixProperty2.default)(prefixMap, property, style); } } return style; } return prefixAll; } module.exports = exports["default"]; }); unwrapExports(createPrefixer_1); var staticData = createCommonjsModule(function (module, exports) { 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, "textEmphasisPosition": w, "textEmphasis": w, "textEmphasisStyle": w, "textEmphasisColor": w, "boxDecorationBreak": 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, "userSelect": wmms, "backdropFilter": w, "fontKerning": w, "scrollSnapType": wms, "scrollSnapPointsX": wms, "scrollSnapPointsY": wms, "scrollSnapDestination": wms, "scrollSnapCoordinate": wms, "clipPath": w, "shapeImageThreshold": w, "shapeImageMargin": w, "shapeImageOutside": w, "filter": w, "hyphens": wms, "flowInto": wms, "flowFrom": wms, "breakBefore": wms, "breakAfter": wms, "breakInside": wms, "regionFragment": wms, "writingMode": wms, "tabSize": m, "fontFeatureSettings": w, "columnCount": w, "columnFill": w, "columnGap": w, "columnRule": w, "columnRuleColor": w, "columnRuleStyle": w, "columnRuleWidth": w, "columns": w, "columnSpan": w, "columnWidth": w, "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, "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 } }; module.exports = exports["default"]; }); unwrapExports(staticData); var cursor_1 = createCommonjsModule(function (module, exports) { 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"]; }); unwrapExports(cursor_1); var isPrefixedValue_1 = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = isPrefixedValue; var regex = /-webkit-|-moz-|-ms-/; function isPrefixedValue(value) { return typeof value === 'string' && regex.test(value); } module.exports = exports['default']; }); unwrapExports(isPrefixedValue_1); var crossFade_1 = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = crossFade; var _isPrefixedValue2 = _interopRequireDefault(isPrefixedValue_1); 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"]; }); unwrapExports(crossFade_1); var filter_1 = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = filter; var _isPrefixedValue2 = _interopRequireDefault(isPrefixedValue_1); 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"]; }); unwrapExports(filter_1); var flex_1 = createCommonjsModule(function (module, exports) { 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"]; }); unwrapExports(flex_1); var flexboxOld_1 = createCommonjsModule(function (module, exports) { 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"]; }); unwrapExports(flexboxOld_1); var gradient_1 = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = gradient; var _isPrefixedValue2 = _interopRequireDefault(isPrefixedValue_1); 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"]; }); unwrapExports(gradient_1); var imageSet_1 = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = imageSet; var _isPrefixedValue2 = _interopRequireDefault(isPrefixedValue_1); 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"]; }); unwrapExports(imageSet_1); var position_1 = createCommonjsModule(function (module, exports) { 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"]; }); unwrapExports(position_1); var sizing_1 = createCommonjsModule(function (module, exports) { 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"]; }); unwrapExports(sizing_1); var uppercasePattern = /[A-Z]/g; var msPattern = /^ms-/; var cache = {}; function hyphenateStyleName(string) { return string in cache ? cache[string] : cache[string] = string .replace(uppercasePattern, '-$&') .toLowerCase() .replace(msPattern, '-ms-'); } var hyphenateStyleName_1 = hyphenateStyleName; var hyphenateProperty_1 = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = hyphenateProperty; var _hyphenateStyleName2 = _interopRequireDefault(hyphenateStyleName_1); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function hyphenateProperty(property) { return (0, _hyphenateStyleName2.default)(property); } module.exports = exports['default']; }); unwrapExports(hyphenateProperty_1); var transition_1 = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); exports.default = transition; var _hyphenateProperty2 = _interopRequireDefault(hyphenateProperty_1); var _isPrefixedValue2 = _interopRequireDefault(isPrefixedValue_1); var _capitalizeString2 = _interopRequireDefault(capitalizeString_1); 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"]; }); unwrapExports(transition_1); var _static = createCommonjsModule(function (module, exports) { Object.defineProperty(exports, "__esModule", { value: true }); var _createPrefixer2 = _interopRequireDefault(createPrefixer_1); var _staticData2 = _interopRequireDefault(staticData); var _cursor2 = _interopRequireDefault(cursor_1); var _crossFade2 = _interopRequireDefault(crossFade_1); var _filter2 = _interopRequireDefault(filter_1); var _flex2 = _interopRequireDefault(flex_1); var _flexboxOld2 = _interopRequireDefault(flexboxOld_1); var _gradient2 = _interopRequireDefault(gradient_1); var _imageSet2 = _interopRequireDefault(imageSet_1); var _position2 = _interopRequireDefault(position_1); var _sizing2 = _interopRequireDefault(sizing_1); var _transition2 = _interopRequireDefault(transition_1); 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"]; }); var prefixAll = unwrapExports(_static); const uppercasePattern$1 = /[A-Z]/g; const msPattern$1 = /^ms-/; const cache$1 = {}; function hyphenateStyleName$1(prop) { return prop in cache$1 ? cache$1[prop] : cache$1[prop] = prop.replace(uppercasePattern$1, '-$&').toLowerCase().replace(msPattern$1, '-ms-'); } const prefixedBlockCache = {}; function injectStylePrefixed(styletron, styles, media, pseudo, cache = prefixedBlockCache) { let classString = ''; for (const originalKey in styles) { const originalVal = styles[originalKey]; const originalValType = typeof originalVal; const isPrimitiveVal = originalValType === 'string' || originalValType === 'number'; if (isPrimitiveVal || Array.isArray(originalVal)) { let block = ''; if (isPrimitiveVal && cache.hasOwnProperty(originalKey) && cache[originalKey].hasOwnProperty(originalVal)) { block = cache[originalKey][originalVal]; } else { const prefixed = prefixAll({ [originalKey]: originalVal }); for (const prefixedKey in prefixed) { const prefixedVal = prefixed[prefixedKey]; const prefixedValType = typeof prefixedVal; if (prefixedValType === 'string' || prefixedValType === 'number') { block += `${hyphenateStyleName$1(prefixedKey)}:${prefixedVal};`; continue; } if (Array.isArray(prefixedVal)) { const hyphenated = hyphenateStyleName$1(prefixedKey); for (let i = 0; i < prefixedVal.length; i++) { block += `${hyphenated}:${prefixedVal[i]};`; } continue; } } block = block.slice(0, -1); // Remove trailing semicolon if (isPrimitiveVal) { if (!cache.hasOwnProperty(originalKey)) { cache[originalKey] = {}; } cache[originalKey][originalVal] = block; } } classString += ' ' + styletron.injectRawDeclaration({ block, media, pseudo }); } if (originalValType === 'object') { if (originalKey[0] === ':') { classString += ' ' + injectStylePrefixed(styletron, originalVal, media, originalKey, cache); continue; } if (originalKey.substring(0, 6) === '@media') { classString += ' ' + injectStylePrefixed(styletron, originalVal, originalKey.substr(7), pseudo, cache); continue; } } } // remove leading space on way out return classString.slice(1); } /*! * nano-assign v1.0.0 * (c) 2017-present egoist <0x142857@gmail.com> * Released under the MIT License. */ var index = function(obj) { var arguments$1 = arguments; for (var i = 1; i < arguments.length; i++) { // eslint-disable-next-line guard-for-in, prefer-rest-params for (var p in arguments[i]) { obj[p] = arguments$1[i][p]; } } return obj }; var nanoAssign_common = index; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var defineProperty = function (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 STYLETRON_KEY = '__STYLETRON'; function array2obj(source) { if (Array.isArray(source)) { return source.reduce(function (res, key) { res[key] = null; return res; }, {}); } return source; } function createComponent(tag, stylesArray, props) { var _Component; var Component = (_Component = { props: props, functional: true }, defineProperty(_Component, STYLETRON_KEY, { tag: tag, styles: stylesArray }), defineProperty(_Component, 'inject', { theme: { default: null }, styletron: { default: null } }), defineProperty(_Component, 'render', function render(h, ctx) { var resolvedStyle = {}; for (var i = 0; i < Component[STYLETRON_KEY].styles.length; i++) { var style = Component[STYLETRON_KEY].styles[i]; if (typeof style === 'function') { nanoAssign_common(resolvedStyle, style(ctx.props, ctx)); } else if ((typeof style === 'undefined' ? 'undefined' : _typeof(style)) === 'object') { nanoAssign_common(resolvedStyle, style); } } var styletron = ctx.parent.$styletron || ctx.injections.styletron; if ("development" === 'development' && !styletron) { throw new Error('[styletron-vue] You need to bind styletron instance first!'); } var styletronClassName = injectStylePrefixed(styletron, resolvedStyle); var className = [ctx.data.class, styletronClassName]; return h(tag, nanoAssign_common({}, ctx.data, { class: className, props: ctx.props }), ctx.children); }), _Component); return Component; } function styled(base, styleArg, props) { var inheritProps = (typeof base === 'undefined' ? 'undefined' : _typeof(base)) === 'object' ? array2obj(base.props) : null; var finalProps = nanoAssign_common({}, inheritProps, array2obj(props)); if ((typeof base === 'undefined' ? 'undefined' : _typeof(base)) === 'object' && base[STYLETRON_KEY]) { var _base$STYLETRON_KEY = base[STYLETRON_KEY], tag = _base$STYLETRON_KEY.tag, styles = _base$STYLETRON_KEY.styles; return createComponent(tag, styles.concat(styleArg), finalProps); } else if (typeof base === 'string' || (typeof base === 'undefined' ? 'undefined' : _typeof(base)) === 'object') { return createComponent(base, [styleArg], finalProps); } { throw new Error('`styled` takes either a DOM element name or a component'); } } exports['default'] = plugin; exports.styled = styled; Object.defineProperty(exports, '__esModule', { value: true }); })));