2025-05-28 15:36:51 -07:00

50 lines
1.4 KiB
JavaScript

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;