|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports['default'] = toCss;
-
- var _toCssValue = require('./toCssValue');
-
- var _toCssValue2 = _interopRequireDefault(_toCssValue);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
-
- /**
- * Indent a string.
- * http://jsperf.com/array-join-vs-for
- */
- function indentStr(str, indent) {
- var result = '';
- for (var index = 0; index < indent; index++) {
- result += ' ';
- }return result + str;
- }
-
- /**
- * Converts a Rule to CSS string.
- */
-
- function toCss(selector, style) {
- var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
-
- var result = '';
-
- if (!style) return result;
-
- var _options$indent = options.indent,
- indent = _options$indent === undefined ? 0 : _options$indent;
- var fallbacks = style.fallbacks;
-
-
- indent++;
-
- // Apply fallbacks first.
- if (fallbacks) {
- // Array syntax {fallbacks: [{prop: value}]}
- if (Array.isArray(fallbacks)) {
- for (var index = 0; index < fallbacks.length; index++) {
- var fallback = fallbacks[index];
- for (var prop in fallback) {
- var value = fallback[prop];
- if (value != null) {
- result += '\n' + indentStr(prop + ': ' + (0, _toCssValue2['default'])(value) + ';', indent);
- }
- }
- }
- } else {
- // Object syntax {fallbacks: {prop: value}}
- for (var _prop in fallbacks) {
- var _value = fallbacks[_prop];
- if (_value != null) {
- result += '\n' + indentStr(_prop + ': ' + (0, _toCssValue2['default'])(_value) + ';', indent);
- }
- }
- }
- }
-
- for (var _prop2 in style) {
- var _value2 = style[_prop2];
- if (_value2 != null && _prop2 !== 'fallbacks') {
- result += '\n' + indentStr(_prop2 + ': ' + (0, _toCssValue2['default'])(_value2) + ';', indent);
- }
- }
-
- // Allow empty style in this case, because properties will be added dynamically.
- if (!result && !options.allowEmpty) return result;
-
- indent--;
- result = indentStr(selector + ' {' + result + '\n', indent) + indentStr('}', indent);
-
- return result;
- }
|