Grabbed dndbeyond's source code
``` ~/go/bin/sourcemapper -output ddb -jsurl https://media.dndbeyond.com/character-app/static/js/main.90aa78c5.js ```
This commit is contained in:
+70
@@ -0,0 +1,70 @@
|
||||
import warning from 'tiny-warning';
|
||||
|
||||
/**
|
||||
* Set selector.
|
||||
*
|
||||
* @param original rule
|
||||
* @param className class string
|
||||
* @return flag indicating function was successfull or not
|
||||
*/
|
||||
|
||||
function registerClass(rule, className) {
|
||||
// Skip falsy values
|
||||
if (!className) return true; // Support array of class names `{composes: ['foo', 'bar']}`
|
||||
|
||||
if (Array.isArray(className)) {
|
||||
for (var index = 0; index < className.length; index++) {
|
||||
var isSetted = registerClass(rule, className[index]);
|
||||
if (!isSetted) return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
} // Support space separated class names `{composes: 'foo bar'}`
|
||||
|
||||
|
||||
if (className.indexOf(' ') > -1) {
|
||||
return registerClass(rule, className.split(' '));
|
||||
}
|
||||
|
||||
var parent = rule.options.parent; // It is a ref to a local rule.
|
||||
|
||||
if (className[0] === '$') {
|
||||
var refRule = parent.getRule(className.substr(1));
|
||||
|
||||
if (!refRule) {
|
||||
process.env.NODE_ENV !== "production" ? warning(false, "[JSS] Referenced rule is not defined. \n" + rule.toString()) : void 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (refRule === rule) {
|
||||
process.env.NODE_ENV !== "production" ? warning(false, "[JSS] Cyclic composition detected. \n" + rule.toString()) : void 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
parent.classes[rule.key] += " " + parent.classes[refRule.key];
|
||||
return true;
|
||||
}
|
||||
|
||||
parent.classes[rule.key] += " " + className;
|
||||
return true;
|
||||
}
|
||||
/**
|
||||
* Convert compose property to additional class, remove property from original styles.
|
||||
*/
|
||||
|
||||
|
||||
function jssCompose() {
|
||||
function onProcessStyle(style, rule) {
|
||||
if (!('composes' in style)) return style;
|
||||
registerClass(rule, style.composes); // Remove composes property to prevent infinite loop.
|
||||
|
||||
delete style.composes;
|
||||
return style;
|
||||
}
|
||||
|
||||
return {
|
||||
onProcessStyle: onProcessStyle
|
||||
};
|
||||
}
|
||||
|
||||
export default jssCompose;
|
||||
Reference in New Issue
Block a user