@sendbird/uikit-react-native-foundation 2.5.0 → 3.0.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/lib/commonjs/components/Image/FastImageInternal.js +13 -0
- package/lib/commonjs/components/Image/FastImageInternal.js.map +1 -0
- package/lib/commonjs/components/Image/Image.fastimage.js +2 -5
- package/lib/commonjs/components/Image/Image.fastimage.js.map +1 -1
- package/lib/commonjs/components/ImageWithPlaceholder/index.js +7 -1
- package/lib/commonjs/components/ImageWithPlaceholder/index.js.map +1 -1
- package/lib/commonjs/components/RegexText/index.js.map +1 -1
- package/lib/commonjs/index.js +8 -8
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/types.js.map +1 -1
- package/lib/commonjs/ui/Avatar/AvatarGroup.js +1 -1
- package/lib/commonjs/ui/Avatar/AvatarGroup.js.map +1 -1
- package/lib/commonjs/ui/GroupChannelMessage/Message.admin.js +37 -0
- package/lib/commonjs/ui/GroupChannelMessage/Message.admin.js.map +1 -0
- package/lib/commonjs/ui/GroupChannelMessage/Message.file.image.js +54 -0
- package/lib/commonjs/ui/GroupChannelMessage/Message.file.image.js.map +1 -0
- package/lib/commonjs/ui/GroupChannelMessage/Message.file.js +80 -0
- package/lib/commonjs/ui/GroupChannelMessage/Message.file.js.map +1 -0
- package/lib/commonjs/ui/GroupChannelMessage/Message.file.video.js +120 -0
- package/lib/commonjs/ui/GroupChannelMessage/Message.file.video.js.map +1 -0
- package/lib/commonjs/ui/GroupChannelMessage/Message.unknown.js +54 -0
- package/lib/commonjs/ui/GroupChannelMessage/Message.unknown.js.map +1 -0
- package/lib/commonjs/ui/GroupChannelMessage/Message.user.js +44 -0
- package/lib/commonjs/ui/GroupChannelMessage/Message.user.js.map +1 -0
- package/lib/commonjs/ui/GroupChannelMessage/Message.user.og.js +59 -0
- package/lib/commonjs/ui/GroupChannelMessage/Message.user.og.js.map +1 -0
- package/lib/commonjs/ui/GroupChannelMessage/MessageBubbleWithText.js +74 -0
- package/lib/commonjs/ui/GroupChannelMessage/MessageBubbleWithText.js.map +1 -0
- package/lib/commonjs/ui/GroupChannelMessage/MessageContainer.js +110 -0
- package/lib/commonjs/ui/GroupChannelMessage/MessageContainer.js.map +1 -0
- package/lib/commonjs/ui/GroupChannelMessage/MessageOpenGraph.js +91 -0
- package/lib/commonjs/ui/GroupChannelMessage/MessageOpenGraph.js.map +1 -0
- package/lib/commonjs/ui/GroupChannelMessage/index.js +26 -0
- package/lib/commonjs/ui/GroupChannelMessage/index.js.map +1 -0
- package/lib/commonjs/ui/OpenChannelMessage/Message.user.js +1 -1
- package/lib/commonjs/ui/OpenChannelMessage/Message.user.js.map +1 -1
- package/lib/commonjs/ui/OpenChannelMessage/Message.user.og.js +5 -2
- package/lib/commonjs/ui/OpenChannelMessage/Message.user.og.js.map +1 -1
- package/lib/commonjs/ui/OpenChannelMessage/index.js.map +1 -1
- package/lib/module/components/Image/FastImageInternal.js +6 -0
- package/lib/module/components/Image/FastImageInternal.js.map +1 -0
- package/lib/module/components/Image/Image.fastimage.js +2 -5
- package/lib/module/components/Image/Image.fastimage.js.map +1 -1
- package/lib/module/components/ImageWithPlaceholder/index.js +7 -1
- package/lib/module/components/ImageWithPlaceholder/index.js.map +1 -1
- package/lib/module/components/RegexText/index.js.map +1 -1
- package/lib/module/index.js +2 -2
- package/lib/module/index.js.map +1 -1
- package/lib/module/types.js.map +1 -1
- package/lib/module/ui/Avatar/AvatarGroup.js +1 -1
- package/lib/module/ui/Avatar/AvatarGroup.js.map +1 -1
- package/lib/module/ui/GroupChannelMessage/Message.admin.js +29 -0
- package/lib/module/ui/GroupChannelMessage/Message.admin.js.map +1 -0
- package/lib/module/ui/GroupChannelMessage/Message.file.image.js +46 -0
- package/lib/module/ui/GroupChannelMessage/Message.file.image.js.map +1 -0
- package/lib/module/ui/GroupChannelMessage/Message.file.js +72 -0
- package/lib/module/ui/GroupChannelMessage/Message.file.js.map +1 -0
- package/lib/module/ui/GroupChannelMessage/Message.file.video.js +110 -0
- package/lib/module/ui/GroupChannelMessage/Message.file.video.js.map +1 -0
- package/lib/module/ui/GroupChannelMessage/Message.unknown.js +46 -0
- package/lib/module/ui/GroupChannelMessage/Message.unknown.js.map +1 -0
- package/lib/module/ui/GroupChannelMessage/Message.user.js +36 -0
- package/lib/module/ui/GroupChannelMessage/Message.user.js.map +1 -0
- package/lib/module/ui/GroupChannelMessage/Message.user.og.js +51 -0
- package/lib/module/ui/GroupChannelMessage/Message.user.og.js.map +1 -0
- package/lib/module/ui/GroupChannelMessage/MessageBubbleWithText.js +66 -0
- package/lib/module/ui/GroupChannelMessage/MessageBubbleWithText.js.map +1 -0
- package/lib/module/ui/GroupChannelMessage/MessageContainer.js +102 -0
- package/lib/module/ui/GroupChannelMessage/MessageContainer.js.map +1 -0
- package/lib/module/ui/GroupChannelMessage/MessageOpenGraph.js +83 -0
- package/lib/module/ui/GroupChannelMessage/MessageOpenGraph.js.map +1 -0
- package/lib/module/ui/GroupChannelMessage/index.js +18 -0
- package/lib/module/ui/GroupChannelMessage/index.js.map +1 -0
- package/lib/module/ui/OpenChannelMessage/Message.user.js +1 -1
- package/lib/module/ui/OpenChannelMessage/Message.user.js.map +1 -1
- package/lib/module/ui/OpenChannelMessage/Message.user.og.js +5 -2
- package/lib/module/ui/OpenChannelMessage/Message.user.og.js.map +1 -1
- package/lib/module/ui/OpenChannelMessage/index.js.map +1 -1
- package/lib/typescript/src/components/Image/FastImageInternal.d.ts +3 -0
- package/lib/typescript/src/components/RegexText/index.d.ts +2 -2
- package/lib/typescript/src/index.d.ts +4 -2
- package/lib/typescript/src/types.d.ts +1 -9
- package/lib/typescript/src/ui/GroupChannelMessage/Message.admin.d.ts +4 -0
- package/lib/typescript/src/ui/GroupChannelMessage/Message.file.d.ts +5 -0
- package/lib/typescript/src/ui/GroupChannelMessage/Message.file.image.d.ts +4 -0
- package/lib/typescript/src/ui/GroupChannelMessage/Message.file.video.d.ts +9 -0
- package/lib/typescript/src/ui/GroupChannelMessage/Message.unknown.d.ts +4 -0
- package/lib/typescript/src/ui/GroupChannelMessage/Message.user.d.ts +9 -0
- package/lib/typescript/src/ui/GroupChannelMessage/Message.user.og.d.ts +9 -0
- package/lib/typescript/src/ui/GroupChannelMessage/MessageBubbleWithText.d.ts +10 -0
- package/lib/typescript/src/ui/GroupChannelMessage/MessageContainer.d.ts +9 -0
- package/lib/typescript/src/ui/GroupChannelMessage/MessageOpenGraph.d.ts +8 -0
- package/lib/typescript/src/ui/GroupChannelMessage/index.d.ts +191 -0
- package/lib/typescript/src/ui/OpenChannelMessage/index.d.ts +7 -7
- package/package.json +6 -6
- package/src/components/Image/FastImageInternal.tsx +9 -0
- package/src/components/Image/Image.fastimage.tsx +2 -7
- package/src/components/ImageWithPlaceholder/index.tsx +3 -2
- package/src/components/RegexText/index.tsx +2 -2
- package/src/index.ts +5 -2
- package/src/types.ts +1 -11
- package/src/ui/Avatar/AvatarGroup.tsx +1 -1
- package/src/ui/GroupChannelMessage/Message.admin.tsx +34 -0
- package/src/ui/GroupChannelMessage/Message.file.image.tsx +45 -0
- package/src/ui/GroupChannelMessage/Message.file.tsx +70 -0
- package/src/ui/GroupChannelMessage/Message.file.video.tsx +106 -0
- package/src/ui/GroupChannelMessage/Message.unknown.tsx +47 -0
- package/src/ui/GroupChannelMessage/Message.user.og.tsx +62 -0
- package/src/ui/GroupChannelMessage/Message.user.tsx +49 -0
- package/src/ui/GroupChannelMessage/MessageBubbleWithText.tsx +80 -0
- package/src/ui/GroupChannelMessage/MessageContainer.tsx +106 -0
- package/src/ui/GroupChannelMessage/MessageOpenGraph.tsx +84 -0
- package/src/ui/GroupChannelMessage/index.ts +48 -0
- package/src/ui/OpenChannelMessage/Message.user.og.tsx +6 -2
- package/src/ui/OpenChannelMessage/Message.user.tsx +1 -1
- package/src/ui/OpenChannelMessage/index.ts +1 -1
- package/lib/commonjs/components/URLParsedText/index.js +0 -46
- package/lib/commonjs/components/URLParsedText/index.js.map +0 -1
- package/lib/module/components/URLParsedText/index.js +0 -38
- package/lib/module/components/URLParsedText/index.js.map +0 -1
- package/lib/typescript/src/components/URLParsedText/index.d.ts +0 -8
- package/src/components/URLParsedText/index.tsx +0 -50
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_uikitUtils","_createStyleSheet","_Text","obj","__esModule","default","_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","openUrl","url","httpProtocol","targetUrl","Linking","openURL","catch","err","Logger","warn","URLParsedText","_ref","children","onPressUrl","strict","props","parsedChildren","React","Children","map","toArray","child","replaceUrlAsComponents","createElement","suppressHighlighting","onPress","startsWith","style","styles","createStyleSheet","textDecorationLine","_default","exports"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { Linking } from 'react-native';\n\nimport { Logger, replaceUrlAsComponents } from '@sendbird/uikit-utils';\n\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport type { TextProps } from '../Text';\nimport Text from '../Text';\n\ntype OnPressUrl = (url: string, httpProtocol: boolean) => void;\n\nconst openUrl: OnPressUrl = (url, httpProtocol) => {\n const targetUrl = httpProtocol ? url : 'https://' + url;\n Linking.openURL(targetUrl).catch((err) => Logger.warn('[URLParsedText]', 'Cannot open url', err));\n};\n\ntype Props = TextProps & {\n onPressUrl?: OnPressUrl;\n strict?: boolean;\n};\nconst URLParsedText = ({ children, onPressUrl = openUrl, strict, ...props }: Props) => {\n const parsedChildren = React.Children.map(React.Children.toArray(children), (child) => {\n if (typeof child === 'string') {\n return replaceUrlAsComponents(\n child,\n (url) => {\n return (\n <Text\n {...props}\n suppressHighlighting\n onPress={() => onPressUrl?.(url, url.startsWith('http'))}\n style={[props.style, styles.url]}\n >\n {url}\n </Text>\n );\n },\n strict,\n );\n }\n\n return child;\n });\n\n return <Text {...props}>{parsedChildren}</Text>;\n};\nconst styles = createStyleSheet({\n url: { textDecorationLine: 'underline' },\n});\nexport default URLParsedText;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,WAAA,GAAAF,OAAA;AAEA,IAAAG,iBAAA,GAAAJ,sBAAA,CAAAC,OAAA;AAEA,IAAAI,KAAA,GAAAL,sBAAA,CAAAC,OAAA;AAA2B,SAAAD,uBAAAM,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,SAAA,IAAAA,QAAA,GAAAC,MAAA,CAAAC,MAAA,GAAAD,MAAA,CAAAC,MAAA,CAAAC,IAAA,eAAAC,MAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAF,CAAA,UAAAG,MAAA,GAAAF,SAAA,CAAAD,CAAA,YAAAI,GAAA,IAAAD,MAAA,QAAAP,MAAA,CAAAS,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAJ,MAAA,EAAAC,GAAA,KAAAL,MAAA,CAAAK,GAAA,IAAAD,MAAA,CAAAC,GAAA,gBAAAL,MAAA,YAAAJ,QAAA,CAAAa,KAAA,OAAAP,SAAA;AAI3B,MAAMQ,OAAmB,GAAGA,CAACC,GAAG,EAAEC,YAAY,KAAK;EACjD,MAAMC,SAAS,GAAGD,YAAY,GAAGD,GAAG,GAAG,UAAU,GAAGA,GAAG;EACvDG,oBAAO,CAACC,OAAO,CAACF,SAAS,CAAC,CAACG,KAAK,CAAEC,GAAG,IAAKC,kBAAM,CAACC,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,EAAEF,GAAG,CAAC,CAAC;AACnG,CAAC;AAMD,MAAMG,aAAa,GAAGC,IAAA,IAAiE;EAAA,IAAhE;IAAEC,QAAQ;IAAEC,UAAU,GAAGb,OAAO;IAAEc,MAAM;IAAE,GAAGC;EAAa,CAAC,GAAAJ,IAAA;EAChF,MAAMK,cAAc,GAAGC,cAAK,CAACC,QAAQ,CAACC,GAAG,CAACF,cAAK,CAACC,QAAQ,CAACE,OAAO,CAACR,QAAQ,CAAC,EAAGS,KAAK,IAAK;IACrF,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MAC7B,OAAO,IAAAC,kCAAsB,EAC3BD,KAAK,EACJpB,GAAG,IAAK;QACP,oBACEzB,MAAA,CAAAS,OAAA,CAAAsC,aAAA,CAACzC,KAAA,CAAAG,OAAI,EAAAC,QAAA,KACC6B,KAAK;UACTS,oBAAoB;UACpBC,OAAO,EAAEA,CAAA,KAAMZ,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAGZ,GAAG,EAAEA,GAAG,CAACyB,UAAU,CAAC,MAAM,CAAC,CAAE;UACzDC,KAAK,EAAE,CAACZ,KAAK,CAACY,KAAK,EAAEC,MAAM,CAAC3B,GAAG;QAAE,IAEhCA,GAAG,CACC;MAEX,CAAC,EACDa,MAAM,CACP;IACH;IAEA,OAAOO,KAAK;EACd,CAAC,CAAC;EAEF,oBAAO7C,MAAA,CAAAS,OAAA,CAAAsC,aAAA,CAACzC,KAAA,CAAAG,OAAI,EAAK8B,KAAK,EAAGC,cAAc,CAAQ;AACjD,CAAC;AACD,MAAMY,MAAM,GAAG,IAAAC,yBAAgB,EAAC;EAC9B5B,GAAG,EAAE;IAAE6B,kBAAkB,EAAE;EAAY;AACzC,CAAC,CAAC;AAAC,IAAAC,QAAA,GACYrB,aAAa;AAAAsB,OAAA,CAAA/C,OAAA,GAAA8C,QAAA"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
2
|
-
import React from 'react';
|
|
3
|
-
import { Linking } from 'react-native';
|
|
4
|
-
import { Logger, replaceUrlAsComponents } from '@sendbird/uikit-utils';
|
|
5
|
-
import createStyleSheet from '../../styles/createStyleSheet';
|
|
6
|
-
import Text from '../Text';
|
|
7
|
-
const openUrl = (url, httpProtocol) => {
|
|
8
|
-
const targetUrl = httpProtocol ? url : 'https://' + url;
|
|
9
|
-
Linking.openURL(targetUrl).catch(err => Logger.warn('[URLParsedText]', 'Cannot open url', err));
|
|
10
|
-
};
|
|
11
|
-
const URLParsedText = _ref => {
|
|
12
|
-
let {
|
|
13
|
-
children,
|
|
14
|
-
onPressUrl = openUrl,
|
|
15
|
-
strict,
|
|
16
|
-
...props
|
|
17
|
-
} = _ref;
|
|
18
|
-
const parsedChildren = React.Children.map(React.Children.toArray(children), child => {
|
|
19
|
-
if (typeof child === 'string') {
|
|
20
|
-
return replaceUrlAsComponents(child, url => {
|
|
21
|
-
return /*#__PURE__*/React.createElement(Text, _extends({}, props, {
|
|
22
|
-
suppressHighlighting: true,
|
|
23
|
-
onPress: () => onPressUrl === null || onPressUrl === void 0 ? void 0 : onPressUrl(url, url.startsWith('http')),
|
|
24
|
-
style: [props.style, styles.url]
|
|
25
|
-
}), url);
|
|
26
|
-
}, strict);
|
|
27
|
-
}
|
|
28
|
-
return child;
|
|
29
|
-
});
|
|
30
|
-
return /*#__PURE__*/React.createElement(Text, props, parsedChildren);
|
|
31
|
-
};
|
|
32
|
-
const styles = createStyleSheet({
|
|
33
|
-
url: {
|
|
34
|
-
textDecorationLine: 'underline'
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
export default URLParsedText;
|
|
38
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["React","Linking","Logger","replaceUrlAsComponents","createStyleSheet","Text","openUrl","url","httpProtocol","targetUrl","openURL","catch","err","warn","URLParsedText","_ref","children","onPressUrl","strict","props","parsedChildren","Children","map","toArray","child","createElement","_extends","suppressHighlighting","onPress","startsWith","style","styles","textDecorationLine"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { Linking } from 'react-native';\n\nimport { Logger, replaceUrlAsComponents } from '@sendbird/uikit-utils';\n\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport type { TextProps } from '../Text';\nimport Text from '../Text';\n\ntype OnPressUrl = (url: string, httpProtocol: boolean) => void;\n\nconst openUrl: OnPressUrl = (url, httpProtocol) => {\n const targetUrl = httpProtocol ? url : 'https://' + url;\n Linking.openURL(targetUrl).catch((err) => Logger.warn('[URLParsedText]', 'Cannot open url', err));\n};\n\ntype Props = TextProps & {\n onPressUrl?: OnPressUrl;\n strict?: boolean;\n};\nconst URLParsedText = ({ children, onPressUrl = openUrl, strict, ...props }: Props) => {\n const parsedChildren = React.Children.map(React.Children.toArray(children), (child) => {\n if (typeof child === 'string') {\n return replaceUrlAsComponents(\n child,\n (url) => {\n return (\n <Text\n {...props}\n suppressHighlighting\n onPress={() => onPressUrl?.(url, url.startsWith('http'))}\n style={[props.style, styles.url]}\n >\n {url}\n </Text>\n );\n },\n strict,\n );\n }\n\n return child;\n });\n\n return <Text {...props}>{parsedChildren}</Text>;\n};\nconst styles = createStyleSheet({\n url: { textDecorationLine: 'underline' },\n});\nexport default URLParsedText;\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,OAAO,QAAQ,cAAc;AAEtC,SAASC,MAAM,EAAEC,sBAAsB,QAAQ,uBAAuB;AAEtE,OAAOC,gBAAgB,MAAM,+BAA+B;AAE5D,OAAOC,IAAI,MAAM,SAAS;AAI1B,MAAMC,OAAmB,GAAGA,CAACC,GAAG,EAAEC,YAAY,KAAK;EACjD,MAAMC,SAAS,GAAGD,YAAY,GAAGD,GAAG,GAAG,UAAU,GAAGA,GAAG;EACvDN,OAAO,CAACS,OAAO,CAACD,SAAS,CAAC,CAACE,KAAK,CAAEC,GAAG,IAAKV,MAAM,CAACW,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,EAAED,GAAG,CAAC,CAAC;AACnG,CAAC;AAMD,MAAME,aAAa,GAAGC,IAAA,IAAiE;EAAA,IAAhE;IAAEC,QAAQ;IAAEC,UAAU,GAAGX,OAAO;IAAEY,MAAM;IAAE,GAAGC;EAAa,CAAC,GAAAJ,IAAA;EAChF,MAAMK,cAAc,GAAGpB,KAAK,CAACqB,QAAQ,CAACC,GAAG,CAACtB,KAAK,CAACqB,QAAQ,CAACE,OAAO,CAACP,QAAQ,CAAC,EAAGQ,KAAK,IAAK;IACrF,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MAC7B,OAAOrB,sBAAsB,CAC3BqB,KAAK,EACJjB,GAAG,IAAK;QACP,oBACEP,KAAA,CAAAyB,aAAA,CAACpB,IAAI,EAAAqB,QAAA,KACCP,KAAK;UACTQ,oBAAoB;UACpBC,OAAO,EAAEA,CAAA,KAAMX,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAGV,GAAG,EAAEA,GAAG,CAACsB,UAAU,CAAC,MAAM,CAAC,CAAE;UACzDC,KAAK,EAAE,CAACX,KAAK,CAACW,KAAK,EAAEC,MAAM,CAACxB,GAAG;QAAE,IAEhCA,GAAG,CACC;MAEX,CAAC,EACDW,MAAM,CACP;IACH;IAEA,OAAOM,KAAK;EACd,CAAC,CAAC;EAEF,oBAAOxB,KAAA,CAAAyB,aAAA,CAACpB,IAAI,EAAKc,KAAK,EAAGC,cAAc,CAAQ;AACjD,CAAC;AACD,MAAMW,MAAM,GAAG3B,gBAAgB,CAAC;EAC9BG,GAAG,EAAE;IAAEyB,kBAAkB,EAAE;EAAY;AACzC,CAAC,CAAC;AACF,eAAelB,aAAa"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { TextProps } from '../Text';
|
|
2
|
-
type OnPressUrl = (url: string, httpProtocol: boolean) => void;
|
|
3
|
-
type Props = TextProps & {
|
|
4
|
-
onPressUrl?: OnPressUrl;
|
|
5
|
-
strict?: boolean;
|
|
6
|
-
};
|
|
7
|
-
declare const URLParsedText: ({ children, onPressUrl, strict, ...props }: Props) => JSX.Element;
|
|
8
|
-
export default URLParsedText;
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { Linking } from 'react-native';
|
|
3
|
-
|
|
4
|
-
import { Logger, replaceUrlAsComponents } from '@sendbird/uikit-utils';
|
|
5
|
-
|
|
6
|
-
import createStyleSheet from '../../styles/createStyleSheet';
|
|
7
|
-
import type { TextProps } from '../Text';
|
|
8
|
-
import Text from '../Text';
|
|
9
|
-
|
|
10
|
-
type OnPressUrl = (url: string, httpProtocol: boolean) => void;
|
|
11
|
-
|
|
12
|
-
const openUrl: OnPressUrl = (url, httpProtocol) => {
|
|
13
|
-
const targetUrl = httpProtocol ? url : 'https://' + url;
|
|
14
|
-
Linking.openURL(targetUrl).catch((err) => Logger.warn('[URLParsedText]', 'Cannot open url', err));
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
type Props = TextProps & {
|
|
18
|
-
onPressUrl?: OnPressUrl;
|
|
19
|
-
strict?: boolean;
|
|
20
|
-
};
|
|
21
|
-
const URLParsedText = ({ children, onPressUrl = openUrl, strict, ...props }: Props) => {
|
|
22
|
-
const parsedChildren = React.Children.map(React.Children.toArray(children), (child) => {
|
|
23
|
-
if (typeof child === 'string') {
|
|
24
|
-
return replaceUrlAsComponents(
|
|
25
|
-
child,
|
|
26
|
-
(url) => {
|
|
27
|
-
return (
|
|
28
|
-
<Text
|
|
29
|
-
{...props}
|
|
30
|
-
suppressHighlighting
|
|
31
|
-
onPress={() => onPressUrl?.(url, url.startsWith('http'))}
|
|
32
|
-
style={[props.style, styles.url]}
|
|
33
|
-
>
|
|
34
|
-
{url}
|
|
35
|
-
</Text>
|
|
36
|
-
);
|
|
37
|
-
},
|
|
38
|
-
strict,
|
|
39
|
-
);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
return child;
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
return <Text {...props}>{parsedChildren}</Text>;
|
|
46
|
-
};
|
|
47
|
-
const styles = createStyleSheet({
|
|
48
|
-
url: { textDecorationLine: 'underline' },
|
|
49
|
-
});
|
|
50
|
-
export default URLParsedText;
|