jam-cloud/jam-ui/node_modules/jss/lib/plugins/functions.js

76 lines
1.9 KiB
JavaScript

'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _RuleList = require('../RuleList');
var _RuleList2 = _interopRequireDefault(_RuleList);
var _StyleRule = require('../rules/StyleRule');
var _StyleRule2 = _interopRequireDefault(_StyleRule);
var _createRule = require('../utils/createRule');
var _createRule2 = _interopRequireDefault(_createRule);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
// A symbol replacement.
var now = Date.now();
var fnValuesNs = 'fnValues' + now;
var fnStyleNs = 'fnStyle' + ++now;
exports['default'] = {
onCreateRule: function onCreateRule(name, decl, options) {
if (typeof decl !== 'function') return null;
var rule = (0, _createRule2['default'])(name, {}, options);
rule[fnStyleNs] = decl;
return rule;
},
onProcessStyle: function onProcessStyle(style, rule) {
var fn = {};
for (var prop in style) {
var value = style[prop];
if (typeof value !== 'function') continue;
delete style[prop];
fn[prop] = value;
}
rule = rule;
rule[fnValuesNs] = fn;
return style;
},
onUpdate: function onUpdate(data, rule) {
// It is a rules container like for e.g. ConditionalRule.
if (rule.rules instanceof _RuleList2['default']) {
rule.rules.update(data);
return;
}
if (!(rule instanceof _StyleRule2['default'])) return;
rule = rule;
// If we have a fn values map, it is a rule with function values.
if (rule[fnValuesNs]) {
for (var prop in rule[fnValuesNs]) {
rule.prop(prop, rule[fnValuesNs][prop](data));
}
}
rule = rule;
var fnStyle = rule[fnStyleNs];
// If we have a style function, the entire rule is dynamic and style object
// will be returned from that function.
if (fnStyle) {
var style = fnStyle(data);
for (var _prop in style) {
rule.prop(_prop, style[_prop]);
}
}
}
};