UNPKG

@audira/carbon-react-native

Version:

Build React Native apps with component and shared patterns using Carbon

86 lines (85 loc) 3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Text = void 0; var _react = require("react"); var _reactNative = require("react-native"); var _carbonReactNativeElements = require("@audira/carbon-react-native-elements"); var _index = require("../../_internal/contexts/index.js"); var _index2 = require("../../_internal/style-sheets/index.js"); var _index3 = require("../../carbon-style-sheet/index.js"); var _index4 = require("../../contexts/index.js"); var _jsxRuntime = require("react/jsx-runtime"); const Text = exports.Text = /*#__PURE__*/(0, _react.forwardRef)(function Text_({ type, italic = false, weight, style, dir, ...props }, ref) { (0, _react.useContext)(_index4.ThemeContext); const globalConfigContext = (0, _react.useContext)(_index.GlobalConfigContext); return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, { ...props, dir: dir ?? globalConfigContext.rtl ? 'rtl' : undefined, style: [carbonStyle.text, getFontStyle(type, italic, weight), globalConfigContext.rtl ? _index2.CommonStyleSheet.rtl : undefined, style], ref: ref }); }); const mapFamilyStyle = { 100: _index2.TextStyleSheet.thin, 200: _index2.TextStyleSheet.extralight, 300: _index2.TextStyleSheet.light, 400: _index2.TextStyleSheet.normal, 500: _index2.TextStyleSheet.medium, 600: _index2.TextStyleSheet.semibold, 700: _index2.TextStyleSheet.bold, 800: _index2.TextStyleSheet.bold, 900: _index2.TextStyleSheet.bold }, mapFamilyItalicStyle = { 100: _index2.TextStyleSheet.thin_italic, 200: _index2.TextStyleSheet.extralight_italic, 300: _index2.TextStyleSheet.light_italic, 400: _index2.TextStyleSheet.normal_italic, 500: _index2.TextStyleSheet.medium_italic, 600: _index2.TextStyleSheet.semibold_italic, 700: _index2.TextStyleSheet.bold_italic, 800: _index2.TextStyleSheet.bold_italic, 900: _index2.TextStyleSheet.bold_italic }, createTypeSetsStyle = italic => { return _reactNative.StyleSheet.create(Object.entries(_carbonReactNativeElements.Typography.TypeSets).reduce((accumulator, [key_, val]) => { const key = key_; accumulator[key] = { ...val, ...(italic ? mapFamilyItalicStyle[val.fontWeight] : mapFamilyStyle[val.fontWeight]) }; return accumulator; }, {})); }, carbonStyle = _index3.CarbonStyleSheet.create({ text: { color: _index3.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