'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]); } } } };