76 lines
1.9 KiB
JavaScript
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]);
|
|
}
|
|
}
|
|
}
|
|
}; |