Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
if (!style) {
return
}
const { staticStyles, dynamicStyles } = UIDLUtils.splitDynamicAndStaticStyles(style)
const root = templateLookup[key]
if (Object.keys(staticStyles).length > 0) {
const elementClassName = StringUtils.camelCaseToDashCase(key)
const componentFileName = UIDLUtils.getComponentFileName(uidl) // Filename used to enforce dash case naming
const className = forceScoping // when the framework doesn't provide automating scoping for classNames
? `${componentFileName}-${elementClassName}`
: elementClassName
jssStylesArray.push(
StyleBuilders.createCSSClass(className, StyleUtils.getContentOfStyleObject(staticStyles))
)
if (templateStyle === 'html') {
HASTUtils.addClassToNode(root, className)
} else {
ASTUtils.addClassStringOnJSXTag(root, className, classAttributeName)
}
}
if (Object.keys(dynamicStyles).length > 0) {
const rootStyles = UIDLUtils.cleanupNestedStyles(dynamicStyles)
// If dynamic styles are on nested-styles they are unfortunately lost, since inline style does not support that
if (Object.keys(rootStyles).length > 0) {
if (templateStyle === 'html') {
// simple string expression
UIDLUtils.traverseElements(uidl.node, (element) => {
const { style, key } = element
if (style) {
const root = astNodesLookup[key]
const { staticStyles, dynamicStyles } = UIDLUtils.splitDynamicAndStaticStyles(style)
if (Object.keys(staticStyles).length > 0) {
const className = StringUtils.camelCaseToDashCase(key)
const jsFriendlyClassName = StringUtils.dashCaseToCamelCase(className)
cssClasses.push(
StyleBuilders.createCSSClass(
className,
StyleUtils.getContentOfStyleObject(staticStyles)
)
)
// When the className is equal to the jsFriendlyClassName, it can be safely addressed with `styles.`
const classNameIsJSFriendly = className === jsFriendlyClassName
const classReferenceIdentifier =
camelCaseClassNames || classNameIsJSFriendly
? `styles.${jsFriendlyClassName}`
: `styles['${className}']`
ASTUtils.addDynamicAttributeToJSXTag(root, classAttributeName, classReferenceIdentifier)
}
if (Object.keys(dynamicStyles).length) {
const rootStyles = UIDLUtils.cleanupNestedStyles(dynamicStyles)
UIDLUtils.traverseElements(uidl.node, (element) => {
const { style, key } = element
if (style) {
const root = astNodesLookup[key]
const { staticStyles, dynamicStyles } = UIDLUtils.splitDynamicAndStaticStyles(style)
if (Object.keys(staticStyles).length > 0) {
const className = StringUtils.camelCaseToDashCase(key)
const jsFriendlyClassName = StringUtils.dashCaseToCamelCase(className)
cssClasses.push(
StyleBuilders.createCSSClass(
className,
StyleUtils.getContentOfStyleObject(staticStyles)
)
)
// When the className is equal to the jsFriendlyClassName, it can be safely addressed with `styles.`
const classNameIsJSFriendly = className === jsFriendlyClassName
const classReferenceIdentifier =
camelCaseClassNames || classNameIsJSFriendly
? `styles.${jsFriendlyClassName}`
: `styles['${className}']`
ASTUtils.addDynamicAttributeToJSXTag(root, classAttributeName, classReferenceIdentifier)
}
if (Object.keys(dynamicStyles).length) {
const rootStyles = UIDLUtils.cleanupNestedStyles(dynamicStyles)