You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

пре 3 година
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. 'use strict';
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. var _RuleList = require('../RuleList');
  6. var _RuleList2 = _interopRequireDefault(_RuleList);
  7. var _StyleRule = require('../rules/StyleRule');
  8. var _StyleRule2 = _interopRequireDefault(_StyleRule);
  9. var _createRule = require('../utils/createRule');
  10. var _createRule2 = _interopRequireDefault(_createRule);
  11. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
  12. // A symbol replacement.
  13. var now = Date.now();
  14. var fnValuesNs = 'fnValues' + now;
  15. var fnStyleNs = 'fnStyle' + ++now;
  16. exports['default'] = {
  17. onCreateRule: function onCreateRule(name, decl, options) {
  18. if (typeof decl !== 'function') return null;
  19. var rule = (0, _createRule2['default'])(name, {}, options);
  20. rule[fnStyleNs] = decl;
  21. return rule;
  22. },
  23. onProcessStyle: function onProcessStyle(style, rule) {
  24. var fn = {};
  25. for (var prop in style) {
  26. var value = style[prop];
  27. if (typeof value !== 'function') continue;
  28. delete style[prop];
  29. fn[prop] = value;
  30. }
  31. rule = rule;
  32. rule[fnValuesNs] = fn;
  33. return style;
  34. },
  35. onUpdate: function onUpdate(data, rule) {
  36. // It is a rules container like for e.g. ConditionalRule.
  37. if (rule.rules instanceof _RuleList2['default']) {
  38. rule.rules.update(data);
  39. return;
  40. }
  41. if (!(rule instanceof _StyleRule2['default'])) return;
  42. rule = rule;
  43. // If we have a fn values map, it is a rule with function values.
  44. if (rule[fnValuesNs]) {
  45. for (var prop in rule[fnValuesNs]) {
  46. rule.prop(prop, rule[fnValuesNs][prop](data));
  47. }
  48. }
  49. rule = rule;
  50. var fnStyle = rule[fnStyleNs];
  51. // If we have a style function, the entire rule is dynamic and style object
  52. // will be returned from that function.
  53. if (fnStyle) {
  54. var style = fnStyle(data);
  55. for (var _prop in style) {
  56. rule.prop(_prop, style[_prop]);
  57. }
  58. }
  59. }
  60. };