mirror of
https://github.com/idanoo/GoScrobble.git
synced 2024-11-25 09:55:15 +00:00
77 lines
2.6 KiB
JavaScript
77 lines
2.6 KiB
JavaScript
|
'use strict';
|
||
|
|
||
|
Object.defineProperty(exports, '__esModule', { value: true });
|
||
|
|
||
|
var warning = require('tiny-warning');
|
||
|
var jss = require('jss');
|
||
|
|
||
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
||
|
|
||
|
var warning__default = /*#__PURE__*/_interopDefaultLegacy(warning);
|
||
|
|
||
|
var now = Date.now();
|
||
|
var fnValuesNs = "fnValues" + now;
|
||
|
var fnRuleNs = "fnStyle" + ++now;
|
||
|
|
||
|
var functionPlugin = function functionPlugin() {
|
||
|
return {
|
||
|
onCreateRule: function onCreateRule(name, decl, options) {
|
||
|
if (typeof decl !== 'function') return null;
|
||
|
var rule = jss.createRule(name, {}, options);
|
||
|
rule[fnRuleNs] = decl;
|
||
|
return rule;
|
||
|
},
|
||
|
onProcessStyle: function onProcessStyle(style, rule) {
|
||
|
// We need to extract function values from the declaration, so that we can keep core unaware of them.
|
||
|
// We need to do that only once.
|
||
|
// We don't need to extract functions on each style update, since this can happen only once.
|
||
|
// We don't support function values inside of function rules.
|
||
|
if (fnValuesNs in rule || fnRuleNs in rule) return style;
|
||
|
var fnValues = {};
|
||
|
|
||
|
for (var prop in style) {
|
||
|
var value = style[prop];
|
||
|
if (typeof value !== 'function') continue;
|
||
|
delete style[prop];
|
||
|
fnValues[prop] = value;
|
||
|
} // $FlowFixMe[prop-missing]
|
||
|
|
||
|
|
||
|
rule[fnValuesNs] = fnValues;
|
||
|
return style;
|
||
|
},
|
||
|
onUpdate: function onUpdate(data, rule, sheet, options) {
|
||
|
var styleRule = rule; // $FlowFixMe[prop-missing]
|
||
|
|
||
|
var fnRule = styleRule[fnRuleNs]; // If we have a style function, the entire rule is dynamic and style object
|
||
|
// will be returned from that function.
|
||
|
|
||
|
if (fnRule) {
|
||
|
// Empty object will remove all currently defined props
|
||
|
// in case function rule returns a falsy value.
|
||
|
styleRule.style = fnRule(data) || {};
|
||
|
|
||
|
if (process.env.NODE_ENV === 'development') {
|
||
|
for (var prop in styleRule.style) {
|
||
|
if (typeof styleRule.style[prop] === 'function') {
|
||
|
process.env.NODE_ENV !== "production" ? warning__default['default'](false, '[JSS] Function values inside function rules are not supported.') : void 0;
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
} // $FlowFixMe[prop-missing]
|
||
|
|
||
|
|
||
|
var fnValues = styleRule[fnValuesNs]; // If we have a fn values map, it is a rule with function values.
|
||
|
|
||
|
if (fnValues) {
|
||
|
for (var _prop in fnValues) {
|
||
|
styleRule.prop(_prop, fnValues[_prop](data), options);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
};
|
||
|
|
||
|
exports.default = functionPlugin;
|