@sendbird/uikit-react-native-foundation 1.0.0 → 1.1.0

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 (125) hide show
  1. package/lib/commonjs/components/Image/index.js.map +1 -1
  2. package/lib/commonjs/styles/HeaderStyleContext.js +10 -2
  3. package/lib/commonjs/styles/HeaderStyleContext.js.map +1 -1
  4. package/lib/commonjs/styles/createScaleFactor.js +2 -1
  5. package/lib/commonjs/styles/createScaleFactor.js.map +1 -1
  6. package/lib/commonjs/theme/UIKitThemeProvider.js.map +1 -1
  7. package/lib/commonjs/ui/ActionMenu/index.js.map +1 -1
  8. package/lib/commonjs/ui/Alert/index.js.map +1 -1
  9. package/lib/commonjs/ui/Avatar/AvatarGroup.js.map +1 -1
  10. package/lib/commonjs/ui/Avatar/AvatarIcon.js.map +1 -1
  11. package/lib/commonjs/ui/Avatar/index.js.map +1 -1
  12. package/lib/commonjs/ui/Badge/index.js.map +1 -1
  13. package/lib/commonjs/ui/BottomSheet/index.js.map +1 -1
  14. package/lib/commonjs/ui/Button/index.js.map +1 -1
  15. package/lib/commonjs/ui/ChannelFrozenBanner/index.js.map +1 -1
  16. package/lib/commonjs/ui/Dialog/DialogBox.js.map +1 -1
  17. package/lib/commonjs/ui/Dialog/DialogSheet.js.map +1 -1
  18. package/lib/commonjs/ui/Dialog/index.js.map +1 -1
  19. package/lib/commonjs/ui/Divider/index.js.map +1 -1
  20. package/lib/commonjs/ui/GroupChannelPreview/index.js +15 -11
  21. package/lib/commonjs/ui/GroupChannelPreview/index.js.map +1 -1
  22. package/lib/commonjs/ui/Header/index.js +3 -8
  23. package/lib/commonjs/ui/Header/index.js.map +1 -1
  24. package/lib/commonjs/ui/Icon/index.js.map +1 -1
  25. package/lib/commonjs/ui/LoadingSpinner/index.js.map +1 -1
  26. package/lib/commonjs/ui/MenuBar/index.js.map +1 -1
  27. package/lib/commonjs/ui/Modal/index.js.map +1 -1
  28. package/lib/commonjs/ui/Placeholder/index.js.map +1 -1
  29. package/lib/commonjs/ui/Prompt/index.js.map +1 -1
  30. package/lib/commonjs/ui/Switch/index.js.map +1 -1
  31. package/lib/commonjs/ui/Text/index.js.map +1 -1
  32. package/lib/commonjs/ui/Toast/index.js.map +1 -1
  33. package/lib/commonjs/ui/URLParsedText/index.js.map +1 -1
  34. package/lib/module/components/Image/index.js.map +1 -1
  35. package/lib/module/styles/HeaderStyleContext.js +10 -3
  36. package/lib/module/styles/HeaderStyleContext.js.map +1 -1
  37. package/lib/module/styles/createScaleFactor.js +2 -1
  38. package/lib/module/styles/createScaleFactor.js.map +1 -1
  39. package/lib/module/theme/UIKitThemeProvider.js.map +1 -1
  40. package/lib/module/ui/ActionMenu/index.js.map +1 -1
  41. package/lib/module/ui/Alert/index.js.map +1 -1
  42. package/lib/module/ui/Avatar/AvatarGroup.js.map +1 -1
  43. package/lib/module/ui/Avatar/AvatarIcon.js.map +1 -1
  44. package/lib/module/ui/Avatar/index.js.map +1 -1
  45. package/lib/module/ui/Badge/index.js.map +1 -1
  46. package/lib/module/ui/BottomSheet/index.js.map +1 -1
  47. package/lib/module/ui/Button/index.js.map +1 -1
  48. package/lib/module/ui/ChannelFrozenBanner/index.js.map +1 -1
  49. package/lib/module/ui/Dialog/DialogBox.js.map +1 -1
  50. package/lib/module/ui/Dialog/DialogSheet.js.map +1 -1
  51. package/lib/module/ui/Dialog/index.js.map +1 -1
  52. package/lib/module/ui/Divider/index.js.map +1 -1
  53. package/lib/module/ui/GroupChannelPreview/index.js +15 -9
  54. package/lib/module/ui/GroupChannelPreview/index.js.map +1 -1
  55. package/lib/module/ui/Header/index.js +4 -8
  56. package/lib/module/ui/Header/index.js.map +1 -1
  57. package/lib/module/ui/Icon/index.js.map +1 -1
  58. package/lib/module/ui/LoadingSpinner/index.js.map +1 -1
  59. package/lib/module/ui/MenuBar/index.js.map +1 -1
  60. package/lib/module/ui/Modal/index.js.map +1 -1
  61. package/lib/module/ui/Placeholder/index.js.map +1 -1
  62. package/lib/module/ui/Prompt/index.js.map +1 -1
  63. package/lib/module/ui/Switch/index.js.map +1 -1
  64. package/lib/module/ui/Text/index.js.map +1 -1
  65. package/lib/module/ui/Toast/index.js.map +1 -1
  66. package/lib/module/ui/URLParsedText/index.js.map +1 -1
  67. package/lib/typescript/src/components/Image/index.d.ts +1 -2
  68. package/lib/typescript/src/styles/HeaderStyleContext.d.ts +2 -1
  69. package/lib/typescript/src/styles/getDefaultHeaderHeight.d.ts +1 -1
  70. package/lib/typescript/src/theme/UIKitThemeProvider.d.ts +3 -3
  71. package/lib/typescript/src/ui/ActionMenu/index.d.ts +1 -2
  72. package/lib/typescript/src/ui/Alert/index.d.ts +1 -2
  73. package/lib/typescript/src/ui/Avatar/AvatarGroup.d.ts +3 -3
  74. package/lib/typescript/src/ui/Avatar/AvatarIcon.d.ts +1 -2
  75. package/lib/typescript/src/ui/Avatar/index.d.ts +1 -2
  76. package/lib/typescript/src/ui/Badge/index.d.ts +1 -2
  77. package/lib/typescript/src/ui/BottomSheet/index.d.ts +1 -2
  78. package/lib/typescript/src/ui/Button/index.d.ts +3 -3
  79. package/lib/typescript/src/ui/ChannelFrozenBanner/index.d.ts +1 -2
  80. package/lib/typescript/src/ui/Dialog/DialogBox.d.ts +3 -3
  81. package/lib/typescript/src/ui/Dialog/DialogSheet.d.ts +4 -4
  82. package/lib/typescript/src/ui/Dialog/index.d.ts +3 -3
  83. package/lib/typescript/src/ui/Divider/index.d.ts +1 -2
  84. package/lib/typescript/src/ui/GroupChannelPreview/index.d.ts +3 -2
  85. package/lib/typescript/src/ui/Header/index.d.ts +6 -10
  86. package/lib/typescript/src/ui/Icon/index.d.ts +1 -2
  87. package/lib/typescript/src/ui/LoadingSpinner/index.d.ts +1 -2
  88. package/lib/typescript/src/ui/MenuBar/index.d.ts +1 -1
  89. package/lib/typescript/src/ui/Modal/index.d.ts +1 -2
  90. package/lib/typescript/src/ui/Placeholder/index.d.ts +1 -2
  91. package/lib/typescript/src/ui/Prompt/index.d.ts +1 -2
  92. package/lib/typescript/src/ui/Switch/index.d.ts +3 -3
  93. package/lib/typescript/src/ui/Text/index.d.ts +1 -2
  94. package/lib/typescript/src/ui/Toast/index.d.ts +5 -5
  95. package/lib/typescript/src/ui/URLParsedText/index.d.ts +1 -2
  96. package/package.json +5 -5
  97. package/src/components/Image/index.ts +1 -2
  98. package/src/styles/HeaderStyleContext.tsx +8 -3
  99. package/src/styles/createScaleFactor.ts +2 -1
  100. package/src/theme/UIKitThemeProvider.tsx +4 -2
  101. package/src/ui/ActionMenu/index.tsx +1 -1
  102. package/src/ui/Alert/index.tsx +1 -8
  103. package/src/ui/Avatar/AvatarGroup.tsx +5 -2
  104. package/src/ui/Avatar/AvatarIcon.tsx +1 -1
  105. package/src/ui/Avatar/index.tsx +12 -3
  106. package/src/ui/Badge/index.tsx +1 -1
  107. package/src/ui/BottomSheet/index.tsx +1 -1
  108. package/src/ui/Button/index.tsx +4 -4
  109. package/src/ui/ChannelFrozenBanner/index.tsx +1 -1
  110. package/src/ui/Dialog/DialogBox.tsx +3 -3
  111. package/src/ui/Dialog/DialogSheet.tsx +4 -4
  112. package/src/ui/Dialog/index.tsx +3 -3
  113. package/src/ui/Divider/index.tsx +1 -1
  114. package/src/ui/GroupChannelPreview/index.tsx +18 -9
  115. package/src/ui/Header/index.tsx +9 -17
  116. package/src/ui/Icon/index.tsx +7 -2
  117. package/src/ui/LoadingSpinner/index.tsx +2 -2
  118. package/src/ui/MenuBar/index.tsx +2 -2
  119. package/src/ui/Modal/index.tsx +2 -2
  120. package/src/ui/Placeholder/index.tsx +1 -1
  121. package/src/ui/Prompt/index.tsx +2 -2
  122. package/src/ui/Switch/index.tsx +4 -4
  123. package/src/ui/Text/index.tsx +1 -1
  124. package/src/ui/Toast/index.tsx +8 -4
  125. package/src/ui/URLParsedText/index.tsx +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["getImageModule","hasFastImage","Boolean","NativeModules","FastImageView","require","default","e"],"sources":["index.ts"],"sourcesContent":["import type React from 'react';\nimport type { ImageProps as NativeImageProps } from 'react-native';\nimport { NativeModules } from 'react-native';\n\nexport interface SendbirdImageProps extends Omit<NativeImageProps, 'onLoad' | 'onError'> {\n onLoad?: (event: { width: number; height: number }) => void;\n onError?: (event: { error?: unknown }) => void;\n tintColor?: string;\n}\n\nexport type SendbirdImageComponent = React.FC<SendbirdImageProps>;\n\nfunction getImageModule(): SendbirdImageComponent {\n const hasFastImage = Boolean(NativeModules.FastImageView);\n if (hasFastImage) {\n try {\n return require('./Image.fastimage').default;\n } catch (e) {\n return require('./Image.reactnative').default;\n }\n } else {\n return require('./Image.reactnative').default;\n }\n}\n\nexport default getImageModule();\n"],"mappings":";;;;;;;AAEA;;AAUA,SAASA,cAAT,GAAkD;EAChD,MAAMC,YAAY,GAAGC,OAAO,CAACC,0BAAA,CAAcC,aAAf,CAA5B;;EACA,IAAIH,YAAJ,EAAkB;IAChB,IAAI;MACF,OAAOI,OAAO,CAAC,mBAAD,CAAP,CAA6BC,OAApC;IACD,CAFD,CAEE,OAAOC,CAAP,EAAU;MACV,OAAOF,OAAO,CAAC,qBAAD,CAAP,CAA+BC,OAAtC;IACD;EACF,CAND,MAMO;IACL,OAAOD,OAAO,CAAC,qBAAD,CAAP,CAA+BC,OAAtC;EACD;AACF;;eAEcN,cAAc,E"}
1
+ {"version":3,"names":["getImageModule","hasFastImage","Boolean","NativeModules","FastImageView","require","default","e"],"sources":["index.ts"],"sourcesContent":["import type { ImageProps as NativeImageProps } from 'react-native';\nimport { NativeModules } from 'react-native';\n\nexport interface SendbirdImageProps extends Omit<NativeImageProps, 'onLoad' | 'onError'> {\n onLoad?: (event: { width: number; height: number }) => void;\n onError?: (event: { error?: unknown }) => void;\n tintColor?: string;\n}\n\nexport type SendbirdImageComponent = (props: SendbirdImageProps) => JSX.Element;\n\nfunction getImageModule(): SendbirdImageComponent {\n const hasFastImage = Boolean(NativeModules.FastImageView);\n if (hasFastImage) {\n try {\n return require('./Image.fastimage').default;\n } catch (e) {\n return require('./Image.reactnative').default;\n }\n } else {\n return require('./Image.reactnative').default;\n }\n}\n\nexport default getImageModule();\n"],"mappings":";;;;;;;AACA;;AAUA,SAASA,cAAT,GAAkD;EAChD,MAAMC,YAAY,GAAGC,OAAO,CAACC,0BAAA,CAAcC,aAAf,CAA5B;;EACA,IAAIH,YAAJ,EAAkB;IAChB,IAAI;MACF,OAAOI,OAAO,CAAC,mBAAD,CAAP,CAA6BC,OAApC;IACD,CAFD,CAEE,OAAOC,CAAP,EAAU;MACV,OAAOF,OAAO,CAAC,qBAAD,CAAP,CAA+BC,OAAtC;IACD;EACF,CAND,MAMO;IACL,OAAOD,OAAO,CAAC,qBAAD,CAAP,CAA+BC,OAAtC;EACD;AACF;;eAEcN,cAAc,E"}
@@ -11,13 +11,16 @@ var _reactNative = require("react-native");
11
11
 
12
12
  var _reactNativeSafeAreaContext = require("react-native-safe-area-context");
13
13
 
14
+ var _getDefaultHeaderHeight = _interopRequireDefault(require("./getDefaultHeaderHeight"));
15
+
14
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
17
 
16
18
  const HeaderStyleContext = /*#__PURE__*/_react.default.createContext({
17
19
  HeaderComponent: () => null,
18
20
  defaultTitleAlign: 'left',
19
21
  statusBarTranslucent: true,
20
- topInset: _reactNative.StatusBar.currentHeight ?? 0
22
+ topInset: _reactNative.StatusBar.currentHeight ?? 0,
23
+ defaultHeight: (0, _getDefaultHeaderHeight.default)(false)
21
24
  });
22
25
 
23
26
  exports.HeaderStyleContext = HeaderStyleContext;
@@ -32,12 +35,17 @@ const HeaderStyleProvider = _ref => {
32
35
  const {
33
36
  top
34
37
  } = (0, _reactNativeSafeAreaContext.useSafeAreaInsets)();
38
+ const {
39
+ width,
40
+ height
41
+ } = (0, _reactNative.useWindowDimensions)();
35
42
  return /*#__PURE__*/_react.default.createElement(HeaderStyleContext.Provider, {
36
43
  value: {
37
44
  HeaderComponent,
38
45
  defaultTitleAlign,
39
46
  statusBarTranslucent,
40
- topInset: statusBarTranslucent ? top : 0
47
+ topInset: statusBarTranslucent ? top : 0,
48
+ defaultHeight: (0, _getDefaultHeaderHeight.default)(width > height)
41
49
  }
42
50
  }, children);
43
51
  };
@@ -1 +1 @@
1
- {"version":3,"names":["HeaderStyleContext","React","createContext","HeaderComponent","defaultTitleAlign","statusBarTranslucent","topInset","StatusBar","currentHeight","HeaderStyleProvider","children","top","useSafeAreaInsets"],"sources":["HeaderStyleContext.tsx"],"sourcesContent":["import React from 'react';\nimport { StatusBar } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport type { BaseHeaderProps, HeaderElement } from '../types';\n\nexport type HeaderStyleContextType = {\n HeaderComponent: (\n props: BaseHeaderProps<\n {\n title?: HeaderElement;\n left?: HeaderElement;\n right?: HeaderElement;\n onPressLeft?: () => void;\n onPressRight?: () => void;\n },\n { clearTitleMargin?: boolean }\n >,\n ) => React.ReactElement | null;\n defaultTitleAlign: 'left' | 'center';\n statusBarTranslucent: boolean;\n topInset: number;\n};\nexport const HeaderStyleContext = React.createContext<HeaderStyleContextType>({\n HeaderComponent: () => null,\n defaultTitleAlign: 'left',\n statusBarTranslucent: true,\n topInset: StatusBar.currentHeight ?? 0,\n});\n\ntype Props = Pick<HeaderStyleContextType, 'statusBarTranslucent' | 'defaultTitleAlign' | 'HeaderComponent'>;\nexport const HeaderStyleProvider: React.FC<Props> = ({\n children,\n HeaderComponent = () => null,\n defaultTitleAlign,\n statusBarTranslucent,\n}) => {\n const { top } = useSafeAreaInsets();\n\n return (\n <HeaderStyleContext.Provider\n value={{\n HeaderComponent,\n defaultTitleAlign,\n statusBarTranslucent,\n topInset: statusBarTranslucent ? top : 0,\n }}\n >\n {children}\n </HeaderStyleContext.Provider>\n );\n};\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;AAqBO,MAAMA,kBAAkB,gBAAGC,cAAA,CAAMC,aAAN,CAA4C;EAC5EC,eAAe,EAAE,MAAM,IADqD;EAE5EC,iBAAiB,EAAE,MAFyD;EAG5EC,oBAAoB,EAAE,IAHsD;EAI5EC,QAAQ,EAAEC,sBAAA,CAAUC,aAAV,IAA2B;AAJuC,CAA5C,CAA3B;;;;AAQA,MAAMC,mBAAoC,GAAG,QAK9C;EAAA,IAL+C;IACnDC,QADmD;IAEnDP,eAAe,GAAG,MAAM,IAF2B;IAGnDC,iBAHmD;IAInDC;EAJmD,CAK/C;EACJ,MAAM;IAAEM;EAAF,IAAU,IAAAC,6CAAA,GAAhB;EAEA,oBACE,6BAAC,kBAAD,CAAoB,QAApB;IACE,KAAK,EAAE;MACLT,eADK;MAELC,iBAFK;MAGLC,oBAHK;MAILC,QAAQ,EAAED,oBAAoB,GAAGM,GAAH,GAAS;IAJlC;EADT,GAQGD,QARH,CADF;AAYD,CApBM"}
1
+ {"version":3,"names":["HeaderStyleContext","React","createContext","HeaderComponent","defaultTitleAlign","statusBarTranslucent","topInset","StatusBar","currentHeight","defaultHeight","getDefaultHeaderHeight","HeaderStyleProvider","children","top","useSafeAreaInsets","width","height","useWindowDimensions"],"sources":["HeaderStyleContext.tsx"],"sourcesContent":["import React from 'react';\nimport { StatusBar, useWindowDimensions } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport type { BaseHeaderProps, HeaderElement } from '../types';\nimport getDefaultHeaderHeight from './getDefaultHeaderHeight';\n\nexport type HeaderStyleContextType = {\n HeaderComponent: (\n props: BaseHeaderProps<\n {\n title?: HeaderElement;\n left?: HeaderElement;\n right?: HeaderElement;\n onPressLeft?: () => void;\n onPressRight?: () => void;\n },\n { clearTitleMargin?: boolean }\n >,\n ) => React.ReactElement | null;\n defaultTitleAlign: 'left' | 'center';\n statusBarTranslucent: boolean;\n topInset: number;\n defaultHeight: number;\n};\nexport const HeaderStyleContext = React.createContext<HeaderStyleContextType>({\n HeaderComponent: () => null,\n defaultTitleAlign: 'left',\n statusBarTranslucent: true,\n topInset: StatusBar.currentHeight ?? 0,\n defaultHeight: getDefaultHeaderHeight(false),\n});\n\ntype Props = Pick<HeaderStyleContextType, 'statusBarTranslucent' | 'defaultTitleAlign' | 'HeaderComponent'>;\nexport const HeaderStyleProvider = ({\n children,\n HeaderComponent = () => null,\n defaultTitleAlign,\n statusBarTranslucent,\n}: React.PropsWithChildren<Props>) => {\n const { top } = useSafeAreaInsets();\n const { width, height } = useWindowDimensions();\n\n return (\n <HeaderStyleContext.Provider\n value={{\n HeaderComponent,\n defaultTitleAlign,\n statusBarTranslucent,\n topInset: statusBarTranslucent ? top : 0,\n defaultHeight: getDefaultHeaderHeight(width > height),\n }}\n >\n {children}\n </HeaderStyleContext.Provider>\n );\n};\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AAGA;;;;AAoBO,MAAMA,kBAAkB,gBAAGC,cAAA,CAAMC,aAAN,CAA4C;EAC5EC,eAAe,EAAE,MAAM,IADqD;EAE5EC,iBAAiB,EAAE,MAFyD;EAG5EC,oBAAoB,EAAE,IAHsD;EAI5EC,QAAQ,EAAEC,sBAAA,CAAUC,aAAV,IAA2B,CAJuC;EAK5EC,aAAa,EAAE,IAAAC,+BAAA,EAAuB,KAAvB;AAL6D,CAA5C,CAA3B;;;;AASA,MAAMC,mBAAmB,GAAG,QAKG;EAAA,IALF;IAClCC,QADkC;IAElCT,eAAe,GAAG,MAAM,IAFU;IAGlCC,iBAHkC;IAIlCC;EAJkC,CAKE;EACpC,MAAM;IAAEQ;EAAF,IAAU,IAAAC,6CAAA,GAAhB;EACA,MAAM;IAAEC,KAAF;IAASC;EAAT,IAAoB,IAAAC,gCAAA,GAA1B;EAEA,oBACE,6BAAC,kBAAD,CAAoB,QAApB;IACE,KAAK,EAAE;MACLd,eADK;MAELC,iBAFK;MAGLC,oBAHK;MAILC,QAAQ,EAAED,oBAAoB,GAAGQ,GAAH,GAAS,CAJlC;MAKLJ,aAAa,EAAE,IAAAC,+BAAA,EAAuBK,KAAK,GAAGC,MAA/B;IALV;EADT,GASGJ,QATH,CADF;AAaD,CAtBM"}
@@ -17,7 +17,8 @@ const DESIGNED_DEVICE_WIDTH = 360;
17
17
  const createScaleFactor = function () {
18
18
  let deviceWidth = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DESIGNED_DEVICE_WIDTH;
19
19
  const ratio = Math.min(width, height) / deviceWidth;
20
- return dp => _reactNative.PixelRatio.roundToNearestPixel(dp * ratio);
20
+ const rangedRatio = Math.min(Math.max(0.85, ratio), 1.25);
21
+ return dp => _reactNative.PixelRatio.roundToNearestPixel(dp * rangedRatio);
21
22
  };
22
23
 
23
24
  createScaleFactor.updateScaleFactor = scaleFactor => {
@@ -1 +1 @@
1
- {"version":3,"names":["width","height","Dimensions","get","DESIGNED_DEVICE_WIDTH","createScaleFactor","deviceWidth","ratio","Math","min","dp","PixelRatio","roundToNearestPixel","updateScaleFactor","scaleFactor","DEFAULT_SCALE_FACTOR"],"sources":["createScaleFactor.ts"],"sourcesContent":["import { Dimensions, PixelRatio } from 'react-native';\n\nconst { width, height } = Dimensions.get('window');\n\nconst DESIGNED_DEVICE_WIDTH = 360;\n\nconst createScaleFactor = (deviceWidth = DESIGNED_DEVICE_WIDTH) => {\n const ratio = Math.min(width, height) / deviceWidth;\n return (dp: number) => PixelRatio.roundToNearestPixel(dp * ratio);\n};\n\ncreateScaleFactor.updateScaleFactor = (scaleFactor: (dp: number) => number) => {\n DEFAULT_SCALE_FACTOR = scaleFactor;\n};\n\nexport let DEFAULT_SCALE_FACTOR = createScaleFactor();\nexport default createScaleFactor;\n"],"mappings":";;;;;;;AAAA;;AAEA,MAAM;EAAEA,KAAF;EAASC;AAAT,IAAoBC,uBAAA,CAAWC,GAAX,CAAe,QAAf,CAA1B;;AAEA,MAAMC,qBAAqB,GAAG,GAA9B;;AAEA,MAAMC,iBAAiB,GAAG,YAAyC;EAAA,IAAxCC,WAAwC,uEAA1BF,qBAA0B;EACjE,MAAMG,KAAK,GAAGC,IAAI,CAACC,GAAL,CAAST,KAAT,EAAgBC,MAAhB,IAA0BK,WAAxC;EACA,OAAQI,EAAD,IAAgBC,uBAAA,CAAWC,mBAAX,CAA+BF,EAAE,GAAGH,KAApC,CAAvB;AACD,CAHD;;AAKAF,iBAAiB,CAACQ,iBAAlB,GAAuCC,WAAD,IAAyC;EAC7E,+BAAAC,oBAAoB,GAAGD,WAAvB;AACD,CAFD;;AAIO,IAAIC,oBAAoB,GAAGV,iBAAiB,EAA5C;;eACQA,iB"}
1
+ {"version":3,"names":["width","height","Dimensions","get","DESIGNED_DEVICE_WIDTH","createScaleFactor","deviceWidth","ratio","Math","min","rangedRatio","max","dp","PixelRatio","roundToNearestPixel","updateScaleFactor","scaleFactor","DEFAULT_SCALE_FACTOR"],"sources":["createScaleFactor.ts"],"sourcesContent":["import { Dimensions, PixelRatio } from 'react-native';\n\nconst { width, height } = Dimensions.get('window');\n\nconst DESIGNED_DEVICE_WIDTH = 360;\n\nconst createScaleFactor = (deviceWidth = DESIGNED_DEVICE_WIDTH) => {\n const ratio = Math.min(width, height) / deviceWidth;\n const rangedRatio = Math.min(Math.max(0.85, ratio), 1.25);\n return (dp: number) => PixelRatio.roundToNearestPixel(dp * rangedRatio);\n};\n\ncreateScaleFactor.updateScaleFactor = (scaleFactor: (dp: number) => number) => {\n DEFAULT_SCALE_FACTOR = scaleFactor;\n};\n\nexport let DEFAULT_SCALE_FACTOR = createScaleFactor();\nexport default createScaleFactor;\n"],"mappings":";;;;;;;AAAA;;AAEA,MAAM;EAAEA,KAAF;EAASC;AAAT,IAAoBC,uBAAA,CAAWC,GAAX,CAAe,QAAf,CAA1B;;AAEA,MAAMC,qBAAqB,GAAG,GAA9B;;AAEA,MAAMC,iBAAiB,GAAG,YAAyC;EAAA,IAAxCC,WAAwC,uEAA1BF,qBAA0B;EACjE,MAAMG,KAAK,GAAGC,IAAI,CAACC,GAAL,CAAST,KAAT,EAAgBC,MAAhB,IAA0BK,WAAxC;EACA,MAAMI,WAAW,GAAGF,IAAI,CAACC,GAAL,CAASD,IAAI,CAACG,GAAL,CAAS,IAAT,EAAeJ,KAAf,CAAT,EAAgC,IAAhC,CAApB;EACA,OAAQK,EAAD,IAAgBC,uBAAA,CAAWC,mBAAX,CAA+BF,EAAE,GAAGF,WAApC,CAAvB;AACD,CAJD;;AAMAL,iBAAiB,CAACU,iBAAlB,GAAuCC,WAAD,IAAyC;EAC7E,+BAAAC,oBAAoB,GAAGD,WAAvB;AACD,CAFD;;AAIO,IAAIC,oBAAoB,GAAGZ,iBAAiB,EAA5C;;eACQA,iB"}
@@ -1 +1 @@
1
- {"version":3,"names":["UIKitThemeProvider","children","theme","LightUIKitTheme"],"sources":["UIKitThemeProvider.tsx"],"sourcesContent":["import React from 'react';\n\nimport type { UIKitTheme } from '../types';\nimport LightUIKitTheme from './LightUIKitTheme';\nimport UIKitThemeContext from './UIKitThemeContext';\n\ntype Props = { theme?: UIKitTheme };\nconst UIKitThemeProvider: React.FC<Props> = ({ children, theme = LightUIKitTheme }) => {\n return <UIKitThemeContext.Provider value={theme}>{children}</UIKitThemeContext.Provider>;\n};\n\nexport default UIKitThemeProvider;\n"],"mappings":";;;;;;;AAAA;;AAGA;;AACA;;;;AAGA,MAAMA,kBAAmC,GAAG,QAA2C;EAAA,IAA1C;IAAEC,QAAF;IAAYC,KAAK,GAAGC;EAApB,CAA0C;EACrF,oBAAO,6BAAC,0BAAD,CAAmB,QAAnB;IAA4B,KAAK,EAAED;EAAnC,GAA2CD,QAA3C,CAAP;AACD,CAFD;;eAIeD,kB"}
1
+ {"version":3,"names":["UIKitThemeProvider","children","theme","LightUIKitTheme"],"sources":["UIKitThemeProvider.tsx"],"sourcesContent":["import React from 'react';\n\nimport type { UIKitTheme } from '../types';\nimport LightUIKitTheme from './LightUIKitTheme';\nimport UIKitThemeContext from './UIKitThemeContext';\n\ntype Props = React.PropsWithChildren<{\n theme?: UIKitTheme;\n}>;\nconst UIKitThemeProvider = ({ children, theme = LightUIKitTheme }: Props) => {\n return <UIKitThemeContext.Provider value={theme}>{children}</UIKitThemeContext.Provider>;\n};\n\nexport default UIKitThemeProvider;\n"],"mappings":";;;;;;;AAAA;;AAGA;;AACA;;;;AAKA,MAAMA,kBAAkB,GAAG,QAAkD;EAAA,IAAjD;IAAEC,QAAF;IAAYC,KAAK,GAAGC;EAApB,CAAiD;EAC3E,oBAAO,6BAAC,0BAAD,CAAmB,QAAnB;IAA4B,KAAK,EAAED;EAAnC,GAA2CD,QAA3C,CAAP;AACD,CAFD;;eAIeD,kB"}
@@ -1 +1 @@
1
- {"version":3,"names":["ActionMenu","visible","onHide","onError","onDismiss","title","menuItems","statusBarTranslucent","useHeaderStyle","colors","useUIKitTheme","pending","setPending","useState","_onHide","alignItems","justifyContent","styles","ui","dialog","default","none","text","maxWidth","highlight","width","marginLeft","buttonContainer","map","item","index","button","onPress","e","errorHandler","Logger","error","createStyleSheet","flexDirection","paddingHorizontal","paddingVertical","marginTop","marginBottom"],"sources":["index.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { TouchableOpacity, View } from 'react-native';\n\nimport { Logger } from '@sendbird/uikit-utils';\n\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useHeaderStyle from '../../styles/useHeaderStyle';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport DialogBox from '../Dialog/DialogBox';\nimport LoadingSpinner from '../LoadingSpinner';\nimport Modal from '../Modal';\nimport Text from '../Text';\n\nexport type ActionMenuItem = {\n title?: string;\n menuItems: {\n title: string;\n onPress?: (() => Promise<void>) | (() => void);\n onError?: () => void;\n }[];\n};\n\ntype Props = {\n visible: boolean;\n onHide: () => void;\n onError?: (error: unknown) => void;\n onDismiss?: () => void;\n} & ActionMenuItem;\nconst ActionMenu: React.FC<Props> = ({ visible, onHide, onError, onDismiss, title, menuItems }) => {\n const { statusBarTranslucent } = useHeaderStyle();\n const { colors } = useUIKitTheme();\n const [pending, setPending] = useState(false);\n const _onHide = () => {\n if (!pending) onHide();\n };\n\n return (\n <Modal\n onClose={_onHide}\n onDismiss={onDismiss}\n statusBarTranslucent={statusBarTranslucent}\n visible={visible}\n backgroundStyle={{ alignItems: 'center', justifyContent: 'center' }}\n >\n <DialogBox>\n <View style={styles.title}>\n <Text\n h1\n color={colors.ui.dialog.default.none.text}\n numberOfLines={1}\n // style={{ flex: 1 }}\n style={{ maxWidth: pending ? '86%' : '100%' }}\n >\n {title}\n </Text>\n {pending && (\n <LoadingSpinner\n size={20}\n color={colors.ui.dialog.default.none.highlight}\n style={{ width: '10%', marginLeft: '4%' }}\n />\n )}\n </View>\n <View style={styles.buttonContainer}>\n {menuItems.map((item, index) => {\n return (\n <TouchableOpacity\n activeOpacity={0.75}\n key={item.title + index}\n style={styles.button}\n disabled={pending}\n onPress={async () => {\n setPending(true);\n try {\n await item.onPress?.();\n } catch (e: unknown) {\n const errorHandler = onError ?? item.onError;\n errorHandler?.(e);\n if (!errorHandler) Logger.error('ActionMenu onPress error', e);\n } finally {\n onHide();\n setPending(false);\n }\n }}\n >\n <Text subtitle2 color={colors.ui.dialog.default.none.text} numberOfLines={1}>\n {item.title}\n </Text>\n </TouchableOpacity>\n );\n })}\n </View>\n </DialogBox>\n </Modal>\n );\n};\n\nconst styles = createStyleSheet({\n title: {\n flexDirection: 'row',\n paddingHorizontal: 24,\n paddingVertical: 20,\n alignItems: 'center',\n },\n buttonContainer: {\n marginTop: 4,\n marginBottom: 8,\n },\n button: {\n paddingHorizontal: 24,\n paddingVertical: 12,\n },\n});\n\nexport default ActionMenu;\n"],"mappings":"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"}
1
+ {"version":3,"names":["ActionMenu","visible","onHide","onError","onDismiss","title","menuItems","statusBarTranslucent","useHeaderStyle","colors","useUIKitTheme","pending","setPending","useState","_onHide","alignItems","justifyContent","styles","ui","dialog","default","none","text","maxWidth","highlight","width","marginLeft","buttonContainer","map","item","index","button","onPress","e","errorHandler","Logger","error","createStyleSheet","flexDirection","paddingHorizontal","paddingVertical","marginTop","marginBottom"],"sources":["index.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { TouchableOpacity, View } from 'react-native';\n\nimport { Logger } from '@sendbird/uikit-utils';\n\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useHeaderStyle from '../../styles/useHeaderStyle';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport DialogBox from '../Dialog/DialogBox';\nimport LoadingSpinner from '../LoadingSpinner';\nimport Modal from '../Modal';\nimport Text from '../Text';\n\nexport type ActionMenuItem = {\n title?: string;\n menuItems: {\n title: string;\n onPress?: (() => Promise<void>) | (() => void);\n onError?: () => void;\n }[];\n};\n\ntype Props = {\n visible: boolean;\n onHide: () => void;\n onError?: (error: unknown) => void;\n onDismiss?: () => void;\n} & ActionMenuItem;\nconst ActionMenu = ({ visible, onHide, onError, onDismiss, title, menuItems }: Props) => {\n const { statusBarTranslucent } = useHeaderStyle();\n const { colors } = useUIKitTheme();\n const [pending, setPending] = useState(false);\n const _onHide = () => {\n if (!pending) onHide();\n };\n\n return (\n <Modal\n onClose={_onHide}\n onDismiss={onDismiss}\n statusBarTranslucent={statusBarTranslucent}\n visible={visible}\n backgroundStyle={{ alignItems: 'center', justifyContent: 'center' }}\n >\n <DialogBox>\n <View style={styles.title}>\n <Text\n h1\n color={colors.ui.dialog.default.none.text}\n numberOfLines={1}\n // style={{ flex: 1 }}\n style={{ maxWidth: pending ? '86%' : '100%' }}\n >\n {title}\n </Text>\n {pending && (\n <LoadingSpinner\n size={20}\n color={colors.ui.dialog.default.none.highlight}\n style={{ width: '10%', marginLeft: '4%' }}\n />\n )}\n </View>\n <View style={styles.buttonContainer}>\n {menuItems.map((item, index) => {\n return (\n <TouchableOpacity\n activeOpacity={0.75}\n key={item.title + index}\n style={styles.button}\n disabled={pending}\n onPress={async () => {\n setPending(true);\n try {\n await item.onPress?.();\n } catch (e: unknown) {\n const errorHandler = onError ?? item.onError;\n errorHandler?.(e);\n if (!errorHandler) Logger.error('ActionMenu onPress error', e);\n } finally {\n onHide();\n setPending(false);\n }\n }}\n >\n <Text subtitle2 color={colors.ui.dialog.default.none.text} numberOfLines={1}>\n {item.title}\n </Text>\n </TouchableOpacity>\n );\n })}\n </View>\n </DialogBox>\n </Modal>\n );\n};\n\nconst styles = createStyleSheet({\n title: {\n flexDirection: 'row',\n paddingHorizontal: 24,\n paddingVertical: 20,\n alignItems: 'center',\n },\n buttonContainer: {\n marginTop: 4,\n marginBottom: 8,\n },\n button: {\n paddingHorizontal: 24,\n paddingVertical: 12,\n },\n});\n\nexport default ActionMenu;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["Alert","onDismiss","visible","onHide","title","message","buttons","text","statusBarTranslucent","useHeaderStyle","colors","useUIKitTheme","alignItems","justifyContent","styles","container","Boolean","titleContainer","ui","dialog","default","none","flex","messageContainer","buttonContainer","map","index","style","onPress","button","destructive","highlight","createStyleSheet","paddingTop","paddingBottom","paddingHorizontal","flexDirection","marginBottom","marginLeft","padding"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { AlertButton, View } from 'react-native';\n\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useHeaderStyle from '../../styles/useHeaderStyle';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport Button from '../Button';\nimport DialogBox from '../Dialog/DialogBox';\nimport Modal from '../Modal';\nimport Text from '../Text';\n\nexport type AlertItem = {\n title?: string;\n message?: string;\n buttons?: AlertButton[];\n};\n\ntype Props = {\n visible: boolean;\n onHide: () => void;\n onDismiss?: () => void;\n} & AlertItem;\nconst Alert: React.FC<Props> = ({\n onDismiss,\n visible,\n onHide,\n title = '',\n message = '',\n buttons = [{ text: 'OK' }],\n}) => {\n const { statusBarTranslucent } = useHeaderStyle();\n const { colors } = useUIKitTheme();\n\n return (\n <Modal\n onClose={onHide}\n onDismiss={onDismiss}\n statusBarTranslucent={statusBarTranslucent}\n visible={visible}\n backgroundStyle={{ alignItems: 'center', justifyContent: 'center' }}\n >\n <DialogBox style={styles.container}>\n {Boolean(title) && (\n <View style={styles.titleContainer}>\n <Text h1 color={colors.ui.dialog.default.none.text} numberOfLines={1} style={{ flex: 1 }}>\n {title}\n </Text>\n </View>\n )}\n\n <View style={styles.messageContainer}>\n {Boolean(message) && (\n <Text\n subtitle2={!title}\n body3={Boolean(title)}\n color={!title ? colors.ui.dialog.default.none.text : colors.ui.dialog.default.none.message}\n numberOfLines={3}\n >\n {message}\n </Text>\n )}\n </View>\n\n <View style={styles.buttonContainer}>\n {buttons.map(({ text = 'OK', style = 'default', onPress }, index) => {\n return (\n <Button\n key={text + index}\n variant={'text'}\n style={styles.button}\n onPress={async () => {\n try {\n onPress?.();\n } finally {\n onHide();\n }\n }}\n contentColor={\n style === 'destructive'\n ? colors.ui.dialog.default.none.destructive\n : colors.ui.dialog.default.none.highlight\n }\n >\n {text}\n </Button>\n );\n })}\n </View>\n </DialogBox>\n </Modal>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n paddingTop: 20,\n },\n titleContainer: {\n paddingBottom: 16,\n paddingHorizontal: 24,\n flexDirection: 'row',\n alignItems: 'center',\n },\n messageContainer: {\n paddingHorizontal: 24,\n marginBottom: 12,\n },\n button: {\n marginLeft: 8,\n },\n buttonContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'flex-end',\n padding: 12,\n },\n});\n\nexport default Alert;\n"],"mappings":"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"}
1
+ {"version":3,"names":["Alert","onDismiss","visible","onHide","title","message","buttons","text","statusBarTranslucent","useHeaderStyle","colors","useUIKitTheme","alignItems","justifyContent","styles","container","Boolean","titleContainer","ui","dialog","default","none","flex","messageContainer","buttonContainer","map","index","style","onPress","button","destructive","highlight","createStyleSheet","paddingTop","paddingBottom","paddingHorizontal","flexDirection","marginBottom","marginLeft","padding"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { AlertButton, View } from 'react-native';\n\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useHeaderStyle from '../../styles/useHeaderStyle';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport Button from '../Button';\nimport DialogBox from '../Dialog/DialogBox';\nimport Modal from '../Modal';\nimport Text from '../Text';\n\nexport type AlertItem = {\n title?: string;\n message?: string;\n buttons?: AlertButton[];\n};\n\ntype Props = {\n visible: boolean;\n onHide: () => void;\n onDismiss?: () => void;\n} & AlertItem;\nconst Alert = ({ onDismiss, visible, onHide, title = '', message = '', buttons = [{ text: 'OK' }] }: Props) => {\n const { statusBarTranslucent } = useHeaderStyle();\n const { colors } = useUIKitTheme();\n\n return (\n <Modal\n onClose={onHide}\n onDismiss={onDismiss}\n statusBarTranslucent={statusBarTranslucent}\n visible={visible}\n backgroundStyle={{ alignItems: 'center', justifyContent: 'center' }}\n >\n <DialogBox style={styles.container}>\n {Boolean(title) && (\n <View style={styles.titleContainer}>\n <Text h1 color={colors.ui.dialog.default.none.text} numberOfLines={1} style={{ flex: 1 }}>\n {title}\n </Text>\n </View>\n )}\n\n <View style={styles.messageContainer}>\n {Boolean(message) && (\n <Text\n subtitle2={!title}\n body3={Boolean(title)}\n color={!title ? colors.ui.dialog.default.none.text : colors.ui.dialog.default.none.message}\n numberOfLines={3}\n >\n {message}\n </Text>\n )}\n </View>\n\n <View style={styles.buttonContainer}>\n {buttons.map(({ text = 'OK', style = 'default', onPress }, index) => {\n return (\n <Button\n key={text + index}\n variant={'text'}\n style={styles.button}\n onPress={async () => {\n try {\n onPress?.();\n } finally {\n onHide();\n }\n }}\n contentColor={\n style === 'destructive'\n ? colors.ui.dialog.default.none.destructive\n : colors.ui.dialog.default.none.highlight\n }\n >\n {text}\n </Button>\n );\n })}\n </View>\n </DialogBox>\n </Modal>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n paddingTop: 20,\n },\n titleContainer: {\n paddingBottom: 16,\n paddingHorizontal: 24,\n flexDirection: 'row',\n alignItems: 'center',\n },\n messageContainer: {\n paddingHorizontal: 24,\n marginBottom: 12,\n },\n button: {\n marginLeft: 8,\n },\n buttonContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'flex-end',\n padding: 12,\n },\n});\n\nexport default Alert;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["MAX","AvatarGroup","children","containerStyle","size","childAmount","React","Children","count","overflow","width","height","borderRadius","backgroundColor","avatars","useMemo","map","child","index","isValidElement","cloneElement","top","getTopPoint","left","getLeftPoint","getWidthPoint","getHeightPoint","innerLeft","getInnerLeft","innerTop","getInnerTop","position","square","slice","_","total","idx"],"sources":["AvatarGroup.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { StyleProp, View, ViewStyle } from 'react-native';\n\nconst MAX = 4;\n\ntype Props = { size?: number; containerStyle?: StyleProp<ViewStyle> };\nconst AvatarGroup: React.FC<Props> = ({ children, containerStyle, size = 56 }) => {\n const childAmount = React.Children.count(children);\n\n if (childAmount === 0) {\n return (\n <View\n style={[\n containerStyle,\n {\n overflow: 'hidden',\n width: size,\n height: size,\n borderRadius: size,\n backgroundColor: 'rgba(120,120,120,0.2)',\n },\n ]}\n />\n );\n }\n\n const avatars = useMemo(() => {\n return (\n React.Children.map(children, (child, index) => {\n if (index + 1 > MAX) return child;\n if (!React.isValidElement(child)) return child;\n\n if (childAmount === 1) return React.cloneElement(child, { size, containerStyle });\n\n const top = getTopPoint(index, childAmount) * size;\n const left = getLeftPoint(index) * size;\n const width = getWidthPoint(index, childAmount) * size;\n const height = getHeightPoint(index, childAmount) * size;\n const innerLeft = -getInnerLeft(index, childAmount) * size;\n const innerTop = -getInnerTop(childAmount) * size;\n\n return (\n <View style={{ overflow: 'hidden', position: 'absolute', top, left, width, height }}>\n {React.cloneElement(child, { size, square: true, containerStyle: { left: innerLeft, top: innerTop } })}\n </View>\n );\n })?.slice(0, 4) ?? []\n );\n }, [children]);\n\n return (\n <View style={[containerStyle, { overflow: 'hidden', width: size, height: size, borderRadius: size }]}>\n {avatars}\n </View>\n );\n};\n\nconst getHeightPoint = (_: number, total: number) => {\n if (total === 2) return 1;\n return 0.5;\n};\nconst getWidthPoint = (idx: number, total: number) => {\n if (total === 3 && idx === 0) return 1;\n return 0.5;\n};\nconst getTopPoint = (idx: number, total: number) => {\n if (total === 2) return -0.025;\n if (total === 3 && idx === 0) return -0.025;\n if (total === 3 && idx !== 0) return 0.525;\n if (idx === 0 || idx === 1) return -0.025;\n return 0.525;\n};\nconst getLeftPoint = (idx: number) => {\n if (idx === 0 || idx === 2) return -0.025;\n return 0.525;\n};\nconst getInnerLeft = (idx: number, total: number) => {\n if (total === 3 && idx === 0) return 0;\n return 0.25;\n};\nconst getInnerTop = (total: number) => {\n if (total === 2) return 0;\n return 0.25;\n};\n\nexport default AvatarGroup;\n"],"mappings":"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"}
1
+ {"version":3,"names":["MAX","AvatarGroup","children","containerStyle","size","childAmount","React","Children","count","overflow","width","height","borderRadius","backgroundColor","avatars","useMemo","map","child","index","isValidElement","cloneElement","top","getTopPoint","left","getLeftPoint","getWidthPoint","getHeightPoint","innerLeft","getInnerLeft","innerTop","getInnerTop","position","square","slice","_","total","idx"],"sources":["AvatarGroup.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { StyleProp, View, ViewStyle } from 'react-native';\n\nconst MAX = 4;\n\ntype Props = React.PropsWithChildren<{\n size?: number;\n containerStyle?: StyleProp<ViewStyle>;\n}>;\nconst AvatarGroup = ({ children, containerStyle, size = 56 }: Props) => {\n const childAmount = React.Children.count(children);\n\n if (childAmount === 0) {\n return (\n <View\n style={[\n containerStyle,\n {\n overflow: 'hidden',\n width: size,\n height: size,\n borderRadius: size,\n backgroundColor: 'rgba(120,120,120,0.2)',\n },\n ]}\n />\n );\n }\n\n const avatars = useMemo(() => {\n return (\n React.Children.map(children, (child, index) => {\n if (index + 1 > MAX) return child;\n if (!React.isValidElement(child)) return child;\n\n if (childAmount === 1) return React.cloneElement(child, { size, containerStyle });\n\n const top = getTopPoint(index, childAmount) * size;\n const left = getLeftPoint(index) * size;\n const width = getWidthPoint(index, childAmount) * size;\n const height = getHeightPoint(index, childAmount) * size;\n const innerLeft = -getInnerLeft(index, childAmount) * size;\n const innerTop = -getInnerTop(childAmount) * size;\n\n return (\n <View style={{ overflow: 'hidden', position: 'absolute', top, left, width, height }}>\n {React.cloneElement(child, { size, square: true, containerStyle: { left: innerLeft, top: innerTop } })}\n </View>\n );\n })?.slice(0, 4) ?? []\n );\n }, [children]);\n\n return (\n <View style={[containerStyle, { overflow: 'hidden', width: size, height: size, borderRadius: size }]}>\n {avatars}\n </View>\n );\n};\n\nconst getHeightPoint = (_: number, total: number) => {\n if (total === 2) return 1;\n return 0.5;\n};\nconst getWidthPoint = (idx: number, total: number) => {\n if (total === 3 && idx === 0) return 1;\n return 0.5;\n};\nconst getTopPoint = (idx: number, total: number) => {\n if (total === 2) return -0.025;\n if (total === 3 && idx === 0) return -0.025;\n if (total === 3 && idx !== 0) return 0.525;\n if (idx === 0 || idx === 1) return -0.025;\n return 0.525;\n};\nconst getLeftPoint = (idx: number) => {\n if (idx === 0 || idx === 2) return -0.025;\n return 0.525;\n};\nconst getInnerLeft = (idx: number, total: number) => {\n if (total === 3 && idx === 0) return 0;\n return 0.25;\n};\nconst getInnerTop = (total: number) => {\n if (total === 2) return 0;\n return 0.25;\n};\n\nexport default AvatarGroup;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["AvatarIcon","size","icon","containerStyle","backgroundColor","colors","palette","useUIKitTheme","styles","container","width","height","borderRadius","background300","onBackgroundReverse01","createStyleSheet","overflow","alignItems","justifyContent"],"sources":["AvatarIcon.tsx"],"sourcesContent":["import React from 'react';\nimport { StyleProp, View, ViewStyle } from 'react-native';\n\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport Icon from '../Icon';\n\ntype Props = {\n icon: keyof typeof Icon.Assets;\n size?: number;\n backgroundColor?: string;\n containerStyle?: StyleProp<ViewStyle>;\n};\nconst AvatarIcon: React.FC<Props> = ({ size = 56, icon, containerStyle, backgroundColor }) => {\n const { colors, palette } = useUIKitTheme();\n return (\n <View\n style={[\n styles.container,\n {\n width: size,\n height: size,\n borderRadius: size / 2,\n backgroundColor: backgroundColor ?? palette.background300,\n },\n containerStyle,\n ]}\n >\n <Icon icon={icon} size={size / 2} color={colors.onBackgroundReverse01} />\n </View>\n );\n};\nconst styles = createStyleSheet({\n container: {\n overflow: 'hidden',\n alignItems: 'center',\n justifyContent: 'center',\n },\n});\nexport default AvatarIcon;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;AACA;;;;AAQA,MAAMA,UAA2B,GAAG,QAA0D;EAAA,IAAzD;IAAEC,IAAI,GAAG,EAAT;IAAaC,IAAb;IAAmBC,cAAnB;IAAmCC;EAAnC,CAAyD;EAC5F,MAAM;IAAEC,MAAF;IAAUC;EAAV,IAAsB,IAAAC,sBAAA,GAA5B;EACA,oBACE,6BAAC,iBAAD;IACE,KAAK,EAAE,CACLC,MAAM,CAACC,SADF,EAEL;MACEC,KAAK,EAAET,IADT;MAEEU,MAAM,EAAEV,IAFV;MAGEW,YAAY,EAAEX,IAAI,GAAG,CAHvB;MAIEG,eAAe,EAAEA,eAAe,IAAIE,OAAO,CAACO;IAJ9C,CAFK,EAQLV,cARK;EADT,gBAYE,6BAAC,aAAD;IAAM,IAAI,EAAED,IAAZ;IAAkB,IAAI,EAAED,IAAI,GAAG,CAA/B;IAAkC,KAAK,EAAEI,MAAM,CAACS;EAAhD,EAZF,CADF;AAgBD,CAlBD;;AAmBA,MAAMN,MAAM,GAAG,IAAAO,yBAAA,EAAiB;EAC9BN,SAAS,EAAE;IACTO,QAAQ,EAAE,QADD;IAETC,UAAU,EAAE,QAFH;IAGTC,cAAc,EAAE;EAHP;AADmB,CAAjB,CAAf;eAOelB,U"}
1
+ {"version":3,"names":["AvatarIcon","size","icon","containerStyle","backgroundColor","colors","palette","useUIKitTheme","styles","container","width","height","borderRadius","background300","onBackgroundReverse01","createStyleSheet","overflow","alignItems","justifyContent"],"sources":["AvatarIcon.tsx"],"sourcesContent":["import React from 'react';\nimport { StyleProp, View, ViewStyle } from 'react-native';\n\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport Icon from '../Icon';\n\ntype Props = {\n icon: keyof typeof Icon.Assets;\n size?: number;\n backgroundColor?: string;\n containerStyle?: StyleProp<ViewStyle>;\n};\nconst AvatarIcon = ({ size = 56, icon, containerStyle, backgroundColor }: Props) => {\n const { colors, palette } = useUIKitTheme();\n return (\n <View\n style={[\n styles.container,\n {\n width: size,\n height: size,\n borderRadius: size / 2,\n backgroundColor: backgroundColor ?? palette.background300,\n },\n containerStyle,\n ]}\n >\n <Icon icon={icon} size={size / 2} color={colors.onBackgroundReverse01} />\n </View>\n );\n};\nconst styles = createStyleSheet({\n container: {\n overflow: 'hidden',\n alignItems: 'center',\n justifyContent: 'center',\n },\n});\nexport default AvatarIcon;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;AACA;;;;AAQA,MAAMA,UAAU,GAAG,QAAiE;EAAA,IAAhE;IAAEC,IAAI,GAAG,EAAT;IAAaC,IAAb;IAAmBC,cAAnB;IAAmCC;EAAnC,CAAgE;EAClF,MAAM;IAAEC,MAAF;IAAUC;EAAV,IAAsB,IAAAC,sBAAA,GAA5B;EACA,oBACE,6BAAC,iBAAD;IACE,KAAK,EAAE,CACLC,MAAM,CAACC,SADF,EAEL;MACEC,KAAK,EAAET,IADT;MAEEU,MAAM,EAAEV,IAFV;MAGEW,YAAY,EAAEX,IAAI,GAAG,CAHvB;MAIEG,eAAe,EAAEA,eAAe,IAAIE,OAAO,CAACO;IAJ9C,CAFK,EAQLV,cARK;EADT,gBAYE,6BAAC,aAAD;IAAM,IAAI,EAAED,IAAZ;IAAkB,IAAI,EAAED,IAAI,GAAG,CAA/B;IAAkC,KAAK,EAAEI,MAAM,CAACS;EAAhD,EAZF,CADF;AAgBD,CAlBD;;AAmBA,MAAMN,MAAM,GAAG,IAAAO,yBAAA,EAAiB;EAC9BN,SAAS,EAAE;IACTO,QAAQ,EAAE,QADD;IAETC,UAAU,EAAE,QAFH;IAGTC,cAAc,EAAE;EAHP;AADmB,CAAjB,CAAf;eAOelB,U"}
@@ -1 +1 @@
1
- {"version":3,"names":["Avatar","uri","square","muted","size","containerStyle","colors","palette","useUIKitTheme","loadFailure","setLoadFailure","useState","styles","container","width","height","borderRadius","backgroundColor","background300","conditionChaining","Boolean","StyleSheet","absoluteFill","onBackgroundReverse01","MutedOverlay","primary300","opacity","onBackgroundDark01","createStyleSheet","alignItems","justifyContent","overflow","Group","AvatarGroup","Icon","AvatarIcon"],"sources":["index.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { StyleProp, StyleSheet, View, ViewStyle } from 'react-native';\n\nimport { conditionChaining } from '@sendbird/uikit-utils';\n\nimport Image from '../../components/Image';\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport Icon from '../Icon';\nimport AvatarGroup from './AvatarGroup';\nimport AvatarIcon from './AvatarIcon';\n\ntype SubComponents = { Group: typeof AvatarGroup; Icon: typeof AvatarIcon };\ntype Props = {\n uri?: string;\n size?: number;\n square?: boolean;\n muted?: boolean;\n containerStyle?: StyleProp<ViewStyle>;\n};\nconst Avatar: React.FC<Props> & SubComponents = ({ uri, square, muted = false, size = 56, containerStyle }) => {\n const { colors, palette } = useUIKitTheme();\n const [loadFailure, setLoadFailure] = useState(false);\n\n return (\n <View\n style={[\n styles.container,\n { width: size, height: size, borderRadius: square ? 0 : size / 2, backgroundColor: palette.background300 },\n containerStyle,\n ]}\n >\n {conditionChaining(\n [Boolean(uri) && !loadFailure],\n [\n <Image\n onError={() => setLoadFailure(true)}\n source={{ uri }}\n resizeMode={'cover'}\n style={StyleSheet.absoluteFill}\n />,\n <Icon icon={'user'} size={size / 2} color={colors.onBackgroundReverse01} />,\n ],\n )}\n {muted && <MutedOverlay size={size} />}\n </View>\n );\n};\n\nconst MutedOverlay: React.FC<{ size: number }> = ({ size }) => {\n const { palette } = useUIKitTheme();\n return (\n <View style={[styles.container, StyleSheet.absoluteFill]}>\n <View style={[StyleSheet.absoluteFill, { backgroundColor: palette.primary300, opacity: 0.5 }]} />\n <Icon color={palette.onBackgroundDark01} icon={'mute'} size={size * 0.72} />\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n alignItems: 'center',\n justifyContent: 'center',\n overflow: 'hidden',\n },\n});\n\nAvatar.Group = AvatarGroup;\nAvatar.Icon = AvatarIcon;\nexport default Avatar;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;AAUA,MAAMA,MAAuC,GAAG,QAA+D;EAAA,IAA9D;IAAEC,GAAF;IAAOC,MAAP;IAAeC,KAAK,GAAG,KAAvB;IAA8BC,IAAI,GAAG,EAArC;IAAyCC;EAAzC,CAA8D;EAC7G,MAAM;IAAEC,MAAF;IAAUC;EAAV,IAAsB,IAAAC,sBAAA,GAA5B;EACA,MAAM,CAACC,WAAD,EAAcC,cAAd,IAAgC,IAAAC,eAAA,EAAS,KAAT,CAAtC;EAEA,oBACE,6BAAC,iBAAD;IACE,KAAK,EAAE,CACLC,MAAM,CAACC,SADF,EAEL;MAAEC,KAAK,EAAEV,IAAT;MAAeW,MAAM,EAAEX,IAAvB;MAA6BY,YAAY,EAAEd,MAAM,GAAG,CAAH,GAAOE,IAAI,GAAG,CAA/D;MAAkEa,eAAe,EAAEV,OAAO,CAACW;IAA3F,CAFK,EAGLb,cAHK;EADT,GAOG,IAAAc,6BAAA,EACC,CAACC,OAAO,CAACnB,GAAD,CAAP,IAAgB,CAACQ,WAAlB,CADD,EAEC,cACE,6BAAC,cAAD;IACE,OAAO,EAAE,MAAMC,cAAc,CAAC,IAAD,CAD/B;IAEE,MAAM,EAAE;MAAET;IAAF,CAFV;IAGE,UAAU,EAAE,OAHd;IAIE,KAAK,EAAEoB,uBAAA,CAAWC;EAJpB,EADF,eAOE,6BAAC,aAAD;IAAM,IAAI,EAAE,MAAZ;IAAoB,IAAI,EAAElB,IAAI,GAAG,CAAjC;IAAoC,KAAK,EAAEE,MAAM,CAACiB;EAAlD,EAPF,CAFD,CAPH,EAmBGpB,KAAK,iBAAI,6BAAC,YAAD;IAAc,IAAI,EAAEC;EAApB,EAnBZ,CADF;AAuBD,CA3BD;;AA6BA,MAAMoB,YAAwC,GAAG,SAAc;EAAA,IAAb;IAAEpB;EAAF,CAAa;EAC7D,MAAM;IAAEG;EAAF,IAAc,IAAAC,sBAAA,GAApB;EACA,oBACE,6BAAC,iBAAD;IAAM,KAAK,EAAE,CAACI,MAAM,CAACC,SAAR,EAAmBQ,uBAAA,CAAWC,YAA9B;EAAb,gBACE,6BAAC,iBAAD;IAAM,KAAK,EAAE,CAACD,uBAAA,CAAWC,YAAZ,EAA0B;MAAEL,eAAe,EAAEV,OAAO,CAACkB,UAA3B;MAAuCC,OAAO,EAAE;IAAhD,CAA1B;EAAb,EADF,eAEE,6BAAC,aAAD;IAAM,KAAK,EAAEnB,OAAO,CAACoB,kBAArB;IAAyC,IAAI,EAAE,MAA/C;IAAuD,IAAI,EAAEvB,IAAI,GAAG;EAApE,EAFF,CADF;AAMD,CARD;;AAUA,MAAMQ,MAAM,GAAG,IAAAgB,yBAAA,EAAiB;EAC9Bf,SAAS,EAAE;IACTgB,UAAU,EAAE,QADH;IAETC,cAAc,EAAE,QAFP;IAGTC,QAAQ,EAAE;EAHD;AADmB,CAAjB,CAAf;AAQA/B,MAAM,CAACgC,KAAP,GAAeC,oBAAf;AACAjC,MAAM,CAACkC,IAAP,GAAcC,mBAAd;eACenC,M"}
1
+ {"version":3,"names":["Avatar","uri","square","muted","size","containerStyle","colors","palette","useUIKitTheme","loadFailure","setLoadFailure","useState","styles","container","width","height","borderRadius","backgroundColor","background300","conditionChaining","Boolean","StyleSheet","absoluteFill","onBackgroundReverse01","MutedOverlay","primary300","opacity","onBackgroundDark01","createStyleSheet","alignItems","justifyContent","overflow","Group","AvatarGroup","Icon","AvatarIcon"],"sources":["index.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { StyleProp, StyleSheet, View, ViewStyle } from 'react-native';\n\nimport { conditionChaining } from '@sendbird/uikit-utils';\n\nimport Image from '../../components/Image';\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport Icon from '../Icon';\nimport AvatarGroup from './AvatarGroup';\nimport AvatarIcon from './AvatarIcon';\n\ntype SubComponents = {\n Group: typeof AvatarGroup;\n Icon: typeof AvatarIcon;\n};\ntype Props = {\n uri?: string;\n size?: number;\n square?: boolean;\n muted?: boolean;\n containerStyle?: StyleProp<ViewStyle>;\n};\nconst Avatar: ((props: Props) => JSX.Element) & SubComponents = ({\n uri,\n square,\n muted = false,\n size = 56,\n containerStyle,\n}) => {\n const { colors, palette } = useUIKitTheme();\n const [loadFailure, setLoadFailure] = useState(false);\n\n return (\n <View\n style={[\n styles.container,\n { width: size, height: size, borderRadius: square ? 0 : size / 2, backgroundColor: palette.background300 },\n containerStyle,\n ]}\n >\n {conditionChaining(\n [Boolean(uri) && !loadFailure],\n [\n <Image\n onError={() => setLoadFailure(true)}\n source={{ uri }}\n resizeMode={'cover'}\n style={StyleSheet.absoluteFill}\n />,\n <Icon icon={'user'} size={size / 2} color={colors.onBackgroundReverse01} />,\n ],\n )}\n {muted && <MutedOverlay size={size} />}\n </View>\n );\n};\n\nconst MutedOverlay = ({ size }: { size: number }) => {\n const { palette } = useUIKitTheme();\n return (\n <View style={[styles.container, StyleSheet.absoluteFill]}>\n <View style={[StyleSheet.absoluteFill, { backgroundColor: palette.primary300, opacity: 0.5 }]} />\n <Icon color={palette.onBackgroundDark01} icon={'mute'} size={size * 0.72} />\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n alignItems: 'center',\n justifyContent: 'center',\n overflow: 'hidden',\n },\n});\n\nAvatar.Group = AvatarGroup;\nAvatar.Icon = AvatarIcon;\nexport default Avatar;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;AAaA,MAAMA,MAAuD,GAAG,QAM1D;EAAA,IAN2D;IAC/DC,GAD+D;IAE/DC,MAF+D;IAG/DC,KAAK,GAAG,KAHuD;IAI/DC,IAAI,GAAG,EAJwD;IAK/DC;EAL+D,CAM3D;EACJ,MAAM;IAAEC,MAAF;IAAUC;EAAV,IAAsB,IAAAC,sBAAA,GAA5B;EACA,MAAM,CAACC,WAAD,EAAcC,cAAd,IAAgC,IAAAC,eAAA,EAAS,KAAT,CAAtC;EAEA,oBACE,6BAAC,iBAAD;IACE,KAAK,EAAE,CACLC,MAAM,CAACC,SADF,EAEL;MAAEC,KAAK,EAAEV,IAAT;MAAeW,MAAM,EAAEX,IAAvB;MAA6BY,YAAY,EAAEd,MAAM,GAAG,CAAH,GAAOE,IAAI,GAAG,CAA/D;MAAkEa,eAAe,EAAEV,OAAO,CAACW;IAA3F,CAFK,EAGLb,cAHK;EADT,GAOG,IAAAc,6BAAA,EACC,CAACC,OAAO,CAACnB,GAAD,CAAP,IAAgB,CAACQ,WAAlB,CADD,EAEC,cACE,6BAAC,cAAD;IACE,OAAO,EAAE,MAAMC,cAAc,CAAC,IAAD,CAD/B;IAEE,MAAM,EAAE;MAAET;IAAF,CAFV;IAGE,UAAU,EAAE,OAHd;IAIE,KAAK,EAAEoB,uBAAA,CAAWC;EAJpB,EADF,eAOE,6BAAC,aAAD;IAAM,IAAI,EAAE,MAAZ;IAAoB,IAAI,EAAElB,IAAI,GAAG,CAAjC;IAAoC,KAAK,EAAEE,MAAM,CAACiB;EAAlD,EAPF,CAFD,CAPH,EAmBGpB,KAAK,iBAAI,6BAAC,YAAD;IAAc,IAAI,EAAEC;EAApB,EAnBZ,CADF;AAuBD,CAjCD;;AAmCA,MAAMoB,YAAY,GAAG,SAAgC;EAAA,IAA/B;IAAEpB;EAAF,CAA+B;EACnD,MAAM;IAAEG;EAAF,IAAc,IAAAC,sBAAA,GAApB;EACA,oBACE,6BAAC,iBAAD;IAAM,KAAK,EAAE,CAACI,MAAM,CAACC,SAAR,EAAmBQ,uBAAA,CAAWC,YAA9B;EAAb,gBACE,6BAAC,iBAAD;IAAM,KAAK,EAAE,CAACD,uBAAA,CAAWC,YAAZ,EAA0B;MAAEL,eAAe,EAAEV,OAAO,CAACkB,UAA3B;MAAuCC,OAAO,EAAE;IAAhD,CAA1B;EAAb,EADF,eAEE,6BAAC,aAAD;IAAM,KAAK,EAAEnB,OAAO,CAACoB,kBAArB;IAAyC,IAAI,EAAE,MAA/C;IAAuD,IAAI,EAAEvB,IAAI,GAAG;EAApE,EAFF,CADF;AAMD,CARD;;AAUA,MAAMQ,MAAM,GAAG,IAAAgB,yBAAA,EAAiB;EAC9Bf,SAAS,EAAE;IACTgB,UAAU,EAAE,QADH;IAETC,cAAc,EAAE,QAFP;IAGTC,QAAQ,EAAE;EAHD;AADmB,CAAjB,CAAf;AAQA/B,MAAM,CAACgC,KAAP,GAAeC,oBAAf;AACAjC,MAAM,CAACkC,IAAP,GAAcC,mBAAd;eACenC,M"}
@@ -1 +1 @@
1
- {"version":3,"names":["Badge","count","maxCount","badgeColor","textColor","style","size","colors","useUIKitTheme","isSmall","styles","badgeSmall","badgeDefault","backgroundColor","ui","badge","default","none","background","badgeSmallPadding","badgeDefaultPadding","text","truncatedBadgeCount","createStyleSheet","paddingTop","Platform","select","ios","android","minWidth","minHeight","borderRadius","alignItems","justifyContent","paddingHorizontal"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { Platform, StyleProp, View, ViewStyle } from 'react-native';\n\nimport { truncatedBadgeCount } from '@sendbird/uikit-utils';\n\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport Text from '../Text';\n\ntype Props = {\n count: number;\n maxCount?: number;\n badgeColor?: string;\n textColor?: string;\n style?: StyleProp<ViewStyle>;\n size?: 'small' | 'default';\n};\n\nconst Badge: React.FC<Props> = ({ count, maxCount, badgeColor, textColor, style, size = 'default' }) => {\n const { colors } = useUIKitTheme();\n const isSmall = size === 'small';\n return (\n <View\n style={[\n isSmall ? styles.badgeSmall : styles.badgeDefault,\n { backgroundColor: badgeColor ?? colors.ui.badge.default.none.background },\n count >= 10 && (isSmall ? styles.badgeSmallPadding : styles.badgeDefaultPadding),\n style,\n ]}\n >\n <Text caption1 color={textColor ?? colors.ui.badge.default.none.text}>\n {truncatedBadgeCount(count, maxCount)}\n </Text>\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n badgeDefault: {\n paddingTop: Platform.select({ ios: 2, android: 2 }),\n minWidth: 20,\n minHeight: 20,\n borderRadius: 99,\n alignItems: 'center',\n justifyContent: 'center',\n },\n badgeDefaultPadding: {\n paddingHorizontal: 8,\n },\n badgeSmall: {\n paddingTop: Platform.select({ ios: 3, android: 2 }),\n minWidth: 16,\n minHeight: 16,\n borderRadius: 99,\n alignItems: 'center',\n justifyContent: 'center',\n },\n badgeSmallPadding: {\n paddingHorizontal: 4,\n },\n});\n\nexport default Badge;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AAEA;;AACA;;AACA;;;;AAWA,MAAMA,KAAsB,GAAG,QAAyE;EAAA,IAAxE;IAAEC,KAAF;IAASC,QAAT;IAAmBC,UAAnB;IAA+BC,SAA/B;IAA0CC,KAA1C;IAAiDC,IAAI,GAAG;EAAxD,CAAwE;EACtG,MAAM;IAAEC;EAAF,IAAa,IAAAC,sBAAA,GAAnB;EACA,MAAMC,OAAO,GAAGH,IAAI,KAAK,OAAzB;EACA,oBACE,6BAAC,iBAAD;IACE,KAAK,EAAE,CACLG,OAAO,GAAGC,MAAM,CAACC,UAAV,GAAuBD,MAAM,CAACE,YADhC,EAEL;MAAEC,eAAe,EAAEV,UAAU,IAAII,MAAM,CAACO,EAAP,CAAUC,KAAV,CAAgBC,OAAhB,CAAwBC,IAAxB,CAA6BC;IAA9D,CAFK,EAGLjB,KAAK,IAAI,EAAT,KAAgBQ,OAAO,GAAGC,MAAM,CAACS,iBAAV,GAA8BT,MAAM,CAACU,mBAA5D,CAHK,EAILf,KAJK;EADT,gBAQE,6BAAC,aAAD;IAAM,QAAQ,MAAd;IAAe,KAAK,EAAED,SAAS,IAAIG,MAAM,CAACO,EAAP,CAAUC,KAAV,CAAgBC,OAAhB,CAAwBC,IAAxB,CAA6BI;EAAhE,GACG,IAAAC,+BAAA,EAAoBrB,KAApB,EAA2BC,QAA3B,CADH,CARF,CADF;AAcD,CAjBD;;AAmBA,MAAMQ,MAAM,GAAG,IAAAa,yBAAA,EAAiB;EAC9BX,YAAY,EAAE;IACZY,UAAU,EAAEC,qBAAA,CAASC,MAAT,CAAgB;MAAEC,GAAG,EAAE,CAAP;MAAUC,OAAO,EAAE;IAAnB,CAAhB,CADA;IAEZC,QAAQ,EAAE,EAFE;IAGZC,SAAS,EAAE,EAHC;IAIZC,YAAY,EAAE,EAJF;IAKZC,UAAU,EAAE,QALA;IAMZC,cAAc,EAAE;EANJ,CADgB;EAS9Bb,mBAAmB,EAAE;IACnBc,iBAAiB,EAAE;EADA,CATS;EAY9BvB,UAAU,EAAE;IACVa,UAAU,EAAEC,qBAAA,CAASC,MAAT,CAAgB;MAAEC,GAAG,EAAE,CAAP;MAAUC,OAAO,EAAE;IAAnB,CAAhB,CADF;IAEVC,QAAQ,EAAE,EAFA;IAGVC,SAAS,EAAE,EAHD;IAIVC,YAAY,EAAE,EAJJ;IAKVC,UAAU,EAAE,QALF;IAMVC,cAAc,EAAE;EANN,CAZkB;EAoB9Bd,iBAAiB,EAAE;IACjBe,iBAAiB,EAAE;EADF;AApBW,CAAjB,CAAf;eAyBelC,K"}
1
+ {"version":3,"names":["Badge","count","maxCount","badgeColor","textColor","style","size","colors","useUIKitTheme","isSmall","styles","badgeSmall","badgeDefault","backgroundColor","ui","badge","default","none","background","badgeSmallPadding","badgeDefaultPadding","text","truncatedBadgeCount","createStyleSheet","paddingTop","Platform","select","ios","android","minWidth","minHeight","borderRadius","alignItems","justifyContent","paddingHorizontal"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { Platform, StyleProp, View, ViewStyle } from 'react-native';\n\nimport { truncatedBadgeCount } from '@sendbird/uikit-utils';\n\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport Text from '../Text';\n\ntype Props = {\n count: number;\n maxCount?: number;\n badgeColor?: string;\n textColor?: string;\n style?: StyleProp<ViewStyle>;\n size?: 'small' | 'default';\n};\n\nconst Badge = ({ count, maxCount, badgeColor, textColor, style, size = 'default' }: Props) => {\n const { colors } = useUIKitTheme();\n const isSmall = size === 'small';\n return (\n <View\n style={[\n isSmall ? styles.badgeSmall : styles.badgeDefault,\n { backgroundColor: badgeColor ?? colors.ui.badge.default.none.background },\n count >= 10 && (isSmall ? styles.badgeSmallPadding : styles.badgeDefaultPadding),\n style,\n ]}\n >\n <Text caption1 color={textColor ?? colors.ui.badge.default.none.text}>\n {truncatedBadgeCount(count, maxCount)}\n </Text>\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n badgeDefault: {\n paddingTop: Platform.select({ ios: 2, android: 2 }),\n minWidth: 20,\n minHeight: 20,\n borderRadius: 99,\n alignItems: 'center',\n justifyContent: 'center',\n },\n badgeDefaultPadding: {\n paddingHorizontal: 8,\n },\n badgeSmall: {\n paddingTop: Platform.select({ ios: 3, android: 2 }),\n minWidth: 16,\n minHeight: 16,\n borderRadius: 99,\n alignItems: 'center',\n justifyContent: 'center',\n },\n badgeSmallPadding: {\n paddingHorizontal: 4,\n },\n});\n\nexport default Badge;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AAEA;;AACA;;AACA;;;;AAWA,MAAMA,KAAK,GAAG,QAAgF;EAAA,IAA/E;IAAEC,KAAF;IAASC,QAAT;IAAmBC,UAAnB;IAA+BC,SAA/B;IAA0CC,KAA1C;IAAiDC,IAAI,GAAG;EAAxD,CAA+E;EAC5F,MAAM;IAAEC;EAAF,IAAa,IAAAC,sBAAA,GAAnB;EACA,MAAMC,OAAO,GAAGH,IAAI,KAAK,OAAzB;EACA,oBACE,6BAAC,iBAAD;IACE,KAAK,EAAE,CACLG,OAAO,GAAGC,MAAM,CAACC,UAAV,GAAuBD,MAAM,CAACE,YADhC,EAEL;MAAEC,eAAe,EAAEV,UAAU,IAAII,MAAM,CAACO,EAAP,CAAUC,KAAV,CAAgBC,OAAhB,CAAwBC,IAAxB,CAA6BC;IAA9D,CAFK,EAGLjB,KAAK,IAAI,EAAT,KAAgBQ,OAAO,GAAGC,MAAM,CAACS,iBAAV,GAA8BT,MAAM,CAACU,mBAA5D,CAHK,EAILf,KAJK;EADT,gBAQE,6BAAC,aAAD;IAAM,QAAQ,MAAd;IAAe,KAAK,EAAED,SAAS,IAAIG,MAAM,CAACO,EAAP,CAAUC,KAAV,CAAgBC,OAAhB,CAAwBC,IAAxB,CAA6BI;EAAhE,GACG,IAAAC,+BAAA,EAAoBrB,KAApB,EAA2BC,QAA3B,CADH,CARF,CADF;AAcD,CAjBD;;AAmBA,MAAMQ,MAAM,GAAG,IAAAa,yBAAA,EAAiB;EAC9BX,YAAY,EAAE;IACZY,UAAU,EAAEC,qBAAA,CAASC,MAAT,CAAgB;MAAEC,GAAG,EAAE,CAAP;MAAUC,OAAO,EAAE;IAAnB,CAAhB,CADA;IAEZC,QAAQ,EAAE,EAFE;IAGZC,SAAS,EAAE,EAHC;IAIZC,YAAY,EAAE,EAJF;IAKZC,UAAU,EAAE,QALA;IAMZC,cAAc,EAAE;EANJ,CADgB;EAS9Bb,mBAAmB,EAAE;IACnBc,iBAAiB,EAAE;EADA,CATS;EAY9BvB,UAAU,EAAE;IACVa,UAAU,EAAEC,qBAAA,CAASC,MAAT,CAAgB;MAAEC,GAAG,EAAE,CAAP;MAAUC,OAAO,EAAE;IAAnB,CAAhB,CADF;IAEVC,QAAQ,EAAE,EAFA;IAGVC,SAAS,EAAE,EAHD;IAIVC,YAAY,EAAE,EAJJ;IAKVC,UAAU,EAAE,QALF;IAMVC,cAAc,EAAE;EANN,CAZkB;EAoB9Bd,iBAAiB,EAAE;IACjBe,iBAAiB,EAAE;EADF;AApBW,CAAjB,CAAf;eAyBelC,K"}
@@ -1 +1 @@
1
- {"version":3,"names":["BottomSheet","onDismiss","onHide","visible","sheetItems","statusBarTranslucent","useHeaderStyle","width","useWindowDimensions","bottom","left","right","useSafeAreaInsets","alignItems","justifyContent","paddingBottom","map","idx","onPress","props","title","paddingLeft","paddingRight"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { TouchableOpacity, useWindowDimensions } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport useHeaderStyle from '../../styles/useHeaderStyle';\nimport DialogSheet from '../Dialog/DialogSheet';\nimport type Icon from '../Icon';\nimport Modal from '../Modal';\n\nexport type BottomSheetItem = {\n sheetItems: {\n icon?: keyof typeof Icon.Assets;\n iconColor?: string;\n title: string;\n titleColor?: string;\n onPress: () => void;\n }[];\n};\ntype Props = {\n visible: boolean;\n onHide: () => Promise<void>;\n onError?: (error: unknown) => void;\n onDismiss?: () => void;\n} & BottomSheetItem;\nconst BottomSheet: React.FC<Props> = ({ onDismiss, onHide, visible, sheetItems }) => {\n const { statusBarTranslucent } = useHeaderStyle();\n const { width } = useWindowDimensions();\n const { bottom, left, right } = useSafeAreaInsets();\n return (\n <Modal\n type={'slide'}\n onClose={onHide}\n onDismiss={onDismiss}\n statusBarTranslucent={statusBarTranslucent}\n visible={visible}\n backgroundStyle={{ alignItems: 'center', justifyContent: 'flex-end' }}\n >\n <DialogSheet style={{ width, paddingBottom: bottom }}>\n {sheetItems.map(({ onPress, ...props }, idx) => (\n <TouchableOpacity\n activeOpacity={0.75}\n key={props.title + idx}\n style={{ paddingLeft: left, paddingRight: right }}\n onPress={async () => {\n await onHide();\n try {\n onPress();\n } catch {}\n }}\n >\n <DialogSheet.Item {...props} />\n </TouchableOpacity>\n ))}\n </DialogSheet>\n </Modal>\n );\n};\n\nexport default BottomSheet;\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AAEA;;AACA;;AAEA;;;;AAiBA,MAAMA,WAA4B,GAAG,QAAgD;EAAA,IAA/C;IAAEC,SAAF;IAAaC,MAAb;IAAqBC,OAArB;IAA8BC;EAA9B,CAA+C;EACnF,MAAM;IAAEC;EAAF,IAA2B,IAAAC,uBAAA,GAAjC;EACA,MAAM;IAAEC;EAAF,IAAY,IAAAC,gCAAA,GAAlB;EACA,MAAM;IAAEC,MAAF;IAAUC,IAAV;IAAgBC;EAAhB,IAA0B,IAAAC,6CAAA,GAAhC;EACA,oBACE,6BAAC,cAAD;IACE,IAAI,EAAE,OADR;IAEE,OAAO,EAAEV,MAFX;IAGE,SAAS,EAAED,SAHb;IAIE,oBAAoB,EAAEI,oBAJxB;IAKE,OAAO,EAAEF,OALX;IAME,eAAe,EAAE;MAAEU,UAAU,EAAE,QAAd;MAAwBC,cAAc,EAAE;IAAxC;EANnB,gBAQE,6BAAC,oBAAD;IAAa,KAAK,EAAE;MAAEP,KAAF;MAASQ,aAAa,EAAEN;IAAxB;EAApB,GACGL,UAAU,CAACY,GAAX,CAAe,QAAwBC,GAAxB;IAAA,IAAC;MAAEC,OAAF;MAAW,GAAGC;IAAd,CAAD;IAAA,oBACd,6BAAC,6BAAD;MACE,aAAa,EAAE,IADjB;MAEE,GAAG,EAAEA,KAAK,CAACC,KAAN,GAAcH,GAFrB;MAGE,KAAK,EAAE;QAAEI,WAAW,EAAEX,IAAf;QAAqBY,YAAY,EAAEX;MAAnC,CAHT;MAIE,OAAO,EAAE,YAAY;QACnB,MAAMT,MAAM,EAAZ;;QACA,IAAI;UACFgB,OAAO;QACR,CAFD,CAEE,MAAM,CAAE;MACX;IATH,gBAWE,6BAAC,oBAAD,CAAa,IAAb,EAAsBC,KAAtB,CAXF,CADc;EAAA,CAAf,CADH,CARF,CADF;AA4BD,CAhCD;;eAkCenB,W"}
1
+ {"version":3,"names":["BottomSheet","onDismiss","onHide","visible","sheetItems","statusBarTranslucent","useHeaderStyle","width","useWindowDimensions","bottom","left","right","useSafeAreaInsets","alignItems","justifyContent","paddingBottom","map","idx","onPress","props","title","paddingLeft","paddingRight"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { TouchableOpacity, useWindowDimensions } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport useHeaderStyle from '../../styles/useHeaderStyle';\nimport DialogSheet from '../Dialog/DialogSheet';\nimport type Icon from '../Icon';\nimport Modal from '../Modal';\n\nexport type BottomSheetItem = {\n sheetItems: {\n icon?: keyof typeof Icon.Assets;\n iconColor?: string;\n title: string;\n titleColor?: string;\n onPress: () => void;\n }[];\n};\ntype Props = {\n visible: boolean;\n onHide: () => Promise<void>;\n onError?: (error: unknown) => void;\n onDismiss?: () => void;\n} & BottomSheetItem;\nconst BottomSheet = ({ onDismiss, onHide, visible, sheetItems }: Props) => {\n const { statusBarTranslucent } = useHeaderStyle();\n const { width } = useWindowDimensions();\n const { bottom, left, right } = useSafeAreaInsets();\n return (\n <Modal\n type={'slide'}\n onClose={onHide}\n onDismiss={onDismiss}\n statusBarTranslucent={statusBarTranslucent}\n visible={visible}\n backgroundStyle={{ alignItems: 'center', justifyContent: 'flex-end' }}\n >\n <DialogSheet style={{ width, paddingBottom: bottom }}>\n {sheetItems.map(({ onPress, ...props }, idx) => (\n <TouchableOpacity\n activeOpacity={0.75}\n key={props.title + idx}\n style={{ paddingLeft: left, paddingRight: right }}\n onPress={async () => {\n await onHide();\n try {\n onPress();\n } catch {}\n }}\n >\n <DialogSheet.Item {...props} />\n </TouchableOpacity>\n ))}\n </DialogSheet>\n </Modal>\n );\n};\n\nexport default BottomSheet;\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AAEA;;AACA;;AAEA;;;;AAiBA,MAAMA,WAAW,GAAG,QAAuD;EAAA,IAAtD;IAAEC,SAAF;IAAaC,MAAb;IAAqBC,OAArB;IAA8BC;EAA9B,CAAsD;EACzE,MAAM;IAAEC;EAAF,IAA2B,IAAAC,uBAAA,GAAjC;EACA,MAAM;IAAEC;EAAF,IAAY,IAAAC,gCAAA,GAAlB;EACA,MAAM;IAAEC,MAAF;IAAUC,IAAV;IAAgBC;EAAhB,IAA0B,IAAAC,6CAAA,GAAhC;EACA,oBACE,6BAAC,cAAD;IACE,IAAI,EAAE,OADR;IAEE,OAAO,EAAEV,MAFX;IAGE,SAAS,EAAED,SAHb;IAIE,oBAAoB,EAAEI,oBAJxB;IAKE,OAAO,EAAEF,OALX;IAME,eAAe,EAAE;MAAEU,UAAU,EAAE,QAAd;MAAwBC,cAAc,EAAE;IAAxC;EANnB,gBAQE,6BAAC,oBAAD;IAAa,KAAK,EAAE;MAAEP,KAAF;MAASQ,aAAa,EAAEN;IAAxB;EAApB,GACGL,UAAU,CAACY,GAAX,CAAe,QAAwBC,GAAxB;IAAA,IAAC;MAAEC,OAAF;MAAW,GAAGC;IAAd,CAAD;IAAA,oBACd,6BAAC,6BAAD;MACE,aAAa,EAAE,IADjB;MAEE,GAAG,EAAEA,KAAK,CAACC,KAAN,GAAcH,GAFrB;MAGE,KAAK,EAAE;QAAEI,WAAW,EAAEX,IAAf;QAAqBY,YAAY,EAAEX;MAAnC,CAHT;MAIE,OAAO,EAAE,YAAY;QACnB,MAAMT,MAAM,EAAZ;;QACA,IAAI;UACFgB,OAAO;QACR,CAFD,CAEE,MAAM,CAAE;MACX;IATH,gBAWE,6BAAC,oBAAD,CAAa,IAAb,EAAsBC,KAAtB,CAXF,CADc;EAAA,CAAf,CADH,CARF,CADF;AA4BD,CAhCD;;eAkCenB,W"}
@@ -1 +1 @@
1
- {"version":3,"names":["Button","icon","variant","buttonColor","contentColor","disabled","onPress","style","children","colors","useUIKitTheme","getStateColor","pressed","stateColors","ui","button","enabled","stateColor","backgroundColor","background","styles","container","content","text","createStyleSheet","flexDirection","padding","borderRadius","alignItems","justifyContent","marginVertical","marginRight"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { Pressable, StyleProp, ViewStyle } from 'react-native';\n\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport Icon from '../Icon';\nimport Text from '../Text';\n\ntype Props = {\n style?: StyleProp<ViewStyle>;\n icon?: keyof typeof Icon.Assets;\n variant?: 'contained' | 'text';\n disabled?: boolean;\n onPress?: () => void;\n buttonColor?: string;\n contentColor?: string;\n};\nconst Button: React.FC<Props> = ({\n icon,\n variant = 'contained',\n buttonColor,\n contentColor,\n disabled,\n onPress,\n style,\n children,\n}) => {\n const { colors } = useUIKitTheme();\n\n const getStateColor = (pressed: boolean, disabled?: boolean) => {\n const stateColors = colors.ui.button[variant];\n if (disabled) return stateColors.disabled;\n if (pressed) return stateColors.pressed;\n return stateColors.enabled;\n };\n\n return (\n <Pressable\n disabled={disabled}\n onPress={onPress}\n style={({ pressed }) => {\n const stateColor = getStateColor(pressed, disabled);\n return [{ backgroundColor: buttonColor ?? stateColor.background }, styles.container, style];\n }}\n >\n {({ pressed }) => {\n const stateColor = getStateColor(pressed, disabled);\n\n return (\n <>\n {icon && (\n <Icon size={24} icon={icon} color={contentColor ?? stateColor.content} containerStyle={styles.icon} />\n )}\n <Text button color={contentColor ?? stateColor.content} style={styles.text}>\n {children}\n </Text>\n </>\n );\n }}\n </Pressable>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n flexDirection: 'row',\n padding: 8,\n borderRadius: 4,\n alignItems: 'center',\n justifyContent: 'center',\n },\n icon: { marginVertical: -4, marginRight: 8 },\n text: {},\n});\n\nexport default Button;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;AACA;;AACA;;;;AAWA,MAAMA,MAAuB,GAAG,QAS1B;EAAA,IAT2B;IAC/BC,IAD+B;IAE/BC,OAAO,GAAG,WAFqB;IAG/BC,WAH+B;IAI/BC,YAJ+B;IAK/BC,QAL+B;IAM/BC,OAN+B;IAO/BC,KAP+B;IAQ/BC;EAR+B,CAS3B;EACJ,MAAM;IAAEC;EAAF,IAAa,IAAAC,sBAAA,GAAnB;;EAEA,MAAMC,aAAa,GAAG,CAACC,OAAD,EAAmBP,QAAnB,KAA0C;IAC9D,MAAMQ,WAAW,GAAGJ,MAAM,CAACK,EAAP,CAAUC,MAAV,CAAiBb,OAAjB,CAApB;IACA,IAAIG,QAAJ,EAAc,OAAOQ,WAAW,CAACR,QAAnB;IACd,IAAIO,OAAJ,EAAa,OAAOC,WAAW,CAACD,OAAnB;IACb,OAAOC,WAAW,CAACG,OAAnB;EACD,CALD;;EAOA,oBACE,6BAAC,sBAAD;IACE,QAAQ,EAAEX,QADZ;IAEE,OAAO,EAAEC,OAFX;IAGE,KAAK,EAAE,SAAiB;MAAA,IAAhB;QAAEM;MAAF,CAAgB;MACtB,MAAMK,UAAU,GAAGN,aAAa,CAACC,OAAD,EAAUP,QAAV,CAAhC;MACA,OAAO,CAAC;QAAEa,eAAe,EAAEf,WAAW,IAAIc,UAAU,CAACE;MAA7C,CAAD,EAA4DC,MAAM,CAACC,SAAnE,EAA8Ed,KAA9E,CAAP;IACD;EANH,GAQG,SAAiB;IAAA,IAAhB;MAAEK;IAAF,CAAgB;IAChB,MAAMK,UAAU,GAAGN,aAAa,CAACC,OAAD,EAAUP,QAAV,CAAhC;IAEA,oBACE,4DACGJ,IAAI,iBACH,6BAAC,aAAD;MAAM,IAAI,EAAE,EAAZ;MAAgB,IAAI,EAAEA,IAAtB;MAA4B,KAAK,EAAEG,YAAY,IAAIa,UAAU,CAACK,OAA9D;MAAuE,cAAc,EAAEF,MAAM,CAACnB;IAA9F,EAFJ,eAIE,6BAAC,aAAD;MAAM,MAAM,MAAZ;MAAa,KAAK,EAAEG,YAAY,IAAIa,UAAU,CAACK,OAA/C;MAAwD,KAAK,EAAEF,MAAM,CAACG;IAAtE,GACGf,QADH,CAJF,CADF;EAUD,CArBH,CADF;AAyBD,CA5CD;;AA8CA,MAAMY,MAAM,GAAG,IAAAI,yBAAA,EAAiB;EAC9BH,SAAS,EAAE;IACTI,aAAa,EAAE,KADN;IAETC,OAAO,EAAE,CAFA;IAGTC,YAAY,EAAE,CAHL;IAITC,UAAU,EAAE,QAJH;IAKTC,cAAc,EAAE;EALP,CADmB;EAQ9B5B,IAAI,EAAE;IAAE6B,cAAc,EAAE,CAAC,CAAnB;IAAsBC,WAAW,EAAE;EAAnC,CARwB;EAS9BR,IAAI,EAAE;AATwB,CAAjB,CAAf;eAYevB,M"}
1
+ {"version":3,"names":["Button","icon","variant","buttonColor","contentColor","disabled","onPress","style","children","colors","useUIKitTheme","getStateColor","pressed","stateColors","ui","button","enabled","stateColor","backgroundColor","background","styles","container","content","text","createStyleSheet","flexDirection","padding","borderRadius","alignItems","justifyContent","marginVertical","marginRight"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { Pressable, StyleProp, ViewStyle } from 'react-native';\n\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport Icon from '../Icon';\nimport Text from '../Text';\n\ntype Props = React.PropsWithChildren<{\n style?: StyleProp<ViewStyle>;\n icon?: keyof typeof Icon.Assets;\n variant?: 'contained' | 'text';\n disabled?: boolean;\n onPress?: () => void;\n buttonColor?: string;\n contentColor?: string;\n}>;\nconst Button = ({\n icon,\n variant = 'contained',\n buttonColor,\n contentColor,\n disabled,\n onPress,\n style,\n children,\n}: Props) => {\n const { colors } = useUIKitTheme();\n\n const getStateColor = (pressed: boolean, disabled?: boolean) => {\n const stateColors = colors.ui.button[variant];\n if (disabled) return stateColors.disabled;\n if (pressed) return stateColors.pressed;\n return stateColors.enabled;\n };\n\n return (\n <Pressable\n disabled={disabled}\n onPress={onPress}\n style={({ pressed }) => {\n const stateColor = getStateColor(pressed, disabled);\n return [{ backgroundColor: buttonColor ?? stateColor.background }, styles.container, style];\n }}\n >\n {({ pressed }) => {\n const stateColor = getStateColor(pressed, disabled);\n\n return (\n <>\n {icon && (\n <Icon size={24} icon={icon} color={contentColor ?? stateColor.content} containerStyle={styles.icon} />\n )}\n <Text button color={contentColor ?? stateColor.content} style={styles.text}>\n {children}\n </Text>\n </>\n );\n }}\n </Pressable>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n flexDirection: 'row',\n padding: 8,\n borderRadius: 4,\n alignItems: 'center',\n justifyContent: 'center',\n },\n icon: { marginVertical: -4, marginRight: 8 },\n text: {},\n});\n\nexport default Button;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;AACA;;AACA;;;;AAWA,MAAMA,MAAM,GAAG,QASF;EAAA,IATG;IACdC,IADc;IAEdC,OAAO,GAAG,WAFI;IAGdC,WAHc;IAIdC,YAJc;IAKdC,QALc;IAMdC,OANc;IAOdC,KAPc;IAQdC;EARc,CASH;EACX,MAAM;IAAEC;EAAF,IAAa,IAAAC,sBAAA,GAAnB;;EAEA,MAAMC,aAAa,GAAG,CAACC,OAAD,EAAmBP,QAAnB,KAA0C;IAC9D,MAAMQ,WAAW,GAAGJ,MAAM,CAACK,EAAP,CAAUC,MAAV,CAAiBb,OAAjB,CAApB;IACA,IAAIG,QAAJ,EAAc,OAAOQ,WAAW,CAACR,QAAnB;IACd,IAAIO,OAAJ,EAAa,OAAOC,WAAW,CAACD,OAAnB;IACb,OAAOC,WAAW,CAACG,OAAnB;EACD,CALD;;EAOA,oBACE,6BAAC,sBAAD;IACE,QAAQ,EAAEX,QADZ;IAEE,OAAO,EAAEC,OAFX;IAGE,KAAK,EAAE,SAAiB;MAAA,IAAhB;QAAEM;MAAF,CAAgB;MACtB,MAAMK,UAAU,GAAGN,aAAa,CAACC,OAAD,EAAUP,QAAV,CAAhC;MACA,OAAO,CAAC;QAAEa,eAAe,EAAEf,WAAW,IAAIc,UAAU,CAACE;MAA7C,CAAD,EAA4DC,MAAM,CAACC,SAAnE,EAA8Ed,KAA9E,CAAP;IACD;EANH,GAQG,SAAiB;IAAA,IAAhB;MAAEK;IAAF,CAAgB;IAChB,MAAMK,UAAU,GAAGN,aAAa,CAACC,OAAD,EAAUP,QAAV,CAAhC;IAEA,oBACE,4DACGJ,IAAI,iBACH,6BAAC,aAAD;MAAM,IAAI,EAAE,EAAZ;MAAgB,IAAI,EAAEA,IAAtB;MAA4B,KAAK,EAAEG,YAAY,IAAIa,UAAU,CAACK,OAA9D;MAAuE,cAAc,EAAEF,MAAM,CAACnB;IAA9F,EAFJ,eAIE,6BAAC,aAAD;MAAM,MAAM,MAAZ;MAAa,KAAK,EAAEG,YAAY,IAAIa,UAAU,CAACK,OAA/C;MAAwD,KAAK,EAAEF,MAAM,CAACG;IAAtE,GACGf,QADH,CAJF,CADF;EAUD,CArBH,CADF;AAyBD,CA5CD;;AA8CA,MAAMY,MAAM,GAAG,IAAAI,yBAAA,EAAiB;EAC9BH,SAAS,EAAE;IACTI,aAAa,EAAE,KADN;IAETC,OAAO,EAAE,CAFA;IAGTC,YAAY,EAAE,CAHL;IAITC,UAAU,EAAE,QAJH;IAKTC,cAAc,EAAE;EALP,CADmB;EAQ9B5B,IAAI,EAAE;IAAE6B,cAAc,EAAE,CAAC,CAAnB;IAAsBC,WAAW,EAAE;EAAnC,CARwB;EAS9BR,IAAI,EAAE;AATwB,CAAjB,CAAf;eAYevB,M"}
@@ -1 +1 @@
1
- {"version":3,"names":["ChannelFrozenBanner","text","backgroundColor","textColor","style","palette","useUIKitTheme","styles","container","information","onBackgroundLight01","createStyleSheet","alignItems","justifyContent","paddingVertical","borderRadius"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { StyleProp, View, ViewStyle } from 'react-native';\n\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport Text from '../Text';\n\ntype Props = {\n style?: StyleProp<ViewStyle>;\n text?: string;\n textColor?: string;\n backgroundColor?: string;\n};\n\nconst ChannelFrozenBanner: React.FC<Props> = ({ text = 'Channel is frozen', backgroundColor, textColor, style }) => {\n const { palette } = useUIKitTheme();\n\n return (\n <View\n pointerEvents={'none'}\n style={[styles.container, { backgroundColor: backgroundColor ?? palette.information }, style]}\n >\n <Text caption2 color={textColor ?? palette.onBackgroundLight01}>\n {text}\n </Text>\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n alignItems: 'center',\n justifyContent: 'center',\n paddingVertical: 6,\n borderRadius: 4,\n },\n});\n\nexport default ChannelFrozenBanner;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;AACA;;;;AASA,MAAMA,mBAAoC,GAAG,QAAuE;EAAA,IAAtE;IAAEC,IAAI,GAAG,mBAAT;IAA8BC,eAA9B;IAA+CC,SAA/C;IAA0DC;EAA1D,CAAsE;EAClH,MAAM;IAAEC;EAAF,IAAc,IAAAC,sBAAA,GAApB;EAEA,oBACE,6BAAC,iBAAD;IACE,aAAa,EAAE,MADjB;IAEE,KAAK,EAAE,CAACC,MAAM,CAACC,SAAR,EAAmB;MAAEN,eAAe,EAAEA,eAAe,IAAIG,OAAO,CAACI;IAA9C,CAAnB,EAAgFL,KAAhF;EAFT,gBAIE,6BAAC,aAAD;IAAM,QAAQ,MAAd;IAAe,KAAK,EAAED,SAAS,IAAIE,OAAO,CAACK;EAA3C,GACGT,IADH,CAJF,CADF;AAUD,CAbD;;AAeA,MAAMM,MAAM,GAAG,IAAAI,yBAAA,EAAiB;EAC9BH,SAAS,EAAE;IACTI,UAAU,EAAE,QADH;IAETC,cAAc,EAAE,QAFP;IAGTC,eAAe,EAAE,CAHR;IAITC,YAAY,EAAE;EAJL;AADmB,CAAjB,CAAf;eASef,mB"}
1
+ {"version":3,"names":["ChannelFrozenBanner","text","backgroundColor","textColor","style","palette","useUIKitTheme","styles","container","information","onBackgroundLight01","createStyleSheet","alignItems","justifyContent","paddingVertical","borderRadius"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { StyleProp, View, ViewStyle } from 'react-native';\n\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport Text from '../Text';\n\ntype Props = {\n style?: StyleProp<ViewStyle>;\n text?: string;\n textColor?: string;\n backgroundColor?: string;\n};\n\nconst ChannelFrozenBanner = ({ text = 'Channel is frozen', backgroundColor, textColor, style }: Props) => {\n const { palette } = useUIKitTheme();\n\n return (\n <View\n pointerEvents={'none'}\n style={[styles.container, { backgroundColor: backgroundColor ?? palette.information }, style]}\n >\n <Text caption2 color={textColor ?? palette.onBackgroundLight01}>\n {text}\n </Text>\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n alignItems: 'center',\n justifyContent: 'center',\n paddingVertical: 6,\n borderRadius: 4,\n },\n});\n\nexport default ChannelFrozenBanner;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;AACA;;;;AASA,MAAMA,mBAAmB,GAAG,QAA8E;EAAA,IAA7E;IAAEC,IAAI,GAAG,mBAAT;IAA8BC,eAA9B;IAA+CC,SAA/C;IAA0DC;EAA1D,CAA6E;EACxG,MAAM;IAAEC;EAAF,IAAc,IAAAC,sBAAA,GAApB;EAEA,oBACE,6BAAC,iBAAD;IACE,aAAa,EAAE,MADjB;IAEE,KAAK,EAAE,CAACC,MAAM,CAACC,SAAR,EAAmB;MAAEN,eAAe,EAAEA,eAAe,IAAIG,OAAO,CAACI;IAA9C,CAAnB,EAAgFL,KAAhF;EAFT,gBAIE,6BAAC,aAAD;IAAM,QAAQ,MAAd;IAAe,KAAK,EAAED,SAAS,IAAIE,OAAO,CAACK;EAA3C,GACGT,IADH,CAJF,CADF;AAUD,CAbD;;AAeA,MAAMM,MAAM,GAAG,IAAAI,yBAAA,EAAiB;EAC9BH,SAAS,EAAE;IACTI,UAAU,EAAE,QADH;IAETC,cAAc,EAAE,QAFP;IAGTC,eAAe,EAAE,CAHR;IAITC,YAAY,EAAE;EAJL;AADmB,CAAjB,CAAf;eASef,mB"}
@@ -1 +1 @@
1
- {"version":3,"names":["DialogBox","style","children","colors","useUIKitTheme","styles","container","backgroundColor","ui","dialog","default","none","background","createStyleSheet","width","borderRadius"],"sources":["DialogBox.tsx"],"sourcesContent":["import React from 'react';\nimport { StyleProp, View, ViewStyle } from 'react-native';\n\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\n\ntype Props = {\n style?: StyleProp<ViewStyle>;\n};\nconst DialogBox: React.FC<Props> = ({ style, children }) => {\n const { colors } = useUIKitTheme();\n return (\n <View style={[styles.container, { backgroundColor: colors.ui.dialog.default.none.background }, style]}>\n {children}\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n width: 280,\n borderRadius: 4,\n },\n});\n\nexport default DialogBox;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;;;AAKA,MAAMA,SAA0B,GAAG,QAAyB;EAAA,IAAxB;IAAEC,KAAF;IAASC;EAAT,CAAwB;EAC1D,MAAM;IAAEC;EAAF,IAAa,IAAAC,sBAAA,GAAnB;EACA,oBACE,6BAAC,iBAAD;IAAM,KAAK,EAAE,CAACC,MAAM,CAACC,SAAR,EAAmB;MAAEC,eAAe,EAAEJ,MAAM,CAACK,EAAP,CAAUC,MAAV,CAAiBC,OAAjB,CAAyBC,IAAzB,CAA8BC;IAAjD,CAAnB,EAAkFX,KAAlF;EAAb,GACGC,QADH,CADF;AAKD,CAPD;;AASA,MAAMG,MAAM,GAAG,IAAAQ,yBAAA,EAAiB;EAC9BP,SAAS,EAAE;IACTQ,KAAK,EAAE,GADE;IAETC,YAAY,EAAE;EAFL;AADmB,CAAjB,CAAf;eAOef,S"}
1
+ {"version":3,"names":["DialogBox","style","children","colors","useUIKitTheme","styles","container","backgroundColor","ui","dialog","default","none","background","createStyleSheet","width","borderRadius"],"sources":["DialogBox.tsx"],"sourcesContent":["import React from 'react';\nimport { StyleProp, View, ViewStyle } from 'react-native';\n\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\n\ntype Props = React.PropsWithChildren<{\n style?: StyleProp<ViewStyle>;\n}>;\nconst DialogBox = ({ style, children }: Props) => {\n const { colors } = useUIKitTheme();\n return (\n <View style={[styles.container, { backgroundColor: colors.ui.dialog.default.none.background }, style]}>\n {children}\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n width: 280,\n borderRadius: 4,\n },\n});\n\nexport default DialogBox;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;;;AAKA,MAAMA,SAAS,GAAG,QAAgC;EAAA,IAA/B;IAAEC,KAAF;IAASC;EAAT,CAA+B;EAChD,MAAM;IAAEC;EAAF,IAAa,IAAAC,sBAAA,GAAnB;EACA,oBACE,6BAAC,iBAAD;IAAM,KAAK,EAAE,CAACC,MAAM,CAACC,SAAR,EAAmB;MAAEC,eAAe,EAAEJ,MAAM,CAACK,EAAP,CAAUC,MAAV,CAAiBC,OAAjB,CAAyBC,IAAzB,CAA8BC;IAAjD,CAAnB,EAAkFX,KAAlF;EAAb,GACGC,QADH,CADF;AAKD,CAPD;;AASA,MAAMG,MAAM,GAAG,IAAAQ,yBAAA,EAAiB;EAC9BP,SAAS,EAAE;IACTQ,KAAK,EAAE,GADE;IAETC,YAAY,EAAE;EAFL;AADmB,CAAjB,CAAf;eAOef,S"}
@@ -1 +1 @@
1
- {"version":3,"names":["DialogSheet","style","children","colors","useUIKitTheme","styles","container","backgroundColor","ui","dialog","default","none","background","SheetItem","icon","title","iconColor","titleColor","sheetItemContainer","highlight","sheetItemIcon","text","sheetItemText","createStyleSheet","overflow","flexDirection","width","borderTopLeftRadius","borderTopRightRadius","alignItems","height","marginLeft","marginHorizontal","Item"],"sources":["DialogSheet.tsx"],"sourcesContent":["import React from 'react';\nimport { StyleProp, View, ViewStyle } from 'react-native';\n\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport Icon from '../Icon';\nimport Text from '../Text';\n\ntype Props = {\n style?: StyleProp<ViewStyle>;\n};\nconst DialogSheet: React.FC<Props> & { Item: typeof SheetItem } = ({ style, children }) => {\n const { colors } = useUIKitTheme();\n return (\n <View style={[styles.container, { backgroundColor: colors.ui.dialog.default.none.background }, style]}>\n {children}\n </View>\n );\n};\n\nexport type SheetItemProps = {\n icon?: keyof typeof Icon.Assets;\n iconColor?: string;\n title: string;\n titleColor?: string;\n};\nconst SheetItem: React.FC<SheetItemProps> = ({ icon, title, iconColor, titleColor }) => {\n const { colors } = useUIKitTheme();\n return (\n <View style={[styles.sheetItemContainer, { backgroundColor: colors.ui.dialog.default.none.background }]}>\n {icon && (\n <Icon\n icon={icon}\n color={iconColor ?? colors.ui.dialog.default.none.highlight}\n containerStyle={styles.sheetItemIcon}\n />\n )}\n <Text\n subtitle1\n numberOfLines={1}\n color={titleColor ?? colors.ui.dialog.default.none.text}\n style={styles.sheetItemText}\n >\n {title}\n </Text>\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n overflow: 'hidden',\n flexDirection: 'column',\n width: '100%',\n borderTopLeftRadius: 8,\n borderTopRightRadius: 8,\n },\n sheetItemContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n height: 48,\n },\n sheetItemIcon: {\n marginLeft: 16,\n },\n sheetItemText: {\n marginHorizontal: 24,\n },\n});\n\nDialogSheet.Item = SheetItem;\nexport default DialogSheet;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;AACA;;AACA;;;;AAKA,MAAMA,WAAyD,GAAG,QAAyB;EAAA,IAAxB;IAAEC,KAAF;IAASC;EAAT,CAAwB;EACzF,MAAM;IAAEC;EAAF,IAAa,IAAAC,sBAAA,GAAnB;EACA,oBACE,6BAAC,iBAAD;IAAM,KAAK,EAAE,CAACC,MAAM,CAACC,SAAR,EAAmB;MAAEC,eAAe,EAAEJ,MAAM,CAACK,EAAP,CAAUC,MAAV,CAAiBC,OAAjB,CAAyBC,IAAzB,CAA8BC;IAAjD,CAAnB,EAAkFX,KAAlF;EAAb,GACGC,QADH,CADF;AAKD,CAPD;;AAeA,MAAMW,SAAmC,GAAG,SAA4C;EAAA,IAA3C;IAAEC,IAAF;IAAQC,KAAR;IAAeC,SAAf;IAA0BC;EAA1B,CAA2C;EACtF,MAAM;IAAEd;EAAF,IAAa,IAAAC,sBAAA,GAAnB;EACA,oBACE,6BAAC,iBAAD;IAAM,KAAK,EAAE,CAACC,MAAM,CAACa,kBAAR,EAA4B;MAAEX,eAAe,EAAEJ,MAAM,CAACK,EAAP,CAAUC,MAAV,CAAiBC,OAAjB,CAAyBC,IAAzB,CAA8BC;IAAjD,CAA5B;EAAb,GACGE,IAAI,iBACH,6BAAC,aAAD;IACE,IAAI,EAAEA,IADR;IAEE,KAAK,EAAEE,SAAS,IAAIb,MAAM,CAACK,EAAP,CAAUC,MAAV,CAAiBC,OAAjB,CAAyBC,IAAzB,CAA8BQ,SAFpD;IAGE,cAAc,EAAEd,MAAM,CAACe;EAHzB,EAFJ,eAQE,6BAAC,aAAD;IACE,SAAS,MADX;IAEE,aAAa,EAAE,CAFjB;IAGE,KAAK,EAAEH,UAAU,IAAId,MAAM,CAACK,EAAP,CAAUC,MAAV,CAAiBC,OAAjB,CAAyBC,IAAzB,CAA8BU,IAHrD;IAIE,KAAK,EAAEhB,MAAM,CAACiB;EAJhB,GAMGP,KANH,CARF,CADF;AAmBD,CArBD;;AAuBA,MAAMV,MAAM,GAAG,IAAAkB,yBAAA,EAAiB;EAC9BjB,SAAS,EAAE;IACTkB,QAAQ,EAAE,QADD;IAETC,aAAa,EAAE,QAFN;IAGTC,KAAK,EAAE,MAHE;IAITC,mBAAmB,EAAE,CAJZ;IAKTC,oBAAoB,EAAE;EALb,CADmB;EAQ9BV,kBAAkB,EAAE;IAClBO,aAAa,EAAE,KADG;IAElBI,UAAU,EAAE,QAFM;IAGlBC,MAAM,EAAE;EAHU,CARU;EAa9BV,aAAa,EAAE;IACbW,UAAU,EAAE;EADC,CAbe;EAgB9BT,aAAa,EAAE;IACbU,gBAAgB,EAAE;EADL;AAhBe,CAAjB,CAAf;AAqBAhC,WAAW,CAACiC,IAAZ,GAAmBpB,SAAnB;eACeb,W"}
1
+ {"version":3,"names":["DialogSheet","style","children","colors","useUIKitTheme","styles","container","backgroundColor","ui","dialog","default","none","background","SheetItem","icon","title","iconColor","titleColor","sheetItemContainer","highlight","sheetItemIcon","text","sheetItemText","createStyleSheet","overflow","flexDirection","width","borderTopLeftRadius","borderTopRightRadius","alignItems","height","marginLeft","marginHorizontal","Item"],"sources":["DialogSheet.tsx"],"sourcesContent":["import React from 'react';\nimport { StyleProp, View, ViewStyle } from 'react-native';\n\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport Icon from '../Icon';\nimport Text from '../Text';\n\ntype Props = React.PropsWithChildren<{\n style?: StyleProp<ViewStyle>;\n}>;\nconst DialogSheet: ((props: Props) => JSX.Element) & { Item: typeof SheetItem } = ({ style, children }) => {\n const { colors } = useUIKitTheme();\n return (\n <View style={[styles.container, { backgroundColor: colors.ui.dialog.default.none.background }, style]}>\n {children}\n </View>\n );\n};\n\nexport type SheetItemProps = {\n icon?: keyof typeof Icon.Assets;\n iconColor?: string;\n title: string;\n titleColor?: string;\n};\nconst SheetItem = ({ icon, title, iconColor, titleColor }: SheetItemProps) => {\n const { colors } = useUIKitTheme();\n return (\n <View style={[styles.sheetItemContainer, { backgroundColor: colors.ui.dialog.default.none.background }]}>\n {icon && (\n <Icon\n icon={icon}\n color={iconColor ?? colors.ui.dialog.default.none.highlight}\n containerStyle={styles.sheetItemIcon}\n />\n )}\n <Text\n subtitle1\n numberOfLines={1}\n color={titleColor ?? colors.ui.dialog.default.none.text}\n style={styles.sheetItemText}\n >\n {title}\n </Text>\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n overflow: 'hidden',\n flexDirection: 'column',\n width: '100%',\n borderTopLeftRadius: 8,\n borderTopRightRadius: 8,\n },\n sheetItemContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n height: 48,\n },\n sheetItemIcon: {\n marginLeft: 16,\n },\n sheetItemText: {\n marginHorizontal: 24,\n },\n});\n\nDialogSheet.Item = SheetItem;\nexport default DialogSheet;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;AACA;;AACA;;;;AAKA,MAAMA,WAAyE,GAAG,QAAyB;EAAA,IAAxB;IAAEC,KAAF;IAASC;EAAT,CAAwB;EACzG,MAAM;IAAEC;EAAF,IAAa,IAAAC,sBAAA,GAAnB;EACA,oBACE,6BAAC,iBAAD;IAAM,KAAK,EAAE,CAACC,MAAM,CAACC,SAAR,EAAmB;MAAEC,eAAe,EAAEJ,MAAM,CAACK,EAAP,CAAUC,MAAV,CAAiBC,OAAjB,CAAyBC,IAAzB,CAA8BC;IAAjD,CAAnB,EAAkFX,KAAlF;EAAb,GACGC,QADH,CADF;AAKD,CAPD;;AAeA,MAAMW,SAAS,GAAG,SAA4D;EAAA,IAA3D;IAAEC,IAAF;IAAQC,KAAR;IAAeC,SAAf;IAA0BC;EAA1B,CAA2D;EAC5E,MAAM;IAAEd;EAAF,IAAa,IAAAC,sBAAA,GAAnB;EACA,oBACE,6BAAC,iBAAD;IAAM,KAAK,EAAE,CAACC,MAAM,CAACa,kBAAR,EAA4B;MAAEX,eAAe,EAAEJ,MAAM,CAACK,EAAP,CAAUC,MAAV,CAAiBC,OAAjB,CAAyBC,IAAzB,CAA8BC;IAAjD,CAA5B;EAAb,GACGE,IAAI,iBACH,6BAAC,aAAD;IACE,IAAI,EAAEA,IADR;IAEE,KAAK,EAAEE,SAAS,IAAIb,MAAM,CAACK,EAAP,CAAUC,MAAV,CAAiBC,OAAjB,CAAyBC,IAAzB,CAA8BQ,SAFpD;IAGE,cAAc,EAAEd,MAAM,CAACe;EAHzB,EAFJ,eAQE,6BAAC,aAAD;IACE,SAAS,MADX;IAEE,aAAa,EAAE,CAFjB;IAGE,KAAK,EAAEH,UAAU,IAAId,MAAM,CAACK,EAAP,CAAUC,MAAV,CAAiBC,OAAjB,CAAyBC,IAAzB,CAA8BU,IAHrD;IAIE,KAAK,EAAEhB,MAAM,CAACiB;EAJhB,GAMGP,KANH,CARF,CADF;AAmBD,CArBD;;AAuBA,MAAMV,MAAM,GAAG,IAAAkB,yBAAA,EAAiB;EAC9BjB,SAAS,EAAE;IACTkB,QAAQ,EAAE,QADD;IAETC,aAAa,EAAE,QAFN;IAGTC,KAAK,EAAE,MAHE;IAITC,mBAAmB,EAAE,CAJZ;IAKTC,oBAAoB,EAAE;EALb,CADmB;EAQ9BV,kBAAkB,EAAE;IAClBO,aAAa,EAAE,KADG;IAElBI,UAAU,EAAE,QAFM;IAGlBC,MAAM,EAAE;EAHU,CARU;EAa9BV,aAAa,EAAE;IACbW,UAAU,EAAE;EADC,CAbe;EAgB9BT,aAAa,EAAE;IACbU,gBAAgB,EAAE;EADL;AAhBe,CAAjB,CAAf;AAqBAhC,WAAW,CAACiC,IAAZ,GAAmBpB,SAAnB;eACeb,W"}
@@ -1 +1 @@
1
- {"version":3,"names":["AlertContext","React","createContext","ActionMenuContext","PromptContext","BottomSheetContext","DISMISS_TIMEOUT","DialogProvider","defaultLabels","children","waitDismissTimeout","useRef","waitDismissPromise","waitDismiss","useCallback","resolver","current","setTimeout","completeDismiss","clearTimeout","undefined","render","useForceUpdate","dialogQueue","workingDialogJob","visibleState","isProcessing","Boolean","updateToShow","updateToHide","Promise","resolve","consumeQueue","job","shift","createJob","type","props","jobItem","push","alert","openMenu","openPrompt","openSheet","title","menuItems","message","buttons","text","ok","onSubmit","defaultValue","submitLabel","prompt","cancelLabel","cancel","placeholder","sheetItems","useActionMenu","context","useContext","Error","useAlert","usePrompt","useBottomSheet"],"sources":["index.tsx"],"sourcesContent":["import React, { useCallback, useContext, useRef } from 'react';\n\nimport { useForceUpdate } from '@sendbird/uikit-utils';\n\nimport type { ActionMenuItem } from '../ActionMenu';\nimport ActionMenu from '../ActionMenu';\nimport type { AlertItem } from '../Alert';\nimport Alert from '../Alert';\nimport type { BottomSheetItem } from '../BottomSheet';\nimport BottomSheet from '../BottomSheet';\nimport type { PromptItem } from '../Prompt';\nimport Prompt from '../Prompt';\n\ntype DialogJob =\n | {\n type: 'ActionMenu';\n props: ActionMenuItem;\n }\n | {\n type: 'Alert';\n props: AlertItem;\n }\n | {\n type: 'Prompt';\n props: PromptItem;\n }\n | {\n type: 'BottomSheet';\n props: BottomSheetItem;\n };\n\ntype DialogPropsBy<T extends DialogJob['type'], U extends DialogJob = DialogJob> = U extends { type: T; props: infer P }\n ? P\n : never;\n\ntype DialogContextType = {\n openMenu: (props: DialogPropsBy<'ActionMenu'>) => void;\n alert: (props: DialogPropsBy<'Alert'>) => void;\n openPrompt: (props: DialogPropsBy<'Prompt'>) => void;\n openSheet: (props: DialogPropsBy<'BottomSheet'>) => void;\n};\n\nconst AlertContext = React.createContext<Pick<DialogContextType, 'alert'> | null>(null);\nconst ActionMenuContext = React.createContext<Pick<DialogContextType, 'openMenu'> | null>(null);\nconst PromptContext = React.createContext<Pick<DialogContextType, 'openPrompt'> | null>(null);\nconst BottomSheetContext = React.createContext<Pick<DialogContextType, 'openSheet'> | null>(null);\n\ntype Props = {\n defaultLabels?: {\n alert?: { ok?: string };\n prompt?: { placeholder?: string; ok?: string; cancel?: string };\n };\n};\nconst DISMISS_TIMEOUT = 3000;\nexport const DialogProvider: React.FC<Props> = ({ defaultLabels, children }) => {\n const waitDismissTimeout = useRef<NodeJS.Timeout>();\n const waitDismissPromise = useRef<() => void>();\n const waitDismiss = useCallback((resolver: () => void) => {\n waitDismissPromise.current = resolver;\n waitDismissTimeout.current = setTimeout(completeDismiss, DISMISS_TIMEOUT);\n }, []);\n const completeDismiss = useCallback(() => {\n if (waitDismissTimeout.current) clearTimeout(waitDismissTimeout.current);\n if (waitDismissPromise.current) waitDismissPromise.current();\n waitDismissTimeout.current = undefined;\n waitDismissPromise.current = undefined;\n }, []);\n\n const render = useForceUpdate();\n const dialogQueue = useRef<DialogJob[]>([]);\n const workingDialogJob = useRef<DialogJob>();\n const visibleState = useRef(false);\n\n const isProcessing = () => Boolean(workingDialogJob.current);\n const updateToShow = useCallback(() => {\n visibleState.current = true;\n render();\n }, []);\n const updateToHide = useCallback((): Promise<void> => {\n return new Promise((resolve) => {\n visibleState.current = false;\n render();\n waitDismiss(resolve);\n });\n }, []);\n const consumeQueue = useCallback(() => {\n completeDismiss();\n const job = dialogQueue.current.shift();\n if (job) {\n workingDialogJob.current = job;\n updateToShow();\n } else {\n workingDialogJob.current = undefined;\n }\n }, []);\n\n const createJob =\n <T extends DialogJob['type']>(type: T) =>\n (props: DialogPropsBy<T>) => {\n const jobItem = { type, props } as DialogJob;\n if (isProcessing()) dialogQueue.current.push(jobItem);\n else {\n workingDialogJob.current = jobItem;\n updateToShow();\n }\n };\n\n const alert = useCallback(createJob('Alert'), []);\n const openMenu = useCallback(createJob('ActionMenu'), []);\n const openPrompt = useCallback(createJob('Prompt'), []);\n const openSheet = useCallback(createJob('BottomSheet'), []);\n\n return (\n <AlertContext.Provider value={{ alert }}>\n <ActionMenuContext.Provider value={{ openMenu }}>\n <PromptContext.Provider value={{ openPrompt }}>\n <BottomSheetContext.Provider value={{ openSheet }}>\n {children}\n {workingDialogJob.current?.type === 'ActionMenu' && (\n <ActionMenu\n onHide={updateToHide}\n onDismiss={consumeQueue}\n visible={visibleState.current}\n title={workingDialogJob.current.props.title}\n menuItems={workingDialogJob.current.props.menuItems}\n />\n )}\n {workingDialogJob.current?.type === 'Alert' && (\n <Alert\n onHide={updateToHide}\n onDismiss={consumeQueue}\n visible={visibleState.current}\n title={workingDialogJob.current.props.title}\n message={workingDialogJob.current.props.message}\n buttons={workingDialogJob.current.props.buttons ?? [{ text: defaultLabels?.alert?.ok || 'OK' }]}\n />\n )}\n {workingDialogJob.current?.type === 'Prompt' && (\n <Prompt\n onHide={updateToHide}\n onDismiss={consumeQueue}\n visible={visibleState.current}\n title={workingDialogJob.current.props.title}\n onSubmit={workingDialogJob.current.props.onSubmit}\n defaultValue={workingDialogJob.current.props.defaultValue}\n submitLabel={workingDialogJob.current.props.submitLabel ?? defaultLabels?.prompt?.ok}\n cancelLabel={workingDialogJob.current.props.cancelLabel ?? defaultLabels?.prompt?.cancel}\n placeholder={workingDialogJob.current.props.placeholder ?? defaultLabels?.prompt?.placeholder}\n />\n )}\n {workingDialogJob.current?.type === 'BottomSheet' && (\n <BottomSheet\n onHide={updateToHide}\n onDismiss={consumeQueue}\n visible={visibleState.current}\n sheetItems={workingDialogJob.current.props.sheetItems}\n />\n )}\n </BottomSheetContext.Provider>\n </PromptContext.Provider>\n </ActionMenuContext.Provider>\n </AlertContext.Provider>\n );\n};\n\nexport const useActionMenu = () => {\n const context = useContext(ActionMenuContext);\n if (!context) throw new Error('ActionMenuContext is not provided, wrap your app with DialogProvider');\n return context;\n};\nexport const useAlert = () => {\n const context = useContext(AlertContext);\n if (!context) throw new Error('AlertContext is not provided, wrap your app with DialogProvider');\n return context;\n};\nexport const usePrompt = () => {\n const context = useContext(PromptContext);\n if (!context) throw new Error('PromptContext is not provided, wrap your app with DialogProvider');\n return context;\n};\nexport const useBottomSheet = () => {\n const context = useContext(BottomSheetContext);\n if (!context) throw new Error('BottomSheetContext is not provided, wrap your app with DialogProvider');\n return context;\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["AlertContext","React","createContext","ActionMenuContext","PromptContext","BottomSheetContext","DISMISS_TIMEOUT","DialogProvider","defaultLabels","children","waitDismissTimeout","useRef","waitDismissPromise","waitDismiss","useCallback","resolver","current","setTimeout","completeDismiss","clearTimeout","undefined","render","useForceUpdate","dialogQueue","workingDialogJob","visibleState","isProcessing","Boolean","updateToShow","updateToHide","Promise","resolve","consumeQueue","job","shift","createJob","type","props","jobItem","push","alert","openMenu","openPrompt","openSheet","title","menuItems","message","buttons","text","ok","onSubmit","defaultValue","submitLabel","prompt","cancelLabel","cancel","placeholder","sheetItems","useActionMenu","context","useContext","Error","useAlert","usePrompt","useBottomSheet"],"sources":["index.tsx"],"sourcesContent":["import React, { useCallback, useContext, useRef } from 'react';\n\nimport { useForceUpdate } from '@sendbird/uikit-utils';\n\nimport type { ActionMenuItem } from '../ActionMenu';\nimport ActionMenu from '../ActionMenu';\nimport type { AlertItem } from '../Alert';\nimport Alert from '../Alert';\nimport type { BottomSheetItem } from '../BottomSheet';\nimport BottomSheet from '../BottomSheet';\nimport type { PromptItem } from '../Prompt';\nimport Prompt from '../Prompt';\n\ntype DialogJob =\n | {\n type: 'ActionMenu';\n props: ActionMenuItem;\n }\n | {\n type: 'Alert';\n props: AlertItem;\n }\n | {\n type: 'Prompt';\n props: PromptItem;\n }\n | {\n type: 'BottomSheet';\n props: BottomSheetItem;\n };\n\ntype DialogPropsBy<T extends DialogJob['type'], U extends DialogJob = DialogJob> = U extends { type: T; props: infer P }\n ? P\n : never;\n\ntype DialogContextType = {\n openMenu: (props: DialogPropsBy<'ActionMenu'>) => void;\n alert: (props: DialogPropsBy<'Alert'>) => void;\n openPrompt: (props: DialogPropsBy<'Prompt'>) => void;\n openSheet: (props: DialogPropsBy<'BottomSheet'>) => void;\n};\n\nconst AlertContext = React.createContext<Pick<DialogContextType, 'alert'> | null>(null);\nconst ActionMenuContext = React.createContext<Pick<DialogContextType, 'openMenu'> | null>(null);\nconst PromptContext = React.createContext<Pick<DialogContextType, 'openPrompt'> | null>(null);\nconst BottomSheetContext = React.createContext<Pick<DialogContextType, 'openSheet'> | null>(null);\n\ntype Props = React.PropsWithChildren<{\n defaultLabels?: {\n alert?: { ok?: string };\n prompt?: { placeholder?: string; ok?: string; cancel?: string };\n };\n}>;\nconst DISMISS_TIMEOUT = 3000;\nexport const DialogProvider = ({ defaultLabels, children }: Props) => {\n const waitDismissTimeout = useRef<NodeJS.Timeout>();\n const waitDismissPromise = useRef<() => void>();\n const waitDismiss = useCallback((resolver: () => void) => {\n waitDismissPromise.current = resolver;\n waitDismissTimeout.current = setTimeout(completeDismiss, DISMISS_TIMEOUT);\n }, []);\n const completeDismiss = useCallback(() => {\n if (waitDismissTimeout.current) clearTimeout(waitDismissTimeout.current);\n if (waitDismissPromise.current) waitDismissPromise.current();\n waitDismissTimeout.current = undefined;\n waitDismissPromise.current = undefined;\n }, []);\n\n const render = useForceUpdate();\n const dialogQueue = useRef<DialogJob[]>([]);\n const workingDialogJob = useRef<DialogJob>();\n const visibleState = useRef(false);\n\n const isProcessing = () => Boolean(workingDialogJob.current);\n const updateToShow = useCallback(() => {\n visibleState.current = true;\n render();\n }, []);\n const updateToHide = useCallback((): Promise<void> => {\n return new Promise((resolve) => {\n visibleState.current = false;\n render();\n waitDismiss(resolve);\n });\n }, []);\n const consumeQueue = useCallback(() => {\n completeDismiss();\n const job = dialogQueue.current.shift();\n if (job) {\n workingDialogJob.current = job;\n updateToShow();\n } else {\n workingDialogJob.current = undefined;\n }\n }, []);\n\n const createJob =\n <T extends DialogJob['type']>(type: T) =>\n (props: DialogPropsBy<T>) => {\n const jobItem = { type, props } as DialogJob;\n if (isProcessing()) dialogQueue.current.push(jobItem);\n else {\n workingDialogJob.current = jobItem;\n updateToShow();\n }\n };\n\n const alert = useCallback(createJob('Alert'), []);\n const openMenu = useCallback(createJob('ActionMenu'), []);\n const openPrompt = useCallback(createJob('Prompt'), []);\n const openSheet = useCallback(createJob('BottomSheet'), []);\n\n return (\n <AlertContext.Provider value={{ alert }}>\n <ActionMenuContext.Provider value={{ openMenu }}>\n <PromptContext.Provider value={{ openPrompt }}>\n <BottomSheetContext.Provider value={{ openSheet }}>\n {children}\n {workingDialogJob.current?.type === 'ActionMenu' && (\n <ActionMenu\n onHide={updateToHide}\n onDismiss={consumeQueue}\n visible={visibleState.current}\n title={workingDialogJob.current.props.title}\n menuItems={workingDialogJob.current.props.menuItems}\n />\n )}\n {workingDialogJob.current?.type === 'Alert' && (\n <Alert\n onHide={updateToHide}\n onDismiss={consumeQueue}\n visible={visibleState.current}\n title={workingDialogJob.current.props.title}\n message={workingDialogJob.current.props.message}\n buttons={workingDialogJob.current.props.buttons ?? [{ text: defaultLabels?.alert?.ok || 'OK' }]}\n />\n )}\n {workingDialogJob.current?.type === 'Prompt' && (\n <Prompt\n onHide={updateToHide}\n onDismiss={consumeQueue}\n visible={visibleState.current}\n title={workingDialogJob.current.props.title}\n onSubmit={workingDialogJob.current.props.onSubmit}\n defaultValue={workingDialogJob.current.props.defaultValue}\n submitLabel={workingDialogJob.current.props.submitLabel ?? defaultLabels?.prompt?.ok}\n cancelLabel={workingDialogJob.current.props.cancelLabel ?? defaultLabels?.prompt?.cancel}\n placeholder={workingDialogJob.current.props.placeholder ?? defaultLabels?.prompt?.placeholder}\n />\n )}\n {workingDialogJob.current?.type === 'BottomSheet' && (\n <BottomSheet\n onHide={updateToHide}\n onDismiss={consumeQueue}\n visible={visibleState.current}\n sheetItems={workingDialogJob.current.props.sheetItems}\n />\n )}\n </BottomSheetContext.Provider>\n </PromptContext.Provider>\n </ActionMenuContext.Provider>\n </AlertContext.Provider>\n );\n};\n\nexport const useActionMenu = () => {\n const context = useContext(ActionMenuContext);\n if (!context) throw new Error('ActionMenuContext is not provided, wrap your app with DialogProvider');\n return context;\n};\nexport const useAlert = () => {\n const context = useContext(AlertContext);\n if (!context) throw new Error('AlertContext is not provided, wrap your app with DialogProvider');\n return context;\n};\nexport const usePrompt = () => {\n const context = useContext(PromptContext);\n if (!context) throw new Error('PromptContext is not provided, wrap your app with DialogProvider');\n return context;\n};\nexport const useBottomSheet = () => {\n const context = useContext(BottomSheetContext);\n if (!context) throw new Error('BottomSheetContext is not provided, wrap your app with DialogProvider');\n return context;\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["Divider","style","space","colors","useUIKitTheme","styles","divider","paddingHorizontal","inner","backgroundColor","onBackground04","createStyleSheet","width","height"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { StyleProp, View, ViewStyle } from 'react-native';\n\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\n\ntype Props = {\n style?: StyleProp<ViewStyle>;\n space?: number;\n};\n\nconst Divider: React.FC<Props> = ({ style, space }) => {\n const { colors } = useUIKitTheme();\n return (\n <View style={[style, styles.divider, { paddingHorizontal: space }]}>\n <View style={[styles.inner, { backgroundColor: colors.onBackground04 }]} />\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n divider: {\n width: '100%',\n height: 1,\n },\n inner: {\n width: '100%',\n height: '100%',\n },\n});\n\nexport default Divider;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;;;AAOA,MAAMA,OAAwB,GAAG,QAAsB;EAAA,IAArB;IAAEC,KAAF;IAASC;EAAT,CAAqB;EACrD,MAAM;IAAEC;EAAF,IAAa,IAAAC,sBAAA,GAAnB;EACA,oBACE,6BAAC,iBAAD;IAAM,KAAK,EAAE,CAACH,KAAD,EAAQI,MAAM,CAACC,OAAf,EAAwB;MAAEC,iBAAiB,EAAEL;IAArB,CAAxB;EAAb,gBACE,6BAAC,iBAAD;IAAM,KAAK,EAAE,CAACG,MAAM,CAACG,KAAR,EAAe;MAAEC,eAAe,EAAEN,MAAM,CAACO;IAA1B,CAAf;EAAb,EADF,CADF;AAKD,CAPD;;AASA,MAAML,MAAM,GAAG,IAAAM,yBAAA,EAAiB;EAC9BL,OAAO,EAAE;IACPM,KAAK,EAAE,MADA;IAEPC,MAAM,EAAE;EAFD,CADqB;EAK9BL,KAAK,EAAE;IACLI,KAAK,EAAE,MADF;IAELC,MAAM,EAAE;EAFH;AALuB,CAAjB,CAAf;eAWeb,O"}
1
+ {"version":3,"names":["Divider","style","space","colors","useUIKitTheme","styles","divider","paddingHorizontal","inner","backgroundColor","onBackground04","createStyleSheet","width","height"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { StyleProp, View, ViewStyle } from 'react-native';\n\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\n\ntype Props = {\n style?: StyleProp<ViewStyle>;\n space?: number;\n};\n\nconst Divider = ({ style, space }: Props) => {\n const { colors } = useUIKitTheme();\n return (\n <View style={[style, styles.divider, { paddingHorizontal: space }]}>\n <View style={[styles.inner, { backgroundColor: colors.onBackground04 }]} />\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n divider: {\n width: '100%',\n height: 1,\n },\n inner: {\n width: '100%',\n height: '100%',\n },\n});\n\nexport default Divider;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;;;AAOA,MAAMA,OAAO,GAAG,QAA6B;EAAA,IAA5B;IAAEC,KAAF;IAASC;EAAT,CAA4B;EAC3C,MAAM;IAAEC;EAAF,IAAa,IAAAC,sBAAA,GAAnB;EACA,oBACE,6BAAC,iBAAD;IAAM,KAAK,EAAE,CAACH,KAAD,EAAQI,MAAM,CAACC,OAAf,EAAwB;MAAEC,iBAAiB,EAAEL;IAArB,CAAxB;EAAb,gBACE,6BAAC,iBAAD;IAAM,KAAK,EAAE,CAACG,MAAM,CAACG,KAAR,EAAe;MAAEC,eAAe,EAAEN,MAAM,CAACO;IAA1B,CAAf;EAAb,EADF,CADF;AAKD,CAPD;;AASA,MAAML,MAAM,GAAG,IAAAM,yBAAA,EAAiB;EAC9BL,OAAO,EAAE;IACPM,KAAK,EAAE,MADA;IAEPC,MAAM,EAAE;EAFD,CADqB;EAK9BL,KAAK,EAAE;IACLI,KAAK,EAAE,MADF;IAELC,MAAM,EAAE;EAFH;AALuB,CAAjB,CAAf;eAWeb,O"}
@@ -36,6 +36,7 @@ const GroupChannelPreview = _ref => {
36
36
  bodyIcon,
37
37
  title,
38
38
  titleCaption,
39
+ titleCaptionLeft,
39
40
  frozen,
40
41
  notificationOff
41
42
  } = _ref;
@@ -62,7 +63,7 @@ const GroupChannelPreview = _ref => {
62
63
  }, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
63
64
  style: styles.rightTopSection
64
65
  }, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
65
- style: styles.channelInfo
66
+ style: styles.channelInfoContainer
66
67
  }, /*#__PURE__*/_react.default.createElement(_Text.default, {
67
68
  numberOfLines: 1,
68
69
  subtitle1: true,
@@ -82,10 +83,11 @@ const GroupChannelPreview = _ref => {
82
83
  icon: 'notifications-off-filled',
83
84
  color: colors.onBackground03
84
85
  })), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
85
- style: styles.titleCaption
86
- }, /*#__PURE__*/_react.default.createElement(_Text.default, {
86
+ style: styles.titleCaptionContainer
87
+ }, titleCaptionLeft, /*#__PURE__*/_react.default.createElement(_Text.default, {
87
88
  caption2: true,
88
- color: color.default.none.textTitleCaption
89
+ color: color.default.none.textTitleCaption,
90
+ style: styles.titleCaptionText
89
91
  }, titleCaption))), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
90
92
  style: styles.rightBottomSection
91
93
  }, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
@@ -146,7 +148,7 @@ const styles = (0, _createStyleSheet.default)({
146
148
  flexDirection: 'row',
147
149
  marginBottom: 4
148
150
  },
149
- channelInfo: {
151
+ channelInfoContainer: {
150
152
  flex: 1,
151
153
  marginRight: 4,
152
154
  alignItems: 'center',
@@ -163,9 +165,13 @@ const styles = (0, _createStyleSheet.default)({
163
165
  channelInfoFrozen: {
164
166
  marginRight: 4
165
167
  },
166
- titleCaption: {
167
- marginLeft: 4,
168
- paddingTop: 2
168
+ titleCaptionContainer: {
169
+ alignItems: 'flex-start',
170
+ flexDirection: 'row',
171
+ marginLeft: 4
172
+ },
173
+ titleCaptionText: {
174
+ marginTop: 2
169
175
  },
170
176
  rightBottomSection: {
171
177
  flex: 1,
@@ -203,8 +209,6 @@ const styles = (0, _createStyleSheet.default)({
203
209
  width: '84.5%'
204
210
  }
205
211
  });
206
-
207
- var _default = /*#__PURE__*/_react.default.memo(GroupChannelPreview);
208
-
212
+ var _default = GroupChannelPreview;
209
213
  exports.default = _default;
210
214
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["GroupChannelPreview","customCover","coverUrl","memberCount","badgeCount","maxBadgeCount","body","bodyIcon","title","titleCaption","frozen","notificationOff","colors","useUIKitTheme","color","ui","groupChannelPreview","styles","container","backgroundColor","default","none","background","coverContainer","conditionChaining","Boolean","channelCover","coverBackground","uri","rightSection","rightTopSection","channelInfo","channelInfoTitle","textTitle","channelInfoMemberCount","primary","channelInfoFrozen","onBackground03","textTitleCaption","rightBottomSection","alignItems","bodyIconBackground","bodyText","textBody","separator","Separator","createStyleSheet","width","flexDirection","paddingHorizontal","paddingVertical","marginRight","height","borderRadius","flex","marginBottom","flexShrink","paddingTop","marginLeft","justifyContent","unreadBadge","minWidth","minHeight","position","right","bottom","React","memo"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { View } from 'react-native';\n\nimport { conditionChaining } from '@sendbird/uikit-utils';\n\nimport Image from '../../components/Image';\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport Badge from '../Badge';\nimport Icon from '../Icon';\nimport Text from '../Text';\n\ntype Props = {\n customCover?: React.ReactElement;\n coverUrl: string;\n\n title: string;\n titleCaption: string;\n bodyIcon?: keyof typeof Icon.Assets;\n body: string;\n\n memberCount?: number;\n badgeCount: number;\n maxBadgeCount?: number;\n\n frozen?: boolean;\n notificationOff?: boolean;\n};\n\nconst GroupChannelPreview: React.FC<Props> = ({\n customCover,\n coverUrl,\n memberCount,\n badgeCount,\n maxBadgeCount,\n body,\n bodyIcon,\n title,\n titleCaption,\n frozen,\n notificationOff,\n}) => {\n const { colors } = useUIKitTheme();\n const color = colors.ui.groupChannelPreview;\n\n return (\n <View style={[styles.container, { backgroundColor: color.default.none.background }]}>\n <View style={styles.coverContainer}>\n {conditionChaining(\n [Boolean(customCover)],\n [\n customCover,\n <Image\n resizeMode={'cover'}\n style={[styles.channelCover, { backgroundColor: color.default.none.coverBackground }]}\n source={{ uri: coverUrl }}\n />,\n ],\n )}\n </View>\n <View style={styles.rightSection}>\n <View style={styles.rightTopSection}>\n <View style={styles.channelInfo}>\n <Text numberOfLines={1} subtitle1 style={styles.channelInfoTitle} color={color.default.none.textTitle}>\n {title}\n </Text>\n {Boolean(memberCount) && (\n <Text caption1 style={styles.channelInfoMemberCount} color={color.default.none.memberCount}>\n {memberCount}\n </Text>\n )}\n {frozen && (\n <Icon size={16} icon={'freeze'} color={colors.primary} containerStyle={styles.channelInfoFrozen} />\n )}\n {notificationOff && <Icon size={16} icon={'notifications-off-filled'} color={colors.onBackground03} />}\n </View>\n <View style={styles.titleCaption}>\n <Text caption2 color={color.default.none.textTitleCaption}>\n {titleCaption}\n </Text>\n </View>\n </View>\n\n <View style={styles.rightBottomSection}>\n <View style={[styles.body, bodyIcon && { alignItems: 'center' }]}>\n {bodyIcon && (\n <Icon\n size={18}\n icon={bodyIcon}\n color={color.default.none.bodyIcon}\n containerStyle={[\n styles.bodyIcon,\n { backgroundColor: colors.ui.groupChannelPreview.default.none.bodyIconBackground },\n ]}\n />\n )}\n <Text body3 numberOfLines={1} style={styles.bodyText} color={color.default.none.textBody}>\n {body}\n </Text>\n </View>\n <View>{badgeCount > 0 && <Badge count={badgeCount} maxCount={maxBadgeCount} />}</View>\n </View>\n </View>\n <Separator color={color.default.none.separator} />\n </View>\n );\n};\n\ntype SeparatorProps = { color: string };\nconst Separator = ({ color }: SeparatorProps) => <View style={[styles.separator, { backgroundColor: color }]} />;\n\nconst styles = createStyleSheet({\n container: {\n width: '100%',\n flexDirection: 'row',\n paddingHorizontal: 16,\n paddingVertical: 10,\n alignItems: 'center',\n },\n coverContainer: {\n marginRight: 16,\n },\n channelCover: {\n width: 56,\n height: 56,\n borderRadius: 28,\n },\n rightSection: {\n flex: 1,\n },\n rightTopSection: {\n flexDirection: 'row',\n marginBottom: 4,\n },\n channelInfo: {\n flex: 1,\n marginRight: 4,\n alignItems: 'center',\n flexDirection: 'row',\n },\n channelInfoTitle: {\n flexShrink: 1,\n marginRight: 4,\n },\n channelInfoMemberCount: {\n paddingTop: 2,\n marginRight: 4,\n },\n channelInfoFrozen: {\n marginRight: 4,\n },\n titleCaption: {\n marginLeft: 4,\n paddingTop: 2,\n },\n rightBottomSection: {\n flex: 1,\n height: '100%',\n flexDirection: 'row',\n },\n body: {\n marginRight: 4,\n flex: 1,\n justifyContent: 'center',\n alignItems: 'flex-start',\n flexDirection: 'row',\n },\n bodyText: {\n flex: 1,\n },\n bodyIcon: {\n borderRadius: 8,\n width: 26,\n height: 26,\n marginRight: 4,\n },\n unreadBadge: {\n minWidth: 20,\n minHeight: 20,\n borderRadius: 99,\n alignItems: 'center',\n justifyContent: 'center',\n },\n separator: {\n position: 'absolute',\n right: 0,\n bottom: 0,\n height: 1,\n width: '84.5%',\n },\n});\n\nexport default React.memo(GroupChannelPreview);\n"],"mappings":"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"}
1
+ {"version":3,"names":["GroupChannelPreview","customCover","coverUrl","memberCount","badgeCount","maxBadgeCount","body","bodyIcon","title","titleCaption","titleCaptionLeft","frozen","notificationOff","colors","useUIKitTheme","color","ui","groupChannelPreview","styles","container","backgroundColor","default","none","background","coverContainer","conditionChaining","Boolean","channelCover","coverBackground","uri","rightSection","rightTopSection","channelInfoContainer","channelInfoTitle","textTitle","channelInfoMemberCount","primary","channelInfoFrozen","onBackground03","titleCaptionContainer","textTitleCaption","titleCaptionText","rightBottomSection","alignItems","bodyIconBackground","bodyText","textBody","separator","Separator","createStyleSheet","width","flexDirection","paddingHorizontal","paddingVertical","marginRight","height","borderRadius","flex","marginBottom","flexShrink","paddingTop","marginLeft","marginTop","justifyContent","unreadBadge","minWidth","minHeight","position","right","bottom"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { View } from 'react-native';\n\nimport { conditionChaining } from '@sendbird/uikit-utils';\n\nimport Image from '../../components/Image';\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport Badge from '../Badge';\nimport Icon from '../Icon';\nimport Text from '../Text';\n\ntype Props = {\n customCover?: React.ReactElement;\n coverUrl: string;\n\n title: string;\n\n titleCaption: string;\n titleCaptionLeft?: React.ReactElement;\n\n bodyIcon?: keyof typeof Icon.Assets;\n body: string;\n\n memberCount?: number;\n badgeCount: number;\n maxBadgeCount?: number;\n\n frozen?: boolean;\n notificationOff?: boolean;\n};\n\nconst GroupChannelPreview = ({\n customCover,\n coverUrl,\n memberCount,\n badgeCount,\n maxBadgeCount,\n body,\n bodyIcon,\n title,\n titleCaption,\n titleCaptionLeft,\n frozen,\n notificationOff,\n}: Props) => {\n const { colors } = useUIKitTheme();\n const color = colors.ui.groupChannelPreview;\n\n return (\n <View style={[styles.container, { backgroundColor: color.default.none.background }]}>\n <View style={styles.coverContainer}>\n {conditionChaining(\n [Boolean(customCover)],\n [\n customCover,\n <Image\n resizeMode={'cover'}\n style={[styles.channelCover, { backgroundColor: color.default.none.coverBackground }]}\n source={{ uri: coverUrl }}\n />,\n ],\n )}\n </View>\n <View style={styles.rightSection}>\n <View style={styles.rightTopSection}>\n <View style={styles.channelInfoContainer}>\n <Text numberOfLines={1} subtitle1 style={styles.channelInfoTitle} color={color.default.none.textTitle}>\n {title}\n </Text>\n {Boolean(memberCount) && (\n <Text caption1 style={styles.channelInfoMemberCount} color={color.default.none.memberCount}>\n {memberCount}\n </Text>\n )}\n {frozen && (\n <Icon size={16} icon={'freeze'} color={colors.primary} containerStyle={styles.channelInfoFrozen} />\n )}\n {notificationOff && <Icon size={16} icon={'notifications-off-filled'} color={colors.onBackground03} />}\n </View>\n <View style={styles.titleCaptionContainer}>\n {titleCaptionLeft}\n <Text caption2 color={color.default.none.textTitleCaption} style={styles.titleCaptionText}>\n {titleCaption}\n </Text>\n </View>\n </View>\n\n <View style={styles.rightBottomSection}>\n <View style={[styles.body, bodyIcon && { alignItems: 'center' }]}>\n {bodyIcon && (\n <Icon\n size={18}\n icon={bodyIcon}\n color={color.default.none.bodyIcon}\n containerStyle={[\n styles.bodyIcon,\n { backgroundColor: colors.ui.groupChannelPreview.default.none.bodyIconBackground },\n ]}\n />\n )}\n <Text body3 numberOfLines={1} style={styles.bodyText} color={color.default.none.textBody}>\n {body}\n </Text>\n </View>\n <View>{badgeCount > 0 && <Badge count={badgeCount} maxCount={maxBadgeCount} />}</View>\n </View>\n </View>\n <Separator color={color.default.none.separator} />\n </View>\n );\n};\n\ntype SeparatorProps = { color: string };\nconst Separator = ({ color }: SeparatorProps) => <View style={[styles.separator, { backgroundColor: color }]} />;\n\nconst styles = createStyleSheet({\n container: {\n width: '100%',\n flexDirection: 'row',\n paddingHorizontal: 16,\n paddingVertical: 10,\n alignItems: 'center',\n },\n coverContainer: {\n marginRight: 16,\n },\n channelCover: {\n width: 56,\n height: 56,\n borderRadius: 28,\n },\n rightSection: {\n flex: 1,\n },\n rightTopSection: {\n flexDirection: 'row',\n marginBottom: 4,\n },\n channelInfoContainer: {\n flex: 1,\n marginRight: 4,\n alignItems: 'center',\n flexDirection: 'row',\n },\n channelInfoTitle: {\n flexShrink: 1,\n marginRight: 4,\n },\n channelInfoMemberCount: {\n paddingTop: 2,\n marginRight: 4,\n },\n channelInfoFrozen: {\n marginRight: 4,\n },\n titleCaptionContainer: {\n alignItems: 'flex-start',\n flexDirection: 'row',\n marginLeft: 4,\n },\n titleCaptionText: {\n marginTop: 2,\n },\n rightBottomSection: {\n flex: 1,\n height: '100%',\n flexDirection: 'row',\n },\n body: {\n marginRight: 4,\n flex: 1,\n justifyContent: 'center',\n alignItems: 'flex-start',\n flexDirection: 'row',\n },\n bodyText: {\n flex: 1,\n },\n bodyIcon: {\n borderRadius: 8,\n width: 26,\n height: 26,\n marginRight: 4,\n },\n unreadBadge: {\n minWidth: 20,\n minHeight: 20,\n borderRadius: 99,\n alignItems: 'center',\n justifyContent: 'center',\n },\n separator: {\n position: 'absolute',\n right: 0,\n bottom: 0,\n height: 1,\n width: '84.5%',\n },\n});\n\nexport default GroupChannelPreview;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AAsBA,MAAMA,mBAAmB,GAAG,QAaf;EAAA,IAbgB;IAC3BC,WAD2B;IAE3BC,QAF2B;IAG3BC,WAH2B;IAI3BC,UAJ2B;IAK3BC,aAL2B;IAM3BC,IAN2B;IAO3BC,QAP2B;IAQ3BC,KAR2B;IAS3BC,YAT2B;IAU3BC,gBAV2B;IAW3BC,MAX2B;IAY3BC;EAZ2B,CAahB;EACX,MAAM;IAAEC;EAAF,IAAa,IAAAC,sBAAA,GAAnB;EACA,MAAMC,KAAK,GAAGF,MAAM,CAACG,EAAP,CAAUC,mBAAxB;EAEA,oBACE,6BAAC,iBAAD;IAAM,KAAK,EAAE,CAACC,MAAM,CAACC,SAAR,EAAmB;MAAEC,eAAe,EAAEL,KAAK,CAACM,OAAN,CAAcC,IAAd,CAAmBC;IAAtC,CAAnB;EAAb,gBACE,6BAAC,iBAAD;IAAM,KAAK,EAAEL,MAAM,CAACM;EAApB,GACG,IAAAC,6BAAA,EACC,CAACC,OAAO,CAACzB,WAAD,CAAR,CADD,EAEC,CACEA,WADF,eAEE,6BAAC,cAAD;IACE,UAAU,EAAE,OADd;IAEE,KAAK,EAAE,CAACiB,MAAM,CAACS,YAAR,EAAsB;MAAEP,eAAe,EAAEL,KAAK,CAACM,OAAN,CAAcC,IAAd,CAAmBM;IAAtC,CAAtB,CAFT;IAGE,MAAM,EAAE;MAAEC,GAAG,EAAE3B;IAAP;EAHV,EAFF,CAFD,CADH,CADF,eAcE,6BAAC,iBAAD;IAAM,KAAK,EAAEgB,MAAM,CAACY;EAApB,gBACE,6BAAC,iBAAD;IAAM,KAAK,EAAEZ,MAAM,CAACa;EAApB,gBACE,6BAAC,iBAAD;IAAM,KAAK,EAAEb,MAAM,CAACc;EAApB,gBACE,6BAAC,aAAD;IAAM,aAAa,EAAE,CAArB;IAAwB,SAAS,MAAjC;IAAkC,KAAK,EAAEd,MAAM,CAACe,gBAAhD;IAAkE,KAAK,EAAElB,KAAK,CAACM,OAAN,CAAcC,IAAd,CAAmBY;EAA5F,GACG1B,KADH,CADF,EAIGkB,OAAO,CAACvB,WAAD,CAAP,iBACC,6BAAC,aAAD;IAAM,QAAQ,MAAd;IAAe,KAAK,EAAEe,MAAM,CAACiB,sBAA7B;IAAqD,KAAK,EAAEpB,KAAK,CAACM,OAAN,CAAcC,IAAd,CAAmBnB;EAA/E,GACGA,WADH,CALJ,EASGQ,MAAM,iBACL,6BAAC,aAAD;IAAM,IAAI,EAAE,EAAZ;IAAgB,IAAI,EAAE,QAAtB;IAAgC,KAAK,EAAEE,MAAM,CAACuB,OAA9C;IAAuD,cAAc,EAAElB,MAAM,CAACmB;EAA9E,EAVJ,EAYGzB,eAAe,iBAAI,6BAAC,aAAD;IAAM,IAAI,EAAE,EAAZ;IAAgB,IAAI,EAAE,0BAAtB;IAAkD,KAAK,EAAEC,MAAM,CAACyB;EAAhE,EAZtB,CADF,eAeE,6BAAC,iBAAD;IAAM,KAAK,EAAEpB,MAAM,CAACqB;EAApB,GACG7B,gBADH,eAEE,6BAAC,aAAD;IAAM,QAAQ,MAAd;IAAe,KAAK,EAAEK,KAAK,CAACM,OAAN,CAAcC,IAAd,CAAmBkB,gBAAzC;IAA2D,KAAK,EAAEtB,MAAM,CAACuB;EAAzE,GACGhC,YADH,CAFF,CAfF,CADF,eAwBE,6BAAC,iBAAD;IAAM,KAAK,EAAES,MAAM,CAACwB;EAApB,gBACE,6BAAC,iBAAD;IAAM,KAAK,EAAE,CAACxB,MAAM,CAACZ,IAAR,EAAcC,QAAQ,IAAI;MAAEoC,UAAU,EAAE;IAAd,CAA1B;EAAb,GACGpC,QAAQ,iBACP,6BAAC,aAAD;IACE,IAAI,EAAE,EADR;IAEE,IAAI,EAAEA,QAFR;IAGE,KAAK,EAAEQ,KAAK,CAACM,OAAN,CAAcC,IAAd,CAAmBf,QAH5B;IAIE,cAAc,EAAE,CACdW,MAAM,CAACX,QADO,EAEd;MAAEa,eAAe,EAAEP,MAAM,CAACG,EAAP,CAAUC,mBAAV,CAA8BI,OAA9B,CAAsCC,IAAtC,CAA2CsB;IAA9D,CAFc;EAJlB,EAFJ,eAYE,6BAAC,aAAD;IAAM,KAAK,MAAX;IAAY,aAAa,EAAE,CAA3B;IAA8B,KAAK,EAAE1B,MAAM,CAAC2B,QAA5C;IAAsD,KAAK,EAAE9B,KAAK,CAACM,OAAN,CAAcC,IAAd,CAAmBwB;EAAhF,GACGxC,IADH,CAZF,CADF,eAiBE,6BAAC,iBAAD,QAAOF,UAAU,GAAG,CAAb,iBAAkB,6BAAC,cAAD;IAAO,KAAK,EAAEA,UAAd;IAA0B,QAAQ,EAAEC;EAApC,EAAzB,CAjBF,CAxBF,CAdF,eA0DE,6BAAC,SAAD;IAAW,KAAK,EAAEU,KAAK,CAACM,OAAN,CAAcC,IAAd,CAAmByB;EAArC,EA1DF,CADF;AA8DD,CA/ED;;AAkFA,MAAMC,SAAS,GAAG;EAAA,IAAC;IAAEjC;EAAF,CAAD;EAAA,oBAA+B,6BAAC,iBAAD;IAAM,KAAK,EAAE,CAACG,MAAM,CAAC6B,SAAR,EAAmB;MAAE3B,eAAe,EAAEL;IAAnB,CAAnB;EAAb,EAA/B;AAAA,CAAlB;;AAEA,MAAMG,MAAM,GAAG,IAAA+B,yBAAA,EAAiB;EAC9B9B,SAAS,EAAE;IACT+B,KAAK,EAAE,MADE;IAETC,aAAa,EAAE,KAFN;IAGTC,iBAAiB,EAAE,EAHV;IAITC,eAAe,EAAE,EAJR;IAKTV,UAAU,EAAE;EALH,CADmB;EAQ9BnB,cAAc,EAAE;IACd8B,WAAW,EAAE;EADC,CARc;EAW9B3B,YAAY,EAAE;IACZuB,KAAK,EAAE,EADK;IAEZK,MAAM,EAAE,EAFI;IAGZC,YAAY,EAAE;EAHF,CAXgB;EAgB9B1B,YAAY,EAAE;IACZ2B,IAAI,EAAE;EADM,CAhBgB;EAmB9B1B,eAAe,EAAE;IACfoB,aAAa,EAAE,KADA;IAEfO,YAAY,EAAE;EAFC,CAnBa;EAuB9B1B,oBAAoB,EAAE;IACpByB,IAAI,EAAE,CADc;IAEpBH,WAAW,EAAE,CAFO;IAGpBX,UAAU,EAAE,QAHQ;IAIpBQ,aAAa,EAAE;EAJK,CAvBQ;EA6B9BlB,gBAAgB,EAAE;IAChB0B,UAAU,EAAE,CADI;IAEhBL,WAAW,EAAE;EAFG,CA7BY;EAiC9BnB,sBAAsB,EAAE;IACtByB,UAAU,EAAE,CADU;IAEtBN,WAAW,EAAE;EAFS,CAjCM;EAqC9BjB,iBAAiB,EAAE;IACjBiB,WAAW,EAAE;EADI,CArCW;EAwC9Bf,qBAAqB,EAAE;IACrBI,UAAU,EAAE,YADS;IAErBQ,aAAa,EAAE,KAFM;IAGrBU,UAAU,EAAE;EAHS,CAxCO;EA6C9BpB,gBAAgB,EAAE;IAChBqB,SAAS,EAAE;EADK,CA7CY;EAgD9BpB,kBAAkB,EAAE;IAClBe,IAAI,EAAE,CADY;IAElBF,MAAM,EAAE,MAFU;IAGlBJ,aAAa,EAAE;EAHG,CAhDU;EAqD9B7C,IAAI,EAAE;IACJgD,WAAW,EAAE,CADT;IAEJG,IAAI,EAAE,CAFF;IAGJM,cAAc,EAAE,QAHZ;IAIJpB,UAAU,EAAE,YAJR;IAKJQ,aAAa,EAAE;EALX,CArDwB;EA4D9BN,QAAQ,EAAE;IACRY,IAAI,EAAE;EADE,CA5DoB;EA+D9BlD,QAAQ,EAAE;IACRiD,YAAY,EAAE,CADN;IAERN,KAAK,EAAE,EAFC;IAGRK,MAAM,EAAE,EAHA;IAIRD,WAAW,EAAE;EAJL,CA/DoB;EAqE9BU,WAAW,EAAE;IACXC,QAAQ,EAAE,EADC;IAEXC,SAAS,EAAE,EAFA;IAGXV,YAAY,EAAE,EAHH;IAIXb,UAAU,EAAE,QAJD;IAKXoB,cAAc,EAAE;EALL,CArEiB;EA4E9BhB,SAAS,EAAE;IACToB,QAAQ,EAAE,UADD;IAETC,KAAK,EAAE,CAFE;IAGTC,MAAM,EAAE,CAHC;IAITd,MAAM,EAAE,CAJC;IAKTL,KAAK,EAAE;EALE;AA5EmB,CAAjB,CAAf;eAqFelD,mB"}