import $$observable from 'symbol-observable'; import { createRule } from 'jss'; var isObservable = function isObservable(value) { return value && value[$$observable] && value === value[$$observable](); }; var observablePlugin = function observablePlugin(updateOptions) { return { onCreateRule: function onCreateRule(name, decl, options) { if (!isObservable(decl)) return null; var style$ = decl; var rule = createRule(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], updateOptions); } }); return rule; }, onProcessRule: function onProcessRule(rule) { if (rule && rule.type !== 'style') return; var styleRule = rule; var style = styleRule.style; var _loop = function _loop(prop) { var value = style[prop]; if (!isObservable(value)) return "continue"; delete style[prop]; value.subscribe({ next: function next(nextValue) { styleRule.prop(prop, nextValue, updateOptions); } }); }; for (var prop in style) { var _ret = _loop(prop); if (_ret === "continue") continue; } } }; }; export default observablePlugin;