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:
+101
@@ -0,0 +1,101 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.useCssAndCx = exports.createCssAndCx = void 0;
|
||||
const classnames_1 = require("./tools/classnames");
|
||||
const serialize_1 = require("@emotion/serialize");
|
||||
const utils_1 = require("@emotion/utils");
|
||||
const useGuaranteedMemo_1 = require("./tools/useGuaranteedMemo");
|
||||
const cache_1 = require("./cache");
|
||||
const types_1 = require("./types");
|
||||
exports.createCssAndCx = (() => {
|
||||
function merge(registered, css, className) {
|
||||
const registeredStyles = [];
|
||||
const rawClassName = (0, utils_1.getRegisteredStyles)(registered, registeredStyles, className);
|
||||
if (registeredStyles.length < 2) {
|
||||
return className;
|
||||
}
|
||||
return rawClassName + css(registeredStyles);
|
||||
}
|
||||
function createCssAndCx(params) {
|
||||
const { cache } = params;
|
||||
const css = (...args) => {
|
||||
const serialized = (0, serialize_1.serializeStyles)(args, cache.registered);
|
||||
(0, utils_1.insertStyles)(cache, serialized, false);
|
||||
const className = `${cache.key}-${serialized.name}`;
|
||||
scope: {
|
||||
const arg = args[0];
|
||||
if (!(0, types_1.matchCSSObject)(arg)) {
|
||||
break scope;
|
||||
}
|
||||
increaseSpecificityToTakePrecedenceOverMediaQuerries.saveClassNameCSSObjectMapping(cache, className, arg);
|
||||
}
|
||||
return className;
|
||||
};
|
||||
const cx = (...args) => {
|
||||
const className = (0, classnames_1.classnames)(args);
|
||||
const feat27FixedClassnames = increaseSpecificityToTakePrecedenceOverMediaQuerries.fixClassName(cache, className, css);
|
||||
return merge(cache.registered, css, feat27FixedClassnames);
|
||||
//return merge(cache.registered, css, className);
|
||||
};
|
||||
return { css, cx };
|
||||
}
|
||||
return { createCssAndCx };
|
||||
})().createCssAndCx;
|
||||
/** Will pickup the contextual cache if any */
|
||||
function useCssAndCx() {
|
||||
const cache = (0, cache_1.useTssEmotionCache)();
|
||||
const { css, cx } = (0, useGuaranteedMemo_1.useGuaranteedMemo)(() => (0, exports.createCssAndCx)({ cache }), [cache]);
|
||||
return { css, cx };
|
||||
}
|
||||
exports.useCssAndCx = useCssAndCx;
|
||||
// https://github.com/garronej/tss-react/issues/27
|
||||
const increaseSpecificityToTakePrecedenceOverMediaQuerries = (() => {
|
||||
const cssObjectMapByCache = new WeakMap();
|
||||
return {
|
||||
"saveClassNameCSSObjectMapping": (cache, className, cssObject) => {
|
||||
let cssObjectMap = cssObjectMapByCache.get(cache);
|
||||
if (cssObjectMap === undefined) {
|
||||
cssObjectMap = new Map();
|
||||
cssObjectMapByCache.set(cache, cssObjectMap);
|
||||
}
|
||||
cssObjectMap.set(className, cssObject);
|
||||
},
|
||||
"fixClassName": (() => {
|
||||
function fix(classNameCSSObjects) {
|
||||
let isThereAnyMediaQueriesInPreviousClasses = false;
|
||||
return classNameCSSObjects.map(([className, cssObject]) => {
|
||||
if (cssObject === undefined) {
|
||||
return className;
|
||||
}
|
||||
let out;
|
||||
if (!isThereAnyMediaQueriesInPreviousClasses) {
|
||||
out = className;
|
||||
for (const key in cssObject) {
|
||||
if (key.startsWith("@media")) {
|
||||
isThereAnyMediaQueriesInPreviousClasses = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
out = {
|
||||
"&&": cssObject,
|
||||
};
|
||||
}
|
||||
return out;
|
||||
});
|
||||
}
|
||||
return (cache, className, css) => {
|
||||
const cssObjectMap = cssObjectMapByCache.get(cache);
|
||||
return (0, classnames_1.classnames)(fix(className
|
||||
.split(" ")
|
||||
.map(className => [
|
||||
className,
|
||||
cssObjectMap === null || cssObjectMap === void 0 ? void 0 : cssObjectMap.get(className),
|
||||
])).map(classNameOrCSSObject => typeof classNameOrCSSObject === "string"
|
||||
? classNameOrCSSObject
|
||||
: css(classNameOrCSSObject)));
|
||||
};
|
||||
})(),
|
||||
};
|
||||
})();
|
||||
Reference in New Issue
Block a user