{"version":3,"file":"parse-style-props.cjs","sources":["../../../../../src/core/Box/style-props/parse-style-props/parse-style-props.ts"],"sourcesContent":["import { RaikouTheme } from '../../../RaikouProvider';\nimport { keys } from '../../../utils';\nimport { resolvers } from '../resolvers';\nimport type { SystemPropData } from '../style-props-data';\nimport type { RaikouStyleProps, StyleProp } from '../style-props.types';\nimport { sortMediaQueries, SortMediaQueriesResult } from './sort-media-queries';\n\nfunction hasResponsiveStyles(styleProp: StyleProp<unknown>) {\n  if (typeof styleProp !== 'object' || styleProp === null) {\n    return false;\n  }\n\n  const breakpoints = Object.keys(styleProp);\n\n  if (breakpoints.length === 1 && breakpoints[0] === 'base') {\n    return false;\n  }\n\n  return true;\n}\n\nfunction getBaseValue(value: StyleProp<unknown>) {\n  if (typeof value === 'object' && value !== null) {\n    if ('base' in value) {\n      return value.base;\n    }\n\n    return undefined;\n  }\n\n  return value;\n}\n\nfunction getBreakpointKeys(value: StyleProp<unknown>) {\n  if (typeof value === 'object' && value !== null) {\n    return keys(value).filter((key) => key !== 'base');\n  }\n\n  return [];\n}\n\nfunction getBreakpointValue(value: StyleProp<unknown>, breakpoint: string) {\n  if (typeof value === 'object' && value !== null && breakpoint in value) {\n    return value[breakpoint as keyof typeof value];\n  }\n\n  return value;\n}\n\ninterface ParseStylePropsOptions {\n  styleProps: RaikouStyleProps;\n  theme: RaikouTheme;\n  data: Record<string, SystemPropData>;\n}\n\nexport interface ParseStylePropsResult {\n  hasResponsiveStyles: boolean;\n  inlineStyles: React.CSSProperties;\n  styles: React.CSSProperties;\n  media: Record<string, React.CSSProperties>;\n}\n\nexport function parseStyleProps({\n  styleProps,\n  data,\n  theme,\n}: ParseStylePropsOptions): SortMediaQueriesResult {\n  return sortMediaQueries(\n    keys(styleProps).reduce<{\n      hasResponsiveStyles: boolean;\n      inlineStyles: Record<string, unknown>;\n      styles: Record<string, unknown>;\n      media: Record<string, Record<string, unknown>>;\n    }>(\n      (acc, styleProp) => {\n        if (\n          (styleProp as string) === 'hiddenFrom' ||\n          (styleProp as string) === 'visibleFrom' ||\n          (styleProp as string) === 'stx'\n        ) {\n          return acc;\n        }\n\n        const propertyData = data[styleProp];\n        const properties = Array.isArray(propertyData.property)\n          ? propertyData.property\n          : [propertyData.property];\n        const baseValue = getBaseValue(styleProps[styleProp]);\n\n        if (!hasResponsiveStyles(styleProps[styleProp])) {\n          properties.forEach((property) => {\n            acc.inlineStyles[property] = resolvers[propertyData.type](baseValue, theme);\n          });\n\n          return acc;\n        }\n\n        acc.hasResponsiveStyles = true;\n\n        const breakpoints = getBreakpointKeys(styleProps[styleProp]);\n\n        properties.forEach((property) => {\n          if (baseValue) {\n            acc.styles[property] = resolvers[propertyData.type](baseValue, theme);\n          }\n\n          breakpoints.forEach((breakpoint) => {\n            const bp = `(min-width: ${theme.breakpoints[breakpoint]})`;\n            acc.media[bp] = {\n              ...acc.media[bp],\n              [property]: resolvers[propertyData.type](\n                getBreakpointValue(styleProps[styleProp], breakpoint),\n                theme\n              ),\n            };\n          });\n        });\n\n        return acc;\n      },\n      {\n        hasResponsiveStyles: false,\n        styles: {},\n        inlineStyles: {},\n        media: {},\n      }\n    )\n  );\n}\n"],"names":["keys","sortMediaQueries","resolvers"],"mappings":";;;;;;;;;AAOA,SAAS,oBAAoB,SAA+B,EAAA;AAC1D,EAAA,IAAI,OAAO,SAAA,KAAc,QAAY,IAAA,SAAA,KAAc,IAAM,EAAA;AACvD,IAAO,OAAA,KAAA;AAAA;AAGT,EAAM,MAAA,WAAA,GAAc,MAAO,CAAA,IAAA,CAAK,SAAS,CAAA;AAEzC,EAAA,IAAI,YAAY,MAAW,KAAA,CAAA,IAAK,WAAY,CAAA,CAAC,MAAM,MAAQ,EAAA;AACzD,IAAO,OAAA,KAAA;AAAA;AAGT,EAAO,OAAA,IAAA;AACT;AAEA,SAAS,aAAa,KAA2B,EAAA;AAC/C,EAAA,IAAI,OAAO,KAAA,KAAU,QAAY,IAAA,KAAA,KAAU,IAAM,EAAA;AAC/C,IAAA,IAAI,UAAU,KAAO,EAAA;AACnB,MAAA,OAAO,KAAM,CAAA,IAAA;AAAA;AAGf,IAAO,OAAA,KAAA,CAAA;AAAA;AAGT,EAAO,OAAA,KAAA;AACT;AAEA,SAAS,kBAAkB,KAA2B,EAAA;AACpD,EAAA,IAAI,OAAO,KAAA,KAAU,QAAY,IAAA,KAAA,KAAU,IAAM,EAAA;AAC/C,IAAA,OAAOA,UAAK,KAAK,CAAA,CAAE,OAAO,CAAC,GAAA,KAAQ,QAAQ,MAAM,CAAA;AAAA;AAGnD,EAAA,OAAO,EAAC;AACV;AAEA,SAAS,kBAAA,CAAmB,OAA2B,UAAoB,EAAA;AACzE,EAAA,IAAI,OAAO,KAAU,KAAA,QAAA,IAAY,KAAU,KAAA,IAAA,IAAQ,cAAc,KAAO,EAAA;AACtE,IAAA,OAAO,MAAM,UAAgC,CAAA;AAAA;AAG/C,EAAO,OAAA,KAAA;AACT;AAeO,SAAS,eAAgB,CAAA;AAAA,EAC9B,UAAA;AAAA,EACA,IAAA;AAAA,EACA;AACF,CAAmD,EAAA;AACjD,EAAO,OAAAC,iCAAA;AAAA,IACLD,SAAA,CAAK,UAAU,CAAE,CAAA,MAAA;AAAA,MAMf,CAAC,KAAK,SAAc,KAAA;AAClB,QAAA,IACG,SAAyB,KAAA,YAAA,IACzB,SAAyB,KAAA,aAAA,IACzB,cAAyB,KAC1B,EAAA;AACA,UAAO,OAAA,GAAA;AAAA;AAGT,QAAM,MAAA,YAAA,GAAe,KAAK,SAAS,CAAA;AACnC,QAAM,MAAA,UAAA,GAAa,KAAM,CAAA,OAAA,CAAQ,YAAa,CAAA,QAAQ,IAClD,YAAa,CAAA,QAAA,GACb,CAAC,YAAA,CAAa,QAAQ,CAAA;AAC1B,QAAA,MAAM,SAAY,GAAA,YAAA,CAAa,UAAW,CAAA,SAAS,CAAC,CAAA;AAEpD,QAAA,IAAI,CAAC,mBAAA,CAAoB,UAAW,CAAA,SAAS,CAAC,CAAG,EAAA;AAC/C,UAAW,UAAA,CAAA,OAAA,CAAQ,CAAC,QAAa,KAAA;AAC/B,YAAI,GAAA,CAAA,YAAA,CAAa,QAAQ,CAAI,GAAAE,eAAA,CAAU,aAAa,IAAI,CAAA,CAAE,WAAW,KAAK,CAAA;AAAA,WAC3E,CAAA;AAED,UAAO,OAAA,GAAA;AAAA;AAGT,QAAA,GAAA,CAAI,mBAAsB,GAAA,IAAA;AAE1B,QAAA,MAAM,WAAc,GAAA,iBAAA,CAAkB,UAAW,CAAA,SAAS,CAAC,CAAA;AAE3D,QAAW,UAAA,CAAA,OAAA,CAAQ,CAAC,QAAa,KAAA;AAC/B,UAAA,IAAI,SAAW,EAAA;AACb,YAAI,GAAA,CAAA,MAAA,CAAO,QAAQ,CAAI,GAAAA,eAAA,CAAU,aAAa,IAAI,CAAA,CAAE,WAAW,KAAK,CAAA;AAAA;AAGtE,UAAY,WAAA,CAAA,OAAA,CAAQ,CAAC,UAAe,KAAA;AAClC,YAAA,MAAM,EAAK,GAAA,CAAA,YAAA,EAAe,KAAM,CAAA,WAAA,CAAY,UAAU,CAAC,CAAA,CAAA,CAAA;AACvD,YAAI,GAAA,CAAA,KAAA,CAAM,EAAE,CAAI,GAAA;AAAA,cACd,GAAG,GAAI,CAAA,KAAA,CAAM,EAAE,CAAA;AAAA,cACf,CAAC,QAAQ,GAAGA,eAAA,CAAU,aAAa,IAAI,CAAA;AAAA,gBACrC,kBAAmB,CAAA,UAAA,CAAW,SAAS,CAAA,EAAG,UAAU,CAAA;AAAA,gBACpD;AAAA;AACF,aACF;AAAA,WACD,CAAA;AAAA,SACF,CAAA;AAED,QAAO,OAAA,GAAA;AAAA,OACT;AAAA,MACA;AAAA,QACE,mBAAqB,EAAA,KAAA;AAAA,QACrB,QAAQ,EAAC;AAAA,QACT,cAAc,EAAC;AAAA,QACf,OAAO;AAAC;AACV;AACF,GACF;AACF;;;;"}