UNPKG

@audira/carbon-react-native

Version:

Build React Native apps with component and shared patterns using Carbon

82 lines (81 loc) 2.69 kB
"use strict"; import { forwardRef, useContext } from 'react'; import { StyleSheet, Text as Core } from 'react-native'; import { Typography } from '@audira/carbon-react-native-elements'; import { GlobalConfigContext } from "../../_internal/contexts/index.js"; import { CommonStyleSheet, TextStyleSheet } from "../../_internal/style-sheets/index.js"; import { CarbonStyleSheet } from "../../carbon-style-sheet/index.js"; import { ThemeContext } from "../../contexts/index.js"; import { jsx as _jsx } from "react/jsx-runtime"; export const Text = /*#__PURE__*/forwardRef(function Text_({ type, italic = false, weight, style, dir, ...props }, ref) { useContext(ThemeContext); const globalConfigContext = useContext(GlobalConfigContext); return /*#__PURE__*/_jsx(Core, { ...props, dir: dir ?? globalConfigContext.rtl ? 'rtl' : undefined, style: [carbonStyle.text, getFontStyle(type, italic, weight), globalConfigContext.rtl ? CommonStyleSheet.rtl : undefined, style], ref: ref }); }); const mapFamilyStyle = { 100: TextStyleSheet.thin, 200: TextStyleSheet.extralight, 300: TextStyleSheet.light, 400: TextStyleSheet.normal, 500: TextStyleSheet.medium, 600: TextStyleSheet.semibold, 700: TextStyleSheet.bold, 800: TextStyleSheet.bold, 900: TextStyleSheet.bold }, mapFamilyItalicStyle = { 100: TextStyleSheet.thin_italic, 200: TextStyleSheet.extralight_italic, 300: TextStyleSheet.light_italic, 400: TextStyleSheet.normal_italic, 500: TextStyleSheet.medium_italic, 600: TextStyleSheet.semibold_italic, 700: TextStyleSheet.bold_italic, 800: TextStyleSheet.bold_italic, 900: TextStyleSheet.bold_italic }, createTypeSetsStyle = italic => { return StyleSheet.create(Object.entries(Typography.TypeSets).reduce((accumulator, [key_, val]) => { const key = key_; accumulator[key] = { ...val, ...(italic ? mapFamilyItalicStyle[val.fontWeight] : mapFamilyStyle[val.fontWeight]) }; return accumulator; }, {})); }, carbonStyle = CarbonStyleSheet.create({ text: { color: CarbonStyleSheet.color.text_primary } }), typeSetsStyle = createTypeSetsStyle(), typeSetsItalicStyle = createTypeSetsStyle(true); function getFontStyle(type, italic, overrideWeight) { if (!type) { return null; } if (italic && overrideWeight) { return [typeSetsItalicStyle[type], mapFamilyItalicStyle[overrideWeight]]; } if (italic) { return typeSetsItalicStyle[type]; } if (overrideWeight) { return [typeSetsStyle[type], mapFamilyStyle[overrideWeight]]; } return typeSetsStyle[type]; } //# sourceMappingURL=Text.js.map