Emoji handling nested (#5609)
This commit is contained in:
@@ -53,11 +53,14 @@ export function childIsString(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function renderChildrenWithEmoji(children: StringChild) {
|
export function renderChildrenWithEmoji(
|
||||||
|
children: StringChild,
|
||||||
|
props: Omit<TextProps, 'children'> = {},
|
||||||
|
) {
|
||||||
const normalized = Array.isArray(children) ? children : [children]
|
const normalized = Array.isArray(children) ? children : [children]
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<UITextView>
|
<UITextView {...props}>
|
||||||
{normalized.map(child => {
|
{normalized.map(child => {
|
||||||
if (typeof child !== 'string') return child
|
if (typeof child !== 'string') return child
|
||||||
|
|
||||||
@@ -68,10 +71,12 @@ export function renderChildrenWithEmoji(children: StringChild) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return child.split(EMOJI).map((stringPart, index) => (
|
return child.split(EMOJI).map((stringPart, index) => (
|
||||||
<UITextView key={index}>
|
<UITextView key={index} {...props}>
|
||||||
{stringPart}
|
{stringPart}
|
||||||
{emojis[index] ? (
|
{emojis[index] ? (
|
||||||
<UITextView style={{color: 'black', fontFamily: 'System'}}>
|
<UITextView
|
||||||
|
{...props}
|
||||||
|
style={[props?.style, {color: 'black', fontFamily: 'System'}]}>
|
||||||
{emojis[index]}
|
{emojis[index]}
|
||||||
</UITextView>
|
</UITextView>
|
||||||
) : null}
|
) : null}
|
||||||
@@ -163,15 +168,17 @@ export function Text({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const shared = {
|
||||||
|
uiTextView: true,
|
||||||
|
selectable,
|
||||||
|
style: s,
|
||||||
|
dataSet: Object.assign({tooltip: title}, dataSet || {}),
|
||||||
|
...rest,
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<UITextView
|
<UITextView {...shared}>
|
||||||
selectable={selectable}
|
{isIOS && emoji ? renderChildrenWithEmoji(children, shared) : children}
|
||||||
uiTextView
|
|
||||||
style={s}
|
|
||||||
{...rest}
|
|
||||||
// @ts-ignore
|
|
||||||
dataSet={Object.assign({tooltip: title}, dataSet || {})}>
|
|
||||||
{isIOS && emoji ? renderChildrenWithEmoji(children) : children}
|
|
||||||
</UITextView>
|
</UITextView>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ export function ViewHeader({
|
|||||||
</TouchableOpacity>
|
</TouchableOpacity>
|
||||||
) : null}
|
) : null}
|
||||||
<View style={styles.titleContainer} pointerEvents="none">
|
<View style={styles.titleContainer} pointerEvents="none">
|
||||||
<Text type="title" style={[pal.text, styles.title]}>
|
<Text emoji type="title" style={[pal.text, styles.title]}>
|
||||||
{title}
|
{title}
|
||||||
</Text>
|
</Text>
|
||||||
</View>
|
</View>
|
||||||
|
|||||||
@@ -77,13 +77,16 @@ export function Text({
|
|||||||
flattened.fontSize = flattened.fontSize * fonts.scaleMultiplier
|
flattened.fontSize = flattened.fontSize * fonts.scaleMultiplier
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const shared = {
|
||||||
|
uiTextView: true,
|
||||||
|
selectable,
|
||||||
|
style: flattened,
|
||||||
|
...props,
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<UITextView
|
<UITextView {...shared}>
|
||||||
style={flattened}
|
{isIOS && emoji ? renderChildrenWithEmoji(children, shared) : children}
|
||||||
selectable={selectable}
|
|
||||||
uiTextView
|
|
||||||
{...props}>
|
|
||||||
{isIOS && emoji ? renderChildrenWithEmoji(children) : children}
|
|
||||||
</UITextView>
|
</UITextView>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -104,14 +107,16 @@ export function Text({
|
|||||||
flattened.fontSize = flattened.fontSize * fonts.scaleMultiplier
|
flattened.fontSize = flattened.fontSize * fonts.scaleMultiplier
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const shared = {
|
||||||
|
selectable,
|
||||||
|
style: flattened,
|
||||||
|
dataSet: Object.assign({tooltip: title}, dataSet || {}),
|
||||||
|
...props,
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<RNText
|
<RNText {...shared}>
|
||||||
style={flattened}
|
{isIOS && emoji ? renderChildrenWithEmoji(children, shared) : children}
|
||||||
// @ts-ignore web only -esb
|
|
||||||
dataSet={Object.assign({tooltip: title}, dataSet || {})}
|
|
||||||
selectable={selectable}
|
|
||||||
{...props}>
|
|
||||||
{isIOS && emoji ? renderChildrenWithEmoji(children) : children}
|
|
||||||
</RNText>
|
</RNText>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user