``` ~/go/bin/sourcemapper -output ddb -jsurl https://media.dndbeyond.com/character-app/static/js/main.90aa78c5.js ```
50 lines
1.4 KiB
JavaScript
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;
|