@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.
Files changed (123) hide show
  1. package/README.md +4 -0
  2. package/lib/commonjs/components/Image/FastImageInternal.js +13 -0
  3. package/lib/commonjs/components/Image/FastImageInternal.js.map +1 -0
  4. package/lib/commonjs/components/Image/Image.fastimage.js +2 -5
  5. package/lib/commonjs/components/Image/Image.fastimage.js.map +1 -1
  6. package/lib/commonjs/components/ImageWithPlaceholder/index.js +7 -1
  7. package/lib/commonjs/components/ImageWithPlaceholder/index.js.map +1 -1
  8. package/lib/commonjs/components/RegexText/index.js.map +1 -1
  9. package/lib/commonjs/index.js +8 -8
  10. package/lib/commonjs/index.js.map +1 -1
  11. package/lib/commonjs/types.js.map +1 -1
  12. package/lib/commonjs/ui/Avatar/AvatarGroup.js +1 -1
  13. package/lib/commonjs/ui/Avatar/AvatarGroup.js.map +1 -1
  14. package/lib/commonjs/ui/GroupChannelMessage/Message.admin.js +37 -0
  15. package/lib/commonjs/ui/GroupChannelMessage/Message.admin.js.map +1 -0
  16. package/lib/commonjs/ui/GroupChannelMessage/Message.file.image.js +54 -0
  17. package/lib/commonjs/ui/GroupChannelMessage/Message.file.image.js.map +1 -0
  18. package/lib/commonjs/ui/GroupChannelMessage/Message.file.js +80 -0
  19. package/lib/commonjs/ui/GroupChannelMessage/Message.file.js.map +1 -0
  20. package/lib/commonjs/ui/GroupChannelMessage/Message.file.video.js +120 -0
  21. package/lib/commonjs/ui/GroupChannelMessage/Message.file.video.js.map +1 -0
  22. package/lib/commonjs/ui/GroupChannelMessage/Message.unknown.js +54 -0
  23. package/lib/commonjs/ui/GroupChannelMessage/Message.unknown.js.map +1 -0
  24. package/lib/commonjs/ui/GroupChannelMessage/Message.user.js +44 -0
  25. package/lib/commonjs/ui/GroupChannelMessage/Message.user.js.map +1 -0
  26. package/lib/commonjs/ui/GroupChannelMessage/Message.user.og.js +59 -0
  27. package/lib/commonjs/ui/GroupChannelMessage/Message.user.og.js.map +1 -0
  28. package/lib/commonjs/ui/GroupChannelMessage/MessageBubbleWithText.js +74 -0
  29. package/lib/commonjs/ui/GroupChannelMessage/MessageBubbleWithText.js.map +1 -0
  30. package/lib/commonjs/ui/GroupChannelMessage/MessageContainer.js +110 -0
  31. package/lib/commonjs/ui/GroupChannelMessage/MessageContainer.js.map +1 -0
  32. package/lib/commonjs/ui/GroupChannelMessage/MessageOpenGraph.js +91 -0
  33. package/lib/commonjs/ui/GroupChannelMessage/MessageOpenGraph.js.map +1 -0
  34. package/lib/commonjs/ui/GroupChannelMessage/index.js +26 -0
  35. package/lib/commonjs/ui/GroupChannelMessage/index.js.map +1 -0
  36. package/lib/commonjs/ui/OpenChannelMessage/Message.user.js +1 -1
  37. package/lib/commonjs/ui/OpenChannelMessage/Message.user.js.map +1 -1
  38. package/lib/commonjs/ui/OpenChannelMessage/Message.user.og.js +5 -2
  39. package/lib/commonjs/ui/OpenChannelMessage/Message.user.og.js.map +1 -1
  40. package/lib/commonjs/ui/OpenChannelMessage/index.js.map +1 -1
  41. package/lib/module/components/Image/FastImageInternal.js +6 -0
  42. package/lib/module/components/Image/FastImageInternal.js.map +1 -0
  43. package/lib/module/components/Image/Image.fastimage.js +2 -5
  44. package/lib/module/components/Image/Image.fastimage.js.map +1 -1
  45. package/lib/module/components/ImageWithPlaceholder/index.js +7 -1
  46. package/lib/module/components/ImageWithPlaceholder/index.js.map +1 -1
  47. package/lib/module/components/RegexText/index.js.map +1 -1
  48. package/lib/module/index.js +2 -2
  49. package/lib/module/index.js.map +1 -1
  50. package/lib/module/types.js.map +1 -1
  51. package/lib/module/ui/Avatar/AvatarGroup.js +1 -1
  52. package/lib/module/ui/Avatar/AvatarGroup.js.map +1 -1
  53. package/lib/module/ui/GroupChannelMessage/Message.admin.js +29 -0
  54. package/lib/module/ui/GroupChannelMessage/Message.admin.js.map +1 -0
  55. package/lib/module/ui/GroupChannelMessage/Message.file.image.js +46 -0
  56. package/lib/module/ui/GroupChannelMessage/Message.file.image.js.map +1 -0
  57. package/lib/module/ui/GroupChannelMessage/Message.file.js +72 -0
  58. package/lib/module/ui/GroupChannelMessage/Message.file.js.map +1 -0
  59. package/lib/module/ui/GroupChannelMessage/Message.file.video.js +110 -0
  60. package/lib/module/ui/GroupChannelMessage/Message.file.video.js.map +1 -0
  61. package/lib/module/ui/GroupChannelMessage/Message.unknown.js +46 -0
  62. package/lib/module/ui/GroupChannelMessage/Message.unknown.js.map +1 -0
  63. package/lib/module/ui/GroupChannelMessage/Message.user.js +36 -0
  64. package/lib/module/ui/GroupChannelMessage/Message.user.js.map +1 -0
  65. package/lib/module/ui/GroupChannelMessage/Message.user.og.js +51 -0
  66. package/lib/module/ui/GroupChannelMessage/Message.user.og.js.map +1 -0
  67. package/lib/module/ui/GroupChannelMessage/MessageBubbleWithText.js +66 -0
  68. package/lib/module/ui/GroupChannelMessage/MessageBubbleWithText.js.map +1 -0
  69. package/lib/module/ui/GroupChannelMessage/MessageContainer.js +102 -0
  70. package/lib/module/ui/GroupChannelMessage/MessageContainer.js.map +1 -0
  71. package/lib/module/ui/GroupChannelMessage/MessageOpenGraph.js +83 -0
  72. package/lib/module/ui/GroupChannelMessage/MessageOpenGraph.js.map +1 -0
  73. package/lib/module/ui/GroupChannelMessage/index.js +18 -0
  74. package/lib/module/ui/GroupChannelMessage/index.js.map +1 -0
  75. package/lib/module/ui/OpenChannelMessage/Message.user.js +1 -1
  76. package/lib/module/ui/OpenChannelMessage/Message.user.js.map +1 -1
  77. package/lib/module/ui/OpenChannelMessage/Message.user.og.js +5 -2
  78. package/lib/module/ui/OpenChannelMessage/Message.user.og.js.map +1 -1
  79. package/lib/module/ui/OpenChannelMessage/index.js.map +1 -1
  80. package/lib/typescript/src/components/Image/FastImageInternal.d.ts +3 -0
  81. package/lib/typescript/src/components/RegexText/index.d.ts +2 -2
  82. package/lib/typescript/src/index.d.ts +4 -2
  83. package/lib/typescript/src/types.d.ts +1 -9
  84. package/lib/typescript/src/ui/GroupChannelMessage/Message.admin.d.ts +4 -0
  85. package/lib/typescript/src/ui/GroupChannelMessage/Message.file.d.ts +5 -0
  86. package/lib/typescript/src/ui/GroupChannelMessage/Message.file.image.d.ts +4 -0
  87. package/lib/typescript/src/ui/GroupChannelMessage/Message.file.video.d.ts +9 -0
  88. package/lib/typescript/src/ui/GroupChannelMessage/Message.unknown.d.ts +4 -0
  89. package/lib/typescript/src/ui/GroupChannelMessage/Message.user.d.ts +9 -0
  90. package/lib/typescript/src/ui/GroupChannelMessage/Message.user.og.d.ts +9 -0
  91. package/lib/typescript/src/ui/GroupChannelMessage/MessageBubbleWithText.d.ts +10 -0
  92. package/lib/typescript/src/ui/GroupChannelMessage/MessageContainer.d.ts +9 -0
  93. package/lib/typescript/src/ui/GroupChannelMessage/MessageOpenGraph.d.ts +8 -0
  94. package/lib/typescript/src/ui/GroupChannelMessage/index.d.ts +191 -0
  95. package/lib/typescript/src/ui/OpenChannelMessage/index.d.ts +7 -7
  96. package/package.json +6 -6
  97. package/src/components/Image/FastImageInternal.tsx +9 -0
  98. package/src/components/Image/Image.fastimage.tsx +2 -7
  99. package/src/components/ImageWithPlaceholder/index.tsx +3 -2
  100. package/src/components/RegexText/index.tsx +2 -2
  101. package/src/index.ts +5 -2
  102. package/src/types.ts +1 -11
  103. package/src/ui/Avatar/AvatarGroup.tsx +1 -1
  104. package/src/ui/GroupChannelMessage/Message.admin.tsx +34 -0
  105. package/src/ui/GroupChannelMessage/Message.file.image.tsx +45 -0
  106. package/src/ui/GroupChannelMessage/Message.file.tsx +70 -0
  107. package/src/ui/GroupChannelMessage/Message.file.video.tsx +106 -0
  108. package/src/ui/GroupChannelMessage/Message.unknown.tsx +47 -0
  109. package/src/ui/GroupChannelMessage/Message.user.og.tsx +62 -0
  110. package/src/ui/GroupChannelMessage/Message.user.tsx +49 -0
  111. package/src/ui/GroupChannelMessage/MessageBubbleWithText.tsx +80 -0
  112. package/src/ui/GroupChannelMessage/MessageContainer.tsx +106 -0
  113. package/src/ui/GroupChannelMessage/MessageOpenGraph.tsx +84 -0
  114. package/src/ui/GroupChannelMessage/index.ts +48 -0
  115. package/src/ui/OpenChannelMessage/Message.user.og.tsx +6 -2
  116. package/src/ui/OpenChannelMessage/Message.user.tsx +1 -1
  117. package/src/ui/OpenChannelMessage/index.ts +1 -1
  118. package/lib/commonjs/components/URLParsedText/index.js +0 -46
  119. package/lib/commonjs/components/URLParsedText/index.js.map +0 -1
  120. package/lib/module/components/URLParsedText/index.js +0 -38
  121. package/lib/module/components/URLParsedText/index.js.map +0 -1
  122. package/lib/typescript/src/components/URLParsedText/index.d.ts +0 -8
  123. 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;