@audira/carbon-react-native
Version:
Build React Native apps with component and shared patterns using Carbon
86 lines (85 loc) • 3 kB
JavaScript
;
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