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

63 lines
1.7 KiB
JavaScript

'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _StyleRule = require('../rules/StyleRule');
var _StyleRule2 = _interopRequireDefault(_StyleRule);
var _createRule = require('../utils/createRule');
var _createRule2 = _interopRequireDefault(_createRule);
var _isObservable = require('../utils/isObservable');
var _isObservable2 = _interopRequireDefault(_isObservable);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
exports['default'] = {
onCreateRule: function onCreateRule(name, decl, options) {
if (!(0, _isObservable2['default'])(decl)) return null;
// Cast `decl` to `Observable`, since it passed the type guard.
var style$ = decl;
var rule = (0, _createRule2['default'])(name, {}, options);
// TODO
// Call `stream.subscribe()` returns a subscription, which should be explicitly
// unsubscribed from when we know this sheet is no longer needed.
style$.subscribe(function (style) {
for (var prop in style) {
rule.prop(prop, style[prop]);
}
});
return rule;
},
onProcessRule: function onProcessRule(rule) {
if (!(rule instanceof _StyleRule2['default'])) return;
var styleRule = rule;
var style = styleRule.style;
var _loop = function _loop(prop) {
var value = style[prop];
if (!(0, _isObservable2['default'])(value)) return 'continue';
delete style[prop];
value.subscribe({
next: function next(nextValue) {
styleRule.prop(prop, nextValue);
}
});
};
for (var prop in style) {
var _ret = _loop(prop);
if (_ret === 'continue') continue;
}
}
};