@cross-nft-marketplace/auction-house-nft-components
Version:
NFT Media Rendering Components
42 lines (41 loc) • 1.86 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useMediaContext = void 0;
const react_1 = require("react");
const css_1 = require("@emotion/css");
const MediaContext_1 = require("./MediaContext");
const camelCase_1 = require("../utils/camelCase");
function useMediaContext() {
const mediaContext = (0, react_1.useContext)(MediaContext_1.MediaContext);
const getStyles = (themeKey, className, flags = {}) => {
if (!(themeKey in mediaContext.style.styles)) {
throw new Error(`"${themeKey}" not found in [${Object.keys(mediaContext.style.styles).join(", ")}]`);
}
const styles = mediaContext.style.styles[themeKey](mediaContext.style.theme, flags);
const getUtilitySelectors = (flagsObject) => {
if (Object.keys(flagsObject).length) {
return Object.entries(flagsObject)
.map((key) => {
const objectType = typeof key[1];
return objectType === "boolean" && key[1]
? `zora-${themeKey}--${key[0]}`
: objectType === "string"
? `zora-${themeKey}__${key[0]}--${(0, camelCase_1.camelCase)(key[1])}`
: "";
})
.join(" ");
}
else {
return "";
}
};
return {
className: `${className ? `${className} ` : ""}zora-${themeKey}${mediaContext.style.useDefaultStyles ? ` ${(0, css_1.css)(styles)}` : ""} ${getUtilitySelectors(flags)}`,
};
};
const getString = (stringName) => {
return mediaContext.strings[stringName];
};
return { ...mediaContext, getString, getStyles };
}
exports.useMediaContext = useMediaContext;