@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.
- package/lib/commonjs/components/Image/index.js.map +1 -1
- package/lib/commonjs/styles/HeaderStyleContext.js +10 -2
- package/lib/commonjs/styles/HeaderStyleContext.js.map +1 -1
- package/lib/commonjs/styles/createScaleFactor.js +2 -1
- package/lib/commonjs/styles/createScaleFactor.js.map +1 -1
- package/lib/commonjs/theme/UIKitThemeProvider.js.map +1 -1
- package/lib/commonjs/ui/ActionMenu/index.js.map +1 -1
- package/lib/commonjs/ui/Alert/index.js.map +1 -1
- package/lib/commonjs/ui/Avatar/AvatarGroup.js.map +1 -1
- package/lib/commonjs/ui/Avatar/AvatarIcon.js.map +1 -1
- package/lib/commonjs/ui/Avatar/index.js.map +1 -1
- package/lib/commonjs/ui/Badge/index.js.map +1 -1
- package/lib/commonjs/ui/BottomSheet/index.js.map +1 -1
- package/lib/commonjs/ui/Button/index.js.map +1 -1
- package/lib/commonjs/ui/ChannelFrozenBanner/index.js.map +1 -1
- package/lib/commonjs/ui/Dialog/DialogBox.js.map +1 -1
- package/lib/commonjs/ui/Dialog/DialogSheet.js.map +1 -1
- package/lib/commonjs/ui/Dialog/index.js.map +1 -1
- package/lib/commonjs/ui/Divider/index.js.map +1 -1
- package/lib/commonjs/ui/GroupChannelPreview/index.js +15 -11
- package/lib/commonjs/ui/GroupChannelPreview/index.js.map +1 -1
- package/lib/commonjs/ui/Header/index.js +3 -8
- package/lib/commonjs/ui/Header/index.js.map +1 -1
- package/lib/commonjs/ui/Icon/index.js.map +1 -1
- package/lib/commonjs/ui/LoadingSpinner/index.js.map +1 -1
- package/lib/commonjs/ui/MenuBar/index.js.map +1 -1
- package/lib/commonjs/ui/Modal/index.js.map +1 -1
- package/lib/commonjs/ui/Placeholder/index.js.map +1 -1
- package/lib/commonjs/ui/Prompt/index.js.map +1 -1
- package/lib/commonjs/ui/Switch/index.js.map +1 -1
- package/lib/commonjs/ui/Text/index.js.map +1 -1
- package/lib/commonjs/ui/Toast/index.js.map +1 -1
- package/lib/commonjs/ui/URLParsedText/index.js.map +1 -1
- package/lib/module/components/Image/index.js.map +1 -1
- package/lib/module/styles/HeaderStyleContext.js +10 -3
- package/lib/module/styles/HeaderStyleContext.js.map +1 -1
- package/lib/module/styles/createScaleFactor.js +2 -1
- package/lib/module/styles/createScaleFactor.js.map +1 -1
- package/lib/module/theme/UIKitThemeProvider.js.map +1 -1
- package/lib/module/ui/ActionMenu/index.js.map +1 -1
- package/lib/module/ui/Alert/index.js.map +1 -1
- package/lib/module/ui/Avatar/AvatarGroup.js.map +1 -1
- package/lib/module/ui/Avatar/AvatarIcon.js.map +1 -1
- package/lib/module/ui/Avatar/index.js.map +1 -1
- package/lib/module/ui/Badge/index.js.map +1 -1
- package/lib/module/ui/BottomSheet/index.js.map +1 -1
- package/lib/module/ui/Button/index.js.map +1 -1
- package/lib/module/ui/ChannelFrozenBanner/index.js.map +1 -1
- package/lib/module/ui/Dialog/DialogBox.js.map +1 -1
- package/lib/module/ui/Dialog/DialogSheet.js.map +1 -1
- package/lib/module/ui/Dialog/index.js.map +1 -1
- package/lib/module/ui/Divider/index.js.map +1 -1
- package/lib/module/ui/GroupChannelPreview/index.js +15 -9
- package/lib/module/ui/GroupChannelPreview/index.js.map +1 -1
- package/lib/module/ui/Header/index.js +4 -8
- package/lib/module/ui/Header/index.js.map +1 -1
- package/lib/module/ui/Icon/index.js.map +1 -1
- package/lib/module/ui/LoadingSpinner/index.js.map +1 -1
- package/lib/module/ui/MenuBar/index.js.map +1 -1
- package/lib/module/ui/Modal/index.js.map +1 -1
- package/lib/module/ui/Placeholder/index.js.map +1 -1
- package/lib/module/ui/Prompt/index.js.map +1 -1
- package/lib/module/ui/Switch/index.js.map +1 -1
- package/lib/module/ui/Text/index.js.map +1 -1
- package/lib/module/ui/Toast/index.js.map +1 -1
- package/lib/module/ui/URLParsedText/index.js.map +1 -1
- package/lib/typescript/src/components/Image/index.d.ts +1 -2
- package/lib/typescript/src/styles/HeaderStyleContext.d.ts +2 -1
- package/lib/typescript/src/styles/getDefaultHeaderHeight.d.ts +1 -1
- package/lib/typescript/src/theme/UIKitThemeProvider.d.ts +3 -3
- package/lib/typescript/src/ui/ActionMenu/index.d.ts +1 -2
- package/lib/typescript/src/ui/Alert/index.d.ts +1 -2
- package/lib/typescript/src/ui/Avatar/AvatarGroup.d.ts +3 -3
- package/lib/typescript/src/ui/Avatar/AvatarIcon.d.ts +1 -2
- package/lib/typescript/src/ui/Avatar/index.d.ts +1 -2
- package/lib/typescript/src/ui/Badge/index.d.ts +1 -2
- package/lib/typescript/src/ui/BottomSheet/index.d.ts +1 -2
- package/lib/typescript/src/ui/Button/index.d.ts +3 -3
- package/lib/typescript/src/ui/ChannelFrozenBanner/index.d.ts +1 -2
- package/lib/typescript/src/ui/Dialog/DialogBox.d.ts +3 -3
- package/lib/typescript/src/ui/Dialog/DialogSheet.d.ts +4 -4
- package/lib/typescript/src/ui/Dialog/index.d.ts +3 -3
- package/lib/typescript/src/ui/Divider/index.d.ts +1 -2
- package/lib/typescript/src/ui/GroupChannelPreview/index.d.ts +3 -2
- package/lib/typescript/src/ui/Header/index.d.ts +6 -10
- package/lib/typescript/src/ui/Icon/index.d.ts +1 -2
- package/lib/typescript/src/ui/LoadingSpinner/index.d.ts +1 -2
- package/lib/typescript/src/ui/MenuBar/index.d.ts +1 -1
- package/lib/typescript/src/ui/Modal/index.d.ts +1 -2
- package/lib/typescript/src/ui/Placeholder/index.d.ts +1 -2
- package/lib/typescript/src/ui/Prompt/index.d.ts +1 -2
- package/lib/typescript/src/ui/Switch/index.d.ts +3 -3
- package/lib/typescript/src/ui/Text/index.d.ts +1 -2
- package/lib/typescript/src/ui/Toast/index.d.ts +5 -5
- package/lib/typescript/src/ui/URLParsedText/index.d.ts +1 -2
- package/package.json +5 -5
- package/src/components/Image/index.ts +1 -2
- package/src/styles/HeaderStyleContext.tsx +8 -3
- package/src/styles/createScaleFactor.ts +2 -1
- package/src/theme/UIKitThemeProvider.tsx +4 -2
- package/src/ui/ActionMenu/index.tsx +1 -1
- package/src/ui/Alert/index.tsx +1 -8
- package/src/ui/Avatar/AvatarGroup.tsx +5 -2
- package/src/ui/Avatar/AvatarIcon.tsx +1 -1
- package/src/ui/Avatar/index.tsx +12 -3
- package/src/ui/Badge/index.tsx +1 -1
- package/src/ui/BottomSheet/index.tsx +1 -1
- package/src/ui/Button/index.tsx +4 -4
- package/src/ui/ChannelFrozenBanner/index.tsx +1 -1
- package/src/ui/Dialog/DialogBox.tsx +3 -3
- package/src/ui/Dialog/DialogSheet.tsx +4 -4
- package/src/ui/Dialog/index.tsx +3 -3
- package/src/ui/Divider/index.tsx +1 -1
- package/src/ui/GroupChannelPreview/index.tsx +18 -9
- package/src/ui/Header/index.tsx +9 -17
- package/src/ui/Icon/index.tsx +7 -2
- package/src/ui/LoadingSpinner/index.tsx +2 -2
- package/src/ui/MenuBar/index.tsx +2 -2
- package/src/ui/Modal/index.tsx +2 -2
- package/src/ui/Placeholder/index.tsx +1 -1
- package/src/ui/Prompt/index.tsx +2 -2
- package/src/ui/Switch/index.tsx +4 -4
- package/src/ui/Text/index.tsx +1 -1
- package/src/ui/Toast/index.tsx +8 -4
- package/src/ui/URLParsedText/index.tsx +1 -1
|
@@ -15,8 +15,6 @@ var _uikitUtils = require("@sendbird/uikit-utils");
|
|
|
15
15
|
|
|
16
16
|
var _createStyleSheet = _interopRequireDefault(require("../../styles/createStyleSheet"));
|
|
17
17
|
|
|
18
|
-
var _getDefaultHeaderHeight = _interopRequireDefault(require("../../styles/getDefaultHeaderHeight"));
|
|
19
|
-
|
|
20
18
|
var _useHeaderStyle = _interopRequireDefault(require("../../styles/useHeaderStyle"));
|
|
21
19
|
|
|
22
20
|
var _useUIKitTheme = _interopRequireDefault(require("../../theme/useUIKitTheme"));
|
|
@@ -46,12 +44,9 @@ const Header = _ref => {
|
|
|
46
44
|
} = _ref;
|
|
47
45
|
const {
|
|
48
46
|
topInset,
|
|
49
|
-
defaultTitleAlign
|
|
47
|
+
defaultTitleAlign,
|
|
48
|
+
defaultHeight
|
|
50
49
|
} = (0, _useHeaderStyle.default)();
|
|
51
|
-
const {
|
|
52
|
-
width,
|
|
53
|
-
height
|
|
54
|
-
} = (0, _reactNative.useWindowDimensions)();
|
|
55
50
|
const {
|
|
56
51
|
colors
|
|
57
52
|
} = (0, _useUIKitTheme.default)();
|
|
@@ -80,7 +75,7 @@ const Header = _ref => {
|
|
|
80
75
|
}]
|
|
81
76
|
}, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
|
|
82
77
|
style: [styles.header, {
|
|
83
|
-
height:
|
|
78
|
+
height: defaultHeight
|
|
84
79
|
}]
|
|
85
80
|
}, /*#__PURE__*/_react.default.createElement(LeftSide, {
|
|
86
81
|
titleAlign: actualTitleAlign,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["AlignMapper","left","center","right","Header","children","titleAlign","title","onPressLeft","onPressRight","clearTitleMargin","topInset","defaultTitleAlign","useHeaderStyle","width","height","useWindowDimensions","colors","useUIKitTheme","paddingLeft","paddingRight","useSafeAreaInsets","actualTitleAlign","paddingTop","backgroundColor","ui","header","nav","none","background","styles","container","paddingHorizontal","borderBottomColor","borderBottom","getDefaultHeaderHeight","marginHorizontal","justifyContent","LeftSide","RightSide","HeaderTitle","style","props","HeaderSubtitle","onBackground03","HeaderButton","disabled","onPress","color","button","e","conditionChaining","createStyleSheet","borderBottomWidth","flexDirection","flex","alignItems","minWidth","marginRight","marginLeft","padding","Button","Title","Subtitle"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { TouchableOpacity, TouchableOpacityProps, View, useWindowDimensions } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport { conditionChaining } from '@sendbird/uikit-utils';\n\nimport type { BaseHeaderProps } from '../../index';\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport getDefaultHeaderHeight from '../../styles/getDefaultHeaderHeight';\nimport useHeaderStyle from '../../styles/useHeaderStyle';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport Text, { TextProps } from '../Text';\n\ntype HeaderElement = string | React.ReactElement | null;\ntype HeaderProps = BaseHeaderProps<\n {\n title?: HeaderElement;\n left?: HeaderElement;\n right?: HeaderElement;\n onPressLeft?: () => void;\n onPressRight?: () => void;\n },\n { clearTitleMargin?: boolean }\n>;\n\nconst AlignMapper = { left: 'flex-start', center: 'center', right: 'flex-end' } as const;\nconst Header: React.FC<HeaderProps> & {\n Button: typeof HeaderButton;\n Title: typeof HeaderTitle;\n Subtitle: typeof HeaderSubtitle;\n} = ({\n children,\n titleAlign,\n title = null,\n left = null,\n right = null,\n onPressLeft,\n onPressRight,\n clearTitleMargin = false,\n}) => {\n const { topInset, defaultTitleAlign } = useHeaderStyle();\n const { width, height } = useWindowDimensions();\n const { colors } = useUIKitTheme();\n const { left: paddingLeft, right: paddingRight } = useSafeAreaInsets();\n\n const actualTitleAlign = titleAlign ?? defaultTitleAlign;\n\n if (!title && !left && !right) {\n return (\n <View style={{ paddingTop: topInset, backgroundColor: colors.ui.header.nav.none.background }}>{children}</View>\n );\n }\n\n return (\n <View\n style={[\n styles.container,\n {\n paddingLeft: paddingLeft + styles.container.paddingHorizontal,\n paddingRight: paddingRight + styles.container.paddingHorizontal,\n paddingTop: topInset,\n backgroundColor: colors.ui.header.nav.none.background,\n borderBottomColor: colors.ui.header.nav.none.borderBottom,\n },\n ]}\n >\n <View style={[styles.header, { height: getDefaultHeaderHeight(width > height) }]}>\n <LeftSide titleAlign={actualTitleAlign} left={left} onPressLeft={onPressLeft} />\n <View\n style={[\n styles.title,\n clearTitleMargin && { marginHorizontal: 0 },\n { justifyContent: AlignMapper[actualTitleAlign] },\n ]}\n >\n {typeof title === 'string' ? <HeaderTitle>{title}</HeaderTitle> : title}\n </View>\n <RightSide titleAlign={actualTitleAlign} right={right} onPressRight={onPressRight} />\n </View>\n {children}\n </View>\n );\n};\n\nconst LeftSide: React.FC<HeaderProps> = ({ titleAlign, onPressLeft, left }) => {\n if (titleAlign === 'center') {\n return <View style={styles.left}>{left && <HeaderButton onPress={onPressLeft}>{left}</HeaderButton>}</View>;\n }\n if (!left) return null;\n return (\n <View style={styles.left}>\n <HeaderButton onPress={onPressLeft}>{left}</HeaderButton>\n </View>\n );\n};\n\nconst RightSide: React.FC<HeaderProps> = ({ titleAlign, onPressRight, right }) => {\n if (titleAlign === 'center') {\n return <View style={styles.right}>{right && <HeaderButton onPress={onPressRight}>{right}</HeaderButton>}</View>;\n }\n if (!right) return null;\n return (\n <View style={styles.right}>\n <HeaderButton onPress={onPressRight}>{right}</HeaderButton>\n </View>\n );\n};\n\nconst HeaderTitle: React.FC<{ children: string } & TextProps> = ({ children, style, ...props }) => {\n return (\n <Text {...props} h1 numberOfLines={1} style={style}>\n {children}\n </Text>\n );\n};\nconst HeaderSubtitle: React.FC<{ children: string } & TextProps> = ({ children, style, ...props }) => {\n const { colors } = useUIKitTheme();\n return (\n <Text color={colors.onBackground03} {...props} caption2 numberOfLines={1} style={style}>\n {children}\n </Text>\n );\n};\nconst HeaderButton: React.FC<TouchableOpacityProps & { color?: string }> = ({\n children,\n disabled,\n onPress,\n color,\n ...props\n}) => {\n return (\n <TouchableOpacity\n style={styles.button}\n {...props}\n disabled={!onPress || disabled}\n onPress={(e) => onPress?.(e)}\n activeOpacity={0.7}\n >\n {conditionChaining(\n [typeof children === 'string' || typeof children === 'number'],\n [\n <Text button numberOfLines={1} color={color}>\n {children}\n </Text>,\n children,\n ],\n )}\n </TouchableOpacity>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n paddingHorizontal: 12,\n borderBottomWidth: 1,\n },\n header: {\n flexDirection: 'row',\n },\n title: {\n flex: 1,\n flexDirection: 'row',\n alignItems: 'center',\n marginHorizontal: 12,\n },\n left: {\n height: '100%',\n minWidth: 32,\n alignItems: 'center',\n justifyContent: 'center',\n marginRight: 12,\n },\n right: {\n height: '100%',\n minWidth: 32,\n alignItems: 'center',\n justifyContent: 'center',\n marginLeft: 12,\n },\n button: {\n padding: 4,\n },\n});\n\nHeader.Button = HeaderButton;\nHeader.Title = HeaderTitle;\nHeader.Subtitle = HeaderSubtitle;\nexport default Header;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["AlignMapper","left","center","right","Header","children","titleAlign","title","onPressLeft","onPressRight","clearTitleMargin","topInset","defaultTitleAlign","defaultHeight","useHeaderStyle","colors","useUIKitTheme","paddingLeft","paddingRight","useSafeAreaInsets","actualTitleAlign","paddingTop","backgroundColor","ui","header","nav","none","background","styles","container","paddingHorizontal","borderBottomColor","borderBottom","height","marginHorizontal","justifyContent","LeftSide","RightSide","HeaderTitle","style","props","HeaderSubtitle","onBackground03","HeaderButton","disabled","onPress","color","button","e","conditionChaining","createStyleSheet","borderBottomWidth","flexDirection","flex","alignItems","minWidth","marginRight","marginLeft","padding","Button","Title","Subtitle"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { TouchableOpacity, TouchableOpacityProps, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport { conditionChaining } from '@sendbird/uikit-utils';\n\nimport type { BaseHeaderProps } from '../../index';\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useHeaderStyle from '../../styles/useHeaderStyle';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport Text, { TextProps } from '../Text';\n\ntype HeaderElement = string | React.ReactElement | null;\ntype HeaderProps = BaseHeaderProps<\n {\n title?: HeaderElement;\n left?: HeaderElement;\n right?: HeaderElement;\n onPressLeft?: () => void;\n onPressRight?: () => void;\n },\n { clearTitleMargin?: boolean }\n>;\n\nconst AlignMapper = { left: 'flex-start', center: 'center', right: 'flex-end' } as const;\nconst Header: ((props: HeaderProps) => JSX.Element) & {\n Button: typeof HeaderButton;\n Title: typeof HeaderTitle;\n Subtitle: typeof HeaderSubtitle;\n} = ({\n children,\n titleAlign,\n title = null,\n left = null,\n right = null,\n onPressLeft,\n onPressRight,\n clearTitleMargin = false,\n}) => {\n const { topInset, defaultTitleAlign, defaultHeight } = useHeaderStyle();\n const { colors } = useUIKitTheme();\n const { left: paddingLeft, right: paddingRight } = useSafeAreaInsets();\n\n const actualTitleAlign = titleAlign ?? defaultTitleAlign;\n\n if (!title && !left && !right) {\n return (\n <View style={{ paddingTop: topInset, backgroundColor: colors.ui.header.nav.none.background }}>{children}</View>\n );\n }\n\n return (\n <View\n style={[\n styles.container,\n {\n paddingLeft: paddingLeft + styles.container.paddingHorizontal,\n paddingRight: paddingRight + styles.container.paddingHorizontal,\n paddingTop: topInset,\n backgroundColor: colors.ui.header.nav.none.background,\n borderBottomColor: colors.ui.header.nav.none.borderBottom,\n },\n ]}\n >\n <View style={[styles.header, { height: defaultHeight }]}>\n <LeftSide titleAlign={actualTitleAlign} left={left} onPressLeft={onPressLeft} />\n <View\n style={[\n styles.title,\n clearTitleMargin && { marginHorizontal: 0 },\n { justifyContent: AlignMapper[actualTitleAlign] },\n ]}\n >\n {typeof title === 'string' ? <HeaderTitle>{title}</HeaderTitle> : title}\n </View>\n <RightSide titleAlign={actualTitleAlign} right={right} onPressRight={onPressRight} />\n </View>\n {children}\n </View>\n );\n};\n\nconst LeftSide = ({ titleAlign, onPressLeft, left }: HeaderProps) => {\n if (titleAlign === 'center') {\n return <View style={styles.left}>{left && <HeaderButton onPress={onPressLeft}>{left}</HeaderButton>}</View>;\n }\n if (!left) return null;\n return (\n <View style={styles.left}>\n <HeaderButton onPress={onPressLeft}>{left}</HeaderButton>\n </View>\n );\n};\n\nconst RightSide = ({ titleAlign, onPressRight, right }: HeaderProps) => {\n if (titleAlign === 'center') {\n return <View style={styles.right}>{right && <HeaderButton onPress={onPressRight}>{right}</HeaderButton>}</View>;\n }\n if (!right) return null;\n return (\n <View style={styles.right}>\n <HeaderButton onPress={onPressRight}>{right}</HeaderButton>\n </View>\n );\n};\n\nconst HeaderTitle = ({ children, style, ...props }: TextProps) => {\n return (\n <Text {...props} h1 numberOfLines={1} style={style}>\n {children}\n </Text>\n );\n};\nconst HeaderSubtitle = ({ children, style, ...props }: TextProps) => {\n const { colors } = useUIKitTheme();\n return (\n <Text color={colors.onBackground03} {...props} caption2 numberOfLines={1} style={style}>\n {children}\n </Text>\n );\n};\nconst HeaderButton = ({ children, disabled, onPress, color, ...props }: TouchableOpacityProps & { color?: string }) => {\n return (\n <TouchableOpacity\n style={styles.button}\n {...props}\n disabled={!onPress || disabled}\n onPress={(e) => onPress?.(e)}\n activeOpacity={0.7}\n >\n {conditionChaining(\n [typeof children === 'string' || typeof children === 'number'],\n [\n <Text button numberOfLines={1} color={color}>\n {children}\n </Text>,\n children,\n ],\n )}\n </TouchableOpacity>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n paddingHorizontal: 12,\n borderBottomWidth: 1,\n },\n header: {\n flexDirection: 'row',\n },\n title: {\n flex: 1,\n flexDirection: 'row',\n alignItems: 'center',\n marginHorizontal: 12,\n },\n left: {\n height: '100%',\n minWidth: 32,\n alignItems: 'center',\n justifyContent: 'center',\n marginRight: 12,\n },\n right: {\n height: '100%',\n minWidth: 32,\n alignItems: 'center',\n justifyContent: 'center',\n marginLeft: 12,\n },\n button: {\n padding: 4,\n },\n});\n\nHeader.Button = HeaderButton;\nHeader.Title = HeaderTitle;\nHeader.Subtitle = HeaderSubtitle;\nexport default Header;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Icon","icon","color","size","containerStyle","style","sizeStyle","sizeStyles","width","height","colors","useUIKitTheme","containerStyles","container","IconAssets","tintColor","primary","StyleSheet","create","alignItems","justifyContent","createStyleSheet","Assets"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { Image, ImageStyle, StyleProp, StyleSheet, View, ViewStyle } from 'react-native';\n\nimport IconAssets from '../../assets/icon';\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\n\ntype IconNames = keyof typeof IconAssets;\ntype SizeFactor = keyof typeof sizeStyles;\n\ntype Props = {\n icon: IconNames;\n color?: string;\n size?: number;\n style?: StyleProp<ImageStyle>;\n containerStyle?: StyleProp<ViewStyle>;\n};\
|
|
1
|
+
{"version":3,"names":["Icon","icon","color","size","containerStyle","style","sizeStyle","sizeStyles","width","height","colors","useUIKitTheme","containerStyles","container","IconAssets","tintColor","primary","StyleSheet","create","alignItems","justifyContent","createStyleSheet","Assets"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { Image, ImageStyle, StyleProp, StyleSheet, View, ViewStyle } from 'react-native';\n\nimport IconAssets from '../../assets/icon';\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\n\ntype IconNames = keyof typeof IconAssets;\ntype SizeFactor = keyof typeof sizeStyles;\n\ntype Props = {\n icon: IconNames;\n color?: string;\n size?: number;\n style?: StyleProp<ImageStyle>;\n containerStyle?: StyleProp<ViewStyle>;\n};\nconst Icon: ((props: Props) => JSX.Element) & { Assets: typeof IconAssets } = ({\n icon,\n color,\n size = 24,\n containerStyle,\n style,\n}) => {\n const sizeStyle = sizeStyles[size as SizeFactor] ?? { width: size, height: size };\n const { colors } = useUIKitTheme();\n return (\n <View style={[containerStyle, containerStyles.container]}>\n <Image\n resizeMode={'contain'}\n source={IconAssets[icon]}\n style={[{ tintColor: color ?? colors.primary }, sizeStyle, style]}\n />\n </View>\n );\n};\n\nconst containerStyles = StyleSheet.create({\n container: {\n alignItems: 'center',\n justifyContent: 'center',\n },\n});\n\nconst sizeStyles = createStyleSheet({\n 16: {\n width: 16,\n height: 16,\n },\n 20: {\n width: 20,\n height: 20,\n },\n 24: {\n width: 24,\n height: 24,\n },\n 28: {\n width: 28,\n height: 28,\n },\n 32: {\n width: 32,\n height: 32,\n },\n});\n\nIcon.Assets = IconAssets;\nexport default Icon;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;AACA;;;;AAYA,MAAMA,IAAqE,GAAG,QAMxE;EAAA,IANyE;IAC7EC,IAD6E;IAE7EC,KAF6E;IAG7EC,IAAI,GAAG,EAHsE;IAI7EC,cAJ6E;IAK7EC;EAL6E,CAMzE;EACJ,MAAMC,SAAS,GAAGC,UAAU,CAACJ,IAAD,CAAV,IAAkC;IAAEK,KAAK,EAAEL,IAAT;IAAeM,MAAM,EAAEN;EAAvB,CAApD;EACA,MAAM;IAAEO;EAAF,IAAa,IAAAC,sBAAA,GAAnB;EACA,oBACE,6BAAC,iBAAD;IAAM,KAAK,EAAE,CAACP,cAAD,EAAiBQ,eAAe,CAACC,SAAjC;EAAb,gBACE,6BAAC,kBAAD;IACE,UAAU,EAAE,SADd;IAEE,MAAM,EAAEC,aAAA,CAAWb,IAAX,CAFV;IAGE,KAAK,EAAE,CAAC;MAAEc,SAAS,EAAEb,KAAK,IAAIQ,MAAM,CAACM;IAA7B,CAAD,EAAyCV,SAAzC,EAAoDD,KAApD;EAHT,EADF,CADF;AASD,CAlBD;;AAoBA,MAAMO,eAAe,GAAGK,uBAAA,CAAWC,MAAX,CAAkB;EACxCL,SAAS,EAAE;IACTM,UAAU,EAAE,QADH;IAETC,cAAc,EAAE;EAFP;AAD6B,CAAlB,CAAxB;;AAOA,MAAMb,UAAU,GAAG,IAAAc,yBAAA,EAAiB;EAClC,IAAI;IACFb,KAAK,EAAE,EADL;IAEFC,MAAM,EAAE;EAFN,CAD8B;EAKlC,IAAI;IACFD,KAAK,EAAE,EADL;IAEFC,MAAM,EAAE;EAFN,CAL8B;EASlC,IAAI;IACFD,KAAK,EAAE,EADL;IAEFC,MAAM,EAAE;EAFN,CAT8B;EAalC,IAAI;IACFD,KAAK,EAAE,EADL;IAEFC,MAAM,EAAE;EAFN,CAb8B;EAiBlC,IAAI;IACFD,KAAK,EAAE,EADL;IAEFC,MAAM,EAAE;EAFN;AAjB8B,CAAjB,CAAnB;AAuBAT,IAAI,CAACsB,MAAL,GAAcR,aAAd;eACed,I"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["LoadingSpinner","size","color","style","colors","useUIKitTheme","primary","useLoopAnimated","duration","useNativeDriver","animated","useRef","Animated","Value","current","useEffect","loop","timing","toValue","easing","Easing","inOut","linear","resetBeforeIteration","start","stopAnimation","setValue","Rotate","children","rotate","interpolate","inputRange","outputRange","transform"],"sources":["index.tsx"],"sourcesContent":["import React, { useEffect, useRef } from 'react';\nimport { Animated, Easing, StyleProp, ViewStyle } from 'react-native';\n\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport Icon from '../Icon';\n\ntype Props = {\n size?: number;\n color?: string;\n style?: StyleProp<ViewStyle>;\n};\n\nconst LoadingSpinner
|
|
1
|
+
{"version":3,"names":["LoadingSpinner","size","color","style","colors","useUIKitTheme","primary","useLoopAnimated","duration","useNativeDriver","animated","useRef","Animated","Value","current","useEffect","loop","timing","toValue","easing","Easing","inOut","linear","resetBeforeIteration","start","stopAnimation","setValue","Rotate","children","rotate","interpolate","inputRange","outputRange","transform"],"sources":["index.tsx"],"sourcesContent":["import React, { useEffect, useRef } from 'react';\nimport { Animated, Easing, StyleProp, ViewStyle } from 'react-native';\n\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport Icon from '../Icon';\n\ntype Props = {\n size?: number;\n color?: string;\n style?: StyleProp<ViewStyle>;\n};\n\nconst LoadingSpinner = ({ size = 24, color, style }: Props) => {\n const { colors } = useUIKitTheme();\n return (\n <Rotate style={style}>\n <Icon icon={'spinner'} size={size} color={color ?? colors.primary} />\n </Rotate>\n );\n};\n\nconst useLoopAnimated = (duration: number, useNativeDriver = true) => {\n const animated = useRef(new Animated.Value(0)).current;\n\n useEffect(() => {\n Animated.loop(\n Animated.timing(animated, { toValue: 1, duration, useNativeDriver, easing: Easing.inOut(Easing.linear) }),\n { resetBeforeIteration: true },\n ).start();\n\n return () => {\n animated.stopAnimation();\n animated.setValue(0);\n };\n }, []);\n\n return animated;\n};\n\nconst Rotate = ({ children, style }: React.PropsWithChildren<{ style: StyleProp<ViewStyle> }>) => {\n const loop = useLoopAnimated(1000);\n const rotate = loop.interpolate({ inputRange: [0, 1], outputRange: ['0deg', '360deg'] });\n return <Animated.View style={[style, { transform: [{ rotate }] }]}>{children}</Animated.View>;\n};\n\nexport default LoadingSpinner;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;;;;;;;AAQA,MAAMA,cAAc,GAAG,QAAwC;EAAA,IAAvC;IAAEC,IAAI,GAAG,EAAT;IAAaC,KAAb;IAAoBC;EAApB,CAAuC;EAC7D,MAAM;IAAEC;EAAF,IAAa,IAAAC,sBAAA,GAAnB;EACA,oBACE,6BAAC,MAAD;IAAQ,KAAK,EAAEF;EAAf,gBACE,6BAAC,aAAD;IAAM,IAAI,EAAE,SAAZ;IAAuB,IAAI,EAAEF,IAA7B;IAAmC,KAAK,EAAEC,KAAK,IAAIE,MAAM,CAACE;EAA1D,EADF,CADF;AAKD,CAPD;;AASA,MAAMC,eAAe,GAAG,UAACC,QAAD,EAA8C;EAAA,IAA3BC,eAA2B,uEAAT,IAAS;EACpE,MAAMC,QAAQ,GAAG,IAAAC,aAAA,EAAO,IAAIC,qBAAA,CAASC,KAAb,CAAmB,CAAnB,CAAP,EAA8BC,OAA/C;EAEA,IAAAC,gBAAA,EAAU,MAAM;IACdH,qBAAA,CAASI,IAAT,CACEJ,qBAAA,CAASK,MAAT,CAAgBP,QAAhB,EAA0B;MAAEQ,OAAO,EAAE,CAAX;MAAcV,QAAd;MAAwBC,eAAxB;MAAyCU,MAAM,EAAEC,mBAAA,CAAOC,KAAP,CAAaD,mBAAA,CAAOE,MAApB;IAAjD,CAA1B,CADF,EAEE;MAAEC,oBAAoB,EAAE;IAAxB,CAFF,EAGEC,KAHF;;IAKA,OAAO,MAAM;MACXd,QAAQ,CAACe,aAAT;MACAf,QAAQ,CAACgB,QAAT,CAAkB,CAAlB;IACD,CAHD;EAID,CAVD,EAUG,EAVH;EAYA,OAAOhB,QAAP;AACD,CAhBD;;AAkBA,MAAMiB,MAAM,GAAG,SAAmF;EAAA,IAAlF;IAAEC,QAAF;IAAYzB;EAAZ,CAAkF;EAChG,MAAMa,IAAI,GAAGT,eAAe,CAAC,IAAD,CAA5B;EACA,MAAMsB,MAAM,GAAGb,IAAI,CAACc,WAAL,CAAiB;IAAEC,UAAU,EAAE,CAAC,CAAD,EAAI,CAAJ,CAAd;IAAsBC,WAAW,EAAE,CAAC,MAAD,EAAS,QAAT;EAAnC,CAAjB,CAAf;EACA,oBAAO,6BAAC,qBAAD,CAAU,IAAV;IAAe,KAAK,EAAE,CAAC7B,KAAD,EAAQ;MAAE8B,SAAS,EAAE,CAAC;QAAEJ;MAAF,CAAD;IAAb,CAAR;EAAtB,GAA6DD,QAA7D,CAAP;AACD,CAJD;;eAMe5B,c"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["MenuBar","variant","disabled","onPress","name","icon","iconColor","iconBackgroundColor","actionLabel","actionItem","palette","colors","useUIKitTheme","styles","container","conditionChaining","background50","primary","containedIcon","backgroundColor","background400","Boolean","onBackground02","createStyleSheet","paddingVertical","flexDirection","alignItems","flex","marginRight","borderRadius","padding"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { Pressable, View } from 'react-native';\n\nimport { conditionChaining } from '@sendbird/uikit-utils';\n\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport Divider from '../Divider';\nimport Icon from '../Icon';\nimport Text from '../Text';\n\nexport type MenuBarProps = {\n variant?: 'default' | 'contained';\n\n onPress: () => void;\n disabled?: boolean;\n\n icon: keyof typeof Icon.Assets;\n iconColor?: string;\n iconBackgroundColor?: string;\n name: string;\n\n actionLabel?: string;\n actionItem?: React.ReactNode;\n};\nconst MenuBar
|
|
1
|
+
{"version":3,"names":["MenuBar","variant","disabled","onPress","name","icon","iconColor","iconBackgroundColor","actionLabel","actionItem","palette","colors","useUIKitTheme","styles","container","conditionChaining","background50","primary","containedIcon","backgroundColor","background400","Boolean","onBackground02","createStyleSheet","paddingVertical","flexDirection","alignItems","flex","marginRight","borderRadius","padding"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { Pressable, View } from 'react-native';\n\nimport { conditionChaining } from '@sendbird/uikit-utils';\n\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport Divider from '../Divider';\nimport Icon from '../Icon';\nimport Text from '../Text';\n\nexport type MenuBarProps = {\n variant?: 'default' | 'contained';\n\n onPress: () => void;\n disabled?: boolean;\n\n icon: keyof typeof Icon.Assets;\n iconColor?: string;\n iconBackgroundColor?: string;\n name: string;\n\n actionLabel?: string;\n actionItem?: React.ReactNode;\n};\nconst MenuBar = ({\n variant = 'default',\n disabled,\n onPress,\n name,\n icon,\n iconColor,\n iconBackgroundColor,\n actionLabel,\n actionItem = null,\n}: MenuBarProps) => {\n const { palette, colors } = useUIKitTheme();\n\n return (\n <View>\n <Pressable disabled={disabled} onPress={onPress} style={styles.container}>\n {icon && (\n <Icon\n icon={icon}\n size={variant === 'contained' ? 16 : 24}\n color={conditionChaining(\n [variant === 'contained', iconColor],\n [palette.background50, iconColor, colors.primary],\n )}\n containerStyle={[\n styles.icon,\n variant === 'contained' && styles.containedIcon,\n variant === 'contained' && { backgroundColor: iconBackgroundColor ?? palette.background400 },\n ]}\n />\n )}\n <Text subtitle2 numberOfLines={1} style={styles.name}>\n {name}\n </Text>\n {Boolean(actionLabel) && (\n <Text subtitle2 numberOfLines={1} color={colors.onBackground02} style={styles.actionLabel}>\n {actionLabel}\n </Text>\n )}\n {actionItem}\n </Pressable>\n <Divider />\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n paddingVertical: 16,\n flexDirection: 'row',\n alignItems: 'center',\n },\n name: {\n flex: 1,\n marginRight: 8,\n },\n icon: {\n marginRight: 16,\n },\n containedIcon: {\n borderRadius: 24,\n padding: 4,\n },\n actionLabel: {\n marginRight: 4,\n },\n});\n\nexport default MenuBar;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AAEA;;AACA;;AACA;;AACA;;AACA;;;;AAgBA,MAAMA,OAAO,GAAG,QAUI;EAAA,IAVH;IACfC,OAAO,GAAG,SADK;IAEfC,QAFe;IAGfC,OAHe;IAIfC,IAJe;IAKfC,IALe;IAMfC,SANe;IAOfC,mBAPe;IAQfC,WARe;IASfC,UAAU,GAAG;EATE,CAUG;EAClB,MAAM;IAAEC,OAAF;IAAWC;EAAX,IAAsB,IAAAC,sBAAA,GAA5B;EAEA,oBACE,6BAAC,iBAAD,qBACE,6BAAC,sBAAD;IAAW,QAAQ,EAAEV,QAArB;IAA+B,OAAO,EAAEC,OAAxC;IAAiD,KAAK,EAAEU,MAAM,CAACC;EAA/D,GACGT,IAAI,iBACH,6BAAC,aAAD;IACE,IAAI,EAAEA,IADR;IAEE,IAAI,EAAEJ,OAAO,KAAK,WAAZ,GAA0B,EAA1B,GAA+B,EAFvC;IAGE,KAAK,EAAE,IAAAc,6BAAA,EACL,CAACd,OAAO,KAAK,WAAb,EAA0BK,SAA1B,CADK,EAEL,CAACI,OAAO,CAACM,YAAT,EAAuBV,SAAvB,EAAkCK,MAAM,CAACM,OAAzC,CAFK,CAHT;IAOE,cAAc,EAAE,CACdJ,MAAM,CAACR,IADO,EAEdJ,OAAO,KAAK,WAAZ,IAA2BY,MAAM,CAACK,aAFpB,EAGdjB,OAAO,KAAK,WAAZ,IAA2B;MAAEkB,eAAe,EAAEZ,mBAAmB,IAAIG,OAAO,CAACU;IAAlD,CAHb;EAPlB,EAFJ,eAgBE,6BAAC,aAAD;IAAM,SAAS,MAAf;IAAgB,aAAa,EAAE,CAA/B;IAAkC,KAAK,EAAEP,MAAM,CAACT;EAAhD,GACGA,IADH,CAhBF,EAmBGiB,OAAO,CAACb,WAAD,CAAP,iBACC,6BAAC,aAAD;IAAM,SAAS,MAAf;IAAgB,aAAa,EAAE,CAA/B;IAAkC,KAAK,EAAEG,MAAM,CAACW,cAAhD;IAAgE,KAAK,EAAET,MAAM,CAACL;EAA9E,GACGA,WADH,CApBJ,EAwBGC,UAxBH,CADF,eA2BE,6BAAC,gBAAD,OA3BF,CADF;AA+BD,CA5CD;;AA8CA,MAAMI,MAAM,GAAG,IAAAU,yBAAA,EAAiB;EAC9BT,SAAS,EAAE;IACTU,eAAe,EAAE,EADR;IAETC,aAAa,EAAE,KAFN;IAGTC,UAAU,EAAE;EAHH,CADmB;EAM9BtB,IAAI,EAAE;IACJuB,IAAI,EAAE,CADF;IAEJC,WAAW,EAAE;EAFT,CANwB;EAU9BvB,IAAI,EAAE;IACJuB,WAAW,EAAE;EADT,CAVwB;EAa9BV,aAAa,EAAE;IACbW,YAAY,EAAE,EADD;IAEbC,OAAO,EAAE;EAFI,CAbe;EAiB9BtB,WAAW,EAAE;IACXoB,WAAW,EAAE;EADF;AAjBiB,CAAjB,CAAf;eAsBe5B,O"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Modal","children","onClose","backgroundStyle","onDismiss","type","visible","disableBackgroundClose","enableKeyboardAvoid","statusBarTranslucent","props","palette","useUIKitTheme","content","backdrop","showTransition","hideTransition","useModalAnimation","panResponder","useModalPanResponder","translateY","topInset","useHeaderStyle","modalVisible","setModalVisible","useState","showAction","hideAction","width","height","useWindowDimensions","useEffect","useOnDismiss","undefined","StyleSheet","absoluteFill","opacity","backgroundColor","onBackgroundLight03","styles","background","Platform","select","ios","default","transform","panHandlers","isHideGesture","distanceY","velocityY","show","hide","React","useRef","PanResponder","create","onMoveShouldSetPanResponderCapture","_","dy","onPanResponderGrant","setOffset","__getValue","onPanResponderMove","setValue","onPanResponderRelease","vy","current","initialY","Dimensions","get","baseAnimBackground","Animated","Value","baseAnimContent","interpolate","inputRange","outputRange","createTransition","toValue","config","duration","useNativeDriver","parallel","timing","start","prevVisible","usePrevProp","OS","prop","prev","curr","createStyleSheet","flex"],"sources":["index.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport {\n Animated,\n Dimensions,\n KeyboardAvoidingView,\n ModalProps,\n PanResponder,\n Platform,\n Pressable,\n Modal as RNModal,\n StyleProp,\n StyleSheet,\n TouchableWithoutFeedback,\n ViewStyle,\n useWindowDimensions,\n} from 'react-native';\n\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useHeaderStyle from '../../styles/useHeaderStyle';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\n\ntype Props = {\n type?: 'slide' | 'fade';\n onClose: () => void;\n backgroundStyle?: StyleProp<ViewStyle>;\n disableBackgroundClose?: boolean;\n enableKeyboardAvoid?: boolean;\n} & Omit<ModalProps, 'animationType' | 'onRequestClose'>;\n\n/**\n * Modal Open: Triggered by Modal.props.visible state changed to true\n * - visible true -> modalVisible true -> animation start\n *\n * Modal Close: Triggered by Modal.props.onClose() call\n * - Modal.props.onClose() -> visible false -> animation start -> modalVisible false\n * */\nconst Modal: React.FC<Props> = ({\n children,\n onClose,\n backgroundStyle,\n onDismiss,\n type = 'fade',\n visible = false,\n disableBackgroundClose = false,\n enableKeyboardAvoid = false,\n statusBarTranslucent,\n ...props\n}) => {\n const { palette } = useUIKitTheme();\n const { content, backdrop, showTransition, hideTransition } = useModalAnimation(type);\n const panResponder = useModalPanResponder(type, content.translateY, showTransition, onClose);\n const { topInset } = useHeaderStyle();\n\n const [modalVisible, setModalVisible] = useState(false);\n const showAction = () => setModalVisible(true);\n const hideAction = () => hideTransition(() => setModalVisible(false));\n\n const { width, height } = useWindowDimensions();\n\n useEffect(() => {\n if (visible) showAction();\n else hideAction();\n }, [visible]);\n\n useOnDismiss(modalVisible, onDismiss);\n\n return (\n <RNModal\n transparent\n hardwareAccelerated\n visible={modalVisible}\n onRequestClose={onClose}\n onShow={() => showTransition()}\n onDismiss={onDismiss}\n supportedOrientations={['portrait', 'portrait-upside-down', 'landscape', 'landscape-left', 'landscape-right']}\n animationType={'none'}\n {...props}\n >\n <TouchableWithoutFeedback onPress={disableBackgroundClose ? undefined : onClose}>\n <Animated.View\n style={[StyleSheet.absoluteFill, { opacity: backdrop.opacity, backgroundColor: palette.onBackgroundLight03 }]}\n />\n </TouchableWithoutFeedback>\n <KeyboardAvoidingView\n // NOTE: This is trick for Android.\n // When orientation is changed on Android, the offset that to avoid soft-keyboard is not updated normally.\n key={`${width}-${height}`}\n enabled={enableKeyboardAvoid}\n style={styles.background}\n behavior={Platform.select({ ios: 'padding', default: 'height' })}\n pointerEvents={'box-none'}\n keyboardVerticalOffset={enableKeyboardAvoid && statusBarTranslucent ? -topInset : 0}\n >\n <Animated.View\n style={[\n styles.background,\n backgroundStyle,\n { opacity: content.opacity, transform: [{ translateY: content.translateY }] },\n ]}\n pointerEvents={'box-none'}\n {...panResponder.panHandlers}\n >\n <Pressable\n // NOTE: https://github.com/facebook/react-native/issues/14295\n // Due to 'Pressable', the width of the children must be explicitly specified as a number.\n >\n {children}\n </Pressable>\n </Animated.View>\n </KeyboardAvoidingView>\n </RNModal>\n );\n};\n\nconst isHideGesture = (distanceY: number, velocityY: number) => {\n return distanceY > 125 || (distanceY > 0 && velocityY > 0.1);\n};\nconst useModalPanResponder = (\n type: 'slide' | 'fade',\n translateY: Animated.Value,\n show: () => void,\n hide: () => void,\n) => {\n if (type === 'fade') return { panHandlers: {} };\n return React.useRef(\n PanResponder.create({\n onMoveShouldSetPanResponderCapture: (_, { dy }) => dy > 8,\n // @ts-ignore\n onPanResponderGrant: () => translateY.setOffset(translateY.__getValue()),\n onPanResponderMove: (_, { dy }) => dy >= 0 && translateY.setValue(dy), // Animated.event([null, { dy: translateY }], { useNativeDriver: false }),\n onPanResponderRelease: (_, { dy, vy }) => {\n if (isHideGesture(dy, vy)) hide();\n else show();\n },\n }),\n ).current;\n};\n\nconst useModalAnimation = (type: 'slide' | 'fade') => {\n const initialY = type === 'slide' ? Dimensions.get('window').height : 0;\n const baseAnimBackground = useRef(new Animated.Value(0)).current;\n const baseAnimContent = useRef(new Animated.Value(initialY)).current;\n\n const content = {\n opacity: baseAnimBackground.interpolate({\n inputRange: [0, 1],\n outputRange: [type === 'slide' ? 1 : 0, 1],\n }),\n translateY: baseAnimContent,\n };\n const backdrop = {\n opacity: baseAnimBackground.interpolate({\n inputRange: [0, 1],\n outputRange: [0, 1],\n }),\n };\n const createTransition = (toValue: 0 | 1) => {\n const config = { duration: 250, useNativeDriver: false };\n return Animated.parallel([\n Animated.timing(baseAnimBackground, { toValue, ...config }),\n Animated.timing(baseAnimContent, { toValue: toValue === 0 ? initialY : 0, ...config }),\n ]).start;\n };\n return {\n content,\n backdrop,\n showTransition: createTransition(1),\n hideTransition: createTransition(0),\n };\n};\n\n// NOTE: onDismiss is supports iOS only\nconst useOnDismiss = (visible: boolean, onDismiss?: () => void) => {\n const prevVisible = usePrevProp(visible);\n useEffect(() => {\n if (Platform.OS === 'ios') return;\n if (prevVisible && !visible) onDismiss?.();\n }, [prevVisible, visible]);\n};\n\nconst usePrevProp = <T,>(prop: T) => {\n const prev = useRef(prop);\n const curr = useRef(prop);\n useEffect(() => {\n prev.current = curr.current;\n curr.current = prop;\n });\n return prev.current;\n};\n\nconst styles = createStyleSheet({\n background: { flex: 1 },\n});\n\nexport default Modal;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["Modal","children","onClose","backgroundStyle","onDismiss","type","visible","disableBackgroundClose","enableKeyboardAvoid","statusBarTranslucent","props","palette","useUIKitTheme","content","backdrop","showTransition","hideTransition","useModalAnimation","panResponder","useModalPanResponder","translateY","topInset","useHeaderStyle","modalVisible","setModalVisible","useState","showAction","hideAction","width","height","useWindowDimensions","useEffect","useOnDismiss","undefined","StyleSheet","absoluteFill","opacity","backgroundColor","onBackgroundLight03","styles","background","Platform","select","ios","default","transform","panHandlers","isHideGesture","distanceY","velocityY","show","hide","React","useRef","PanResponder","create","onMoveShouldSetPanResponderCapture","_","dy","onPanResponderGrant","setOffset","__getValue","onPanResponderMove","setValue","onPanResponderRelease","vy","current","initialY","Dimensions","get","baseAnimBackground","Animated","Value","baseAnimContent","interpolate","inputRange","outputRange","createTransition","toValue","config","duration","useNativeDriver","parallel","timing","start","prevVisible","usePrevProp","OS","prop","prev","curr","createStyleSheet","flex"],"sources":["index.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport {\n Animated,\n Dimensions,\n KeyboardAvoidingView,\n ModalProps,\n PanResponder,\n Platform,\n Pressable,\n Modal as RNModal,\n StyleProp,\n StyleSheet,\n TouchableWithoutFeedback,\n ViewStyle,\n useWindowDimensions,\n} from 'react-native';\n\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useHeaderStyle from '../../styles/useHeaderStyle';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\n\ntype Props = {\n type?: 'slide' | 'fade';\n onClose: () => void;\n backgroundStyle?: StyleProp<ViewStyle>;\n disableBackgroundClose?: boolean;\n enableKeyboardAvoid?: boolean;\n} & Omit<ModalProps, 'animationType' | 'onRequestClose'>;\n\n/**\n * Modal Open: Triggered by Modal.props.visible state changed to true\n * - visible true -> modalVisible true -> animation start\n *\n * Modal Close: Triggered by Modal.props.onClose() call\n * - Modal.props.onClose() -> visible false -> animation start -> modalVisible false\n * */\nconst Modal = ({\n children,\n onClose,\n backgroundStyle,\n onDismiss,\n type = 'fade',\n visible = false,\n disableBackgroundClose = false,\n enableKeyboardAvoid = false,\n statusBarTranslucent,\n ...props\n}: Props) => {\n const { palette } = useUIKitTheme();\n const { content, backdrop, showTransition, hideTransition } = useModalAnimation(type);\n const panResponder = useModalPanResponder(type, content.translateY, showTransition, onClose);\n const { topInset } = useHeaderStyle();\n\n const [modalVisible, setModalVisible] = useState(false);\n const showAction = () => setModalVisible(true);\n const hideAction = () => hideTransition(() => setModalVisible(false));\n\n const { width, height } = useWindowDimensions();\n\n useEffect(() => {\n if (visible) showAction();\n else hideAction();\n }, [visible]);\n\n useOnDismiss(modalVisible, onDismiss);\n\n return (\n <RNModal\n transparent\n hardwareAccelerated\n visible={modalVisible}\n onRequestClose={onClose}\n onShow={() => showTransition()}\n onDismiss={onDismiss}\n supportedOrientations={['portrait', 'portrait-upside-down', 'landscape', 'landscape-left', 'landscape-right']}\n animationType={'none'}\n {...props}\n >\n <TouchableWithoutFeedback onPress={disableBackgroundClose ? undefined : onClose}>\n <Animated.View\n style={[StyleSheet.absoluteFill, { opacity: backdrop.opacity, backgroundColor: palette.onBackgroundLight03 }]}\n />\n </TouchableWithoutFeedback>\n <KeyboardAvoidingView\n // NOTE: This is trick for Android.\n // When orientation is changed on Android, the offset that to avoid soft-keyboard is not updated normally.\n key={`${width}-${height}`}\n enabled={enableKeyboardAvoid}\n style={styles.background}\n behavior={Platform.select({ ios: 'padding', default: 'height' })}\n pointerEvents={'box-none'}\n keyboardVerticalOffset={enableKeyboardAvoid && statusBarTranslucent ? -topInset : 0}\n >\n <Animated.View\n style={[\n styles.background,\n backgroundStyle,\n { opacity: content.opacity, transform: [{ translateY: content.translateY }] },\n ]}\n pointerEvents={'box-none'}\n {...panResponder.panHandlers}\n >\n <Pressable\n // NOTE: https://github.com/facebook/react-native/issues/14295\n // Due to 'Pressable', the width of the children must be explicitly specified as a number.\n >\n {children}\n </Pressable>\n </Animated.View>\n </KeyboardAvoidingView>\n </RNModal>\n );\n};\n\nconst isHideGesture = (distanceY: number, velocityY: number) => {\n return distanceY > 125 || (distanceY > 0 && velocityY > 0.1);\n};\nconst useModalPanResponder = (\n type: 'slide' | 'fade',\n translateY: Animated.Value,\n show: () => void,\n hide: () => void,\n) => {\n if (type === 'fade') return { panHandlers: {} };\n return React.useRef(\n PanResponder.create({\n onMoveShouldSetPanResponderCapture: (_, { dy }) => dy > 8,\n // @ts-ignore\n onPanResponderGrant: () => translateY.setOffset(translateY.__getValue()),\n onPanResponderMove: (_, { dy }) => dy >= 0 && translateY.setValue(dy), // Animated.event([null, { dy: translateY }], { useNativeDriver: false }),\n onPanResponderRelease: (_, { dy, vy }) => {\n if (isHideGesture(dy, vy)) hide();\n else show();\n },\n }),\n ).current;\n};\n\nconst useModalAnimation = (type: 'slide' | 'fade') => {\n const initialY = type === 'slide' ? Dimensions.get('window').height : 0;\n const baseAnimBackground = useRef(new Animated.Value(0)).current;\n const baseAnimContent = useRef(new Animated.Value(initialY)).current;\n\n const content = {\n opacity: baseAnimBackground.interpolate({\n inputRange: [0, 1],\n outputRange: [type === 'slide' ? 1 : 0, 1],\n }),\n translateY: baseAnimContent,\n };\n const backdrop = {\n opacity: baseAnimBackground.interpolate({\n inputRange: [0, 1],\n outputRange: [0, 1],\n }),\n };\n const createTransition = (toValue: 0 | 1) => {\n const config = { duration: 250, useNativeDriver: false };\n return Animated.parallel([\n Animated.timing(baseAnimBackground, { toValue, ...config }),\n Animated.timing(baseAnimContent, { toValue: toValue === 0 ? initialY : 0, ...config }),\n ]).start;\n };\n return {\n content,\n backdrop,\n showTransition: createTransition(1),\n hideTransition: createTransition(0),\n };\n};\n\n// NOTE: onDismiss is supports iOS only\nconst useOnDismiss = (visible: boolean, onDismiss?: () => void) => {\n const prevVisible = usePrevProp(visible);\n useEffect(() => {\n if (Platform.OS === 'ios') return;\n if (prevVisible && !visible) onDismiss?.();\n }, [prevVisible, visible]);\n};\n\nconst usePrevProp = <T,>(prop: T) => {\n const prev = useRef(prop);\n const curr = useRef(prop);\n useEffect(() => {\n prev.current = curr.current;\n curr.current = prop;\n });\n return prev.current;\n};\n\nconst styles = createStyleSheet({\n background: { flex: 1 },\n});\n\nexport default Modal;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Placeholder","icon","loading","message","errorRetryLabel","onPressRetry","colors","useUIKitTheme","conditionChaining","styles","containerLoading","containerError","container","ui","placeholder","default","none","highlight","content","Boolean","createStyleSheet","width","height","alignItems","justifyContent"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { View } from 'react-native';\n\nimport { conditionChaining } from '@sendbird/uikit-utils';\n\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport Button from '../Button';\nimport Icon from '../Icon';\nimport LoadingSpinner from '../LoadingSpinner';\nimport Text from '../Text';\n\ntype Props = {\n loading?: boolean;\n\n icon: keyof typeof Icon.Assets;\n message?: string;\n errorRetryLabel?: string;\n onPressRetry?: () => void;\n};\n\nconst Placeholder
|
|
1
|
+
{"version":3,"names":["Placeholder","icon","loading","message","errorRetryLabel","onPressRetry","colors","useUIKitTheme","conditionChaining","styles","containerLoading","containerError","container","ui","placeholder","default","none","highlight","content","Boolean","createStyleSheet","width","height","alignItems","justifyContent"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { View } from 'react-native';\n\nimport { conditionChaining } from '@sendbird/uikit-utils';\n\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport Button from '../Button';\nimport Icon from '../Icon';\nimport LoadingSpinner from '../LoadingSpinner';\nimport Text from '../Text';\n\ntype Props = {\n loading?: boolean;\n\n icon: keyof typeof Icon.Assets;\n message?: string;\n errorRetryLabel?: string;\n onPressRetry?: () => void;\n};\n\nconst Placeholder = ({ icon, loading = false, message = '', errorRetryLabel, onPressRetry }: Props) => {\n const { colors } = useUIKitTheme();\n\n // loading ? styles.containerLoading : errorRetryLabel ? styles.containerError : styles.container\n return (\n <View\n style={conditionChaining(\n [loading, errorRetryLabel],\n [styles.containerLoading, styles.containerError, styles.container],\n )}\n >\n {conditionChaining(\n [loading],\n [\n <LoadingSpinner size={64} color={colors.ui.placeholder.default.none.highlight} />,\n <Icon icon={icon} size={64} color={colors.ui.placeholder.default.none.content} />,\n ],\n )}\n {Boolean(message) && !loading && (\n <Text body3 color={colors.ui.placeholder.default.none.content}>\n {message}\n </Text>\n )}\n {Boolean(errorRetryLabel) && !loading && (\n <Button\n variant={'text'}\n onPress={onPressRetry}\n contentColor={colors.ui.placeholder.default.none.highlight}\n icon={'refresh'}\n >\n {errorRetryLabel}\n </Button>\n )}\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n width: 200,\n height: 100,\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n containerError: {\n width: 200,\n height: 148,\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n containerLoading: {\n width: 200,\n height: 100,\n alignItems: 'center',\n justifyContent: 'center',\n },\n});\n\nexport default Placeholder;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AAWA,MAAMA,WAAW,GAAG,QAAmF;EAAA,IAAlF;IAAEC,IAAF;IAAQC,OAAO,GAAG,KAAlB;IAAyBC,OAAO,GAAG,EAAnC;IAAuCC,eAAvC;IAAwDC;EAAxD,CAAkF;EACrG,MAAM;IAAEC;EAAF,IAAa,IAAAC,sBAAA,GAAnB,CADqG,CAGrG;;EACA,oBACE,6BAAC,iBAAD;IACE,KAAK,EAAE,IAAAC,6BAAA,EACL,CAACN,OAAD,EAAUE,eAAV,CADK,EAEL,CAACK,MAAM,CAACC,gBAAR,EAA0BD,MAAM,CAACE,cAAjC,EAAiDF,MAAM,CAACG,SAAxD,CAFK;EADT,GAMG,IAAAJ,6BAAA,EACC,CAACN,OAAD,CADD,EAEC,cACE,6BAAC,uBAAD;IAAgB,IAAI,EAAE,EAAtB;IAA0B,KAAK,EAAEI,MAAM,CAACO,EAAP,CAAUC,WAAV,CAAsBC,OAAtB,CAA8BC,IAA9B,CAAmCC;EAApE,EADF,eAEE,6BAAC,aAAD;IAAM,IAAI,EAAEhB,IAAZ;IAAkB,IAAI,EAAE,EAAxB;IAA4B,KAAK,EAAEK,MAAM,CAACO,EAAP,CAAUC,WAAV,CAAsBC,OAAtB,CAA8BC,IAA9B,CAAmCE;EAAtE,EAFF,CAFD,CANH,EAaGC,OAAO,CAAChB,OAAD,CAAP,IAAoB,CAACD,OAArB,iBACC,6BAAC,aAAD;IAAM,KAAK,MAAX;IAAY,KAAK,EAAEI,MAAM,CAACO,EAAP,CAAUC,WAAV,CAAsBC,OAAtB,CAA8BC,IAA9B,CAAmCE;EAAtD,GACGf,OADH,CAdJ,EAkBGgB,OAAO,CAACf,eAAD,CAAP,IAA4B,CAACF,OAA7B,iBACC,6BAAC,eAAD;IACE,OAAO,EAAE,MADX;IAEE,OAAO,EAAEG,YAFX;IAGE,YAAY,EAAEC,MAAM,CAACO,EAAP,CAAUC,WAAV,CAAsBC,OAAtB,CAA8BC,IAA9B,CAAmCC,SAHnD;IAIE,IAAI,EAAE;EAJR,GAMGb,eANH,CAnBJ,CADF;AA+BD,CAnCD;;AAqCA,MAAMK,MAAM,GAAG,IAAAW,yBAAA,EAAiB;EAC9BR,SAAS,EAAE;IACTS,KAAK,EAAE,GADE;IAETC,MAAM,EAAE,GAFC;IAGTC,UAAU,EAAE,QAHH;IAITC,cAAc,EAAE;EAJP,CADmB;EAO9Bb,cAAc,EAAE;IACdU,KAAK,EAAE,GADO;IAEdC,MAAM,EAAE,GAFM;IAGdC,UAAU,EAAE,QAHE;IAIdC,cAAc,EAAE;EAJF,CAPc;EAa9Bd,gBAAgB,EAAE;IAChBW,KAAK,EAAE,GADS;IAEhBC,MAAM,EAAE,GAFQ;IAGhBC,UAAU,EAAE,QAHI;IAIhBC,cAAc,EAAE;EAJA;AAbY,CAAjB,CAAf;eAqBexB,W"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Prompt","onDismiss","visible","onHide","autoFocus","title","defaultValue","placeholder","onSubmit","NOOP","onCancel","submitLabel","cancelLabel","statusBarTranslucent","useHeaderStyle","colors","useUIKitTheme","inputRef","useRef","width","height","useWindowDimensions","buttons","text","onPress","setText","useState","useEffect","setTimeout","Platform","OS","current","blur","focus","alignItems","justifyContent","styles","container","Boolean","titleContainer","ui","dialog","default","none","flex","inputContainer","paddingHorizontal","paddingVertical","buttonContainer","map","index","button","highlight","Keyboard","dismiss","createStyleSheet","paddingTop","marginBottom","flexDirection","padding","marginLeft"],"sources":["index.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { Keyboard, Platform, TextInput as RNTextInput, View, useWindowDimensions } from 'react-native';\n\nimport { NOOP } from '@sendbird/uikit-utils';\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';\nimport TextInput from '../TextInput';\n\nexport type PromptItem = {\n title: string;\n placeholder?: string;\n defaultValue?: string;\n onSubmit?: (text: string) => void;\n submitLabel?: string;\n onCancel?: () => void;\n cancelLabel?: string;\n};\n\ntype Props = {\n visible: boolean;\n onHide: () => void;\n onDismiss?: () => void;\n autoFocus?: boolean;\n} & PromptItem;\nconst Prompt
|
|
1
|
+
{"version":3,"names":["Prompt","onDismiss","visible","onHide","autoFocus","title","defaultValue","placeholder","onSubmit","NOOP","onCancel","submitLabel","cancelLabel","statusBarTranslucent","useHeaderStyle","colors","useUIKitTheme","inputRef","useRef","width","height","useWindowDimensions","buttons","text","onPress","setText","useState","useEffect","setTimeout","Platform","OS","current","blur","focus","alignItems","justifyContent","styles","container","Boolean","titleContainer","ui","dialog","default","none","flex","inputContainer","paddingHorizontal","paddingVertical","buttonContainer","map","index","button","highlight","Keyboard","dismiss","createStyleSheet","paddingTop","marginBottom","flexDirection","padding","marginLeft"],"sources":["index.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { Keyboard, Platform, TextInput as RNTextInput, View, useWindowDimensions } from 'react-native';\n\nimport { NOOP } from '@sendbird/uikit-utils';\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';\nimport TextInput from '../TextInput';\n\nexport type PromptItem = {\n title: string;\n placeholder?: string;\n defaultValue?: string;\n onSubmit?: (text: string) => void;\n submitLabel?: string;\n onCancel?: () => void;\n cancelLabel?: string;\n};\n\ntype Props = {\n visible: boolean;\n onHide: () => void;\n onDismiss?: () => void;\n autoFocus?: boolean;\n} & PromptItem;\nconst Prompt = ({\n onDismiss,\n visible,\n onHide,\n autoFocus = true,\n title,\n defaultValue = '',\n placeholder = 'Enter',\n onSubmit = NOOP,\n onCancel = NOOP,\n submitLabel = 'Submit',\n cancelLabel = 'Cancel',\n}: Props) => {\n const { statusBarTranslucent } = useHeaderStyle();\n const { colors } = useUIKitTheme();\n const inputRef = useRef<RNTextInput>(null);\n const { width, height } = useWindowDimensions();\n\n const buttons = [\n { text: cancelLabel, onPress: onCancel },\n { text: submitLabel, onPress: () => onSubmit(text) },\n ];\n\n const [text, setText] = useState(defaultValue);\n\n // FIXME: autoFocus trick with modal\n // Android\n // - InputProps.autoFocus is not trigger keyboard appearing.\n // - InputRef.focus() is trigger keyboard appearing, but position of keyboard selection is always the start of text.\n // iOS\n // - InputProps.autoFocus is trigger weird UI behavior on landscape mode.\n useEffect(() => {\n if (autoFocus && visible) {\n setTimeout(() => {\n if (Platform.OS === 'android') inputRef.current?.blur();\n inputRef.current?.focus();\n }, 250);\n }\n }, [autoFocus, visible, `${width}-${height}`]);\n\n return (\n <Modal\n enableKeyboardAvoid\n disableBackgroundClose\n onClose={onHide}\n onDismiss={() => {\n setText('');\n onDismiss?.();\n }}\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.inputContainer}>\n <TextInput\n autoFocus={autoFocus && Platform.OS === 'android'}\n ref={inputRef}\n placeholder={placeholder}\n variant={'underline'}\n value={text}\n onChangeText={setText}\n style={{ paddingHorizontal: 0, paddingVertical: 10 }}\n />\n </View>\n\n <View style={styles.buttonContainer}>\n {buttons.map(({ text, onPress }, index) => {\n return (\n <Button\n key={text + index}\n variant={'text'}\n style={styles.button}\n contentColor={colors.ui.dialog.default.none.highlight}\n onPress={() => {\n Keyboard.dismiss();\n try {\n onPress?.();\n } finally {\n onHide();\n }\n }}\n >\n {text}\n </Button>\n );\n })}\n </View>\n </DialogBox>\n </Modal>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n paddingTop: 8,\n },\n titleContainer: {\n marginBottom: 12,\n paddingVertical: 12,\n paddingHorizontal: 24,\n flexDirection: 'row',\n alignItems: 'center',\n },\n inputContainer: {\n paddingHorizontal: 24,\n marginBottom: 12,\n },\n buttonContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'flex-end',\n padding: 12,\n },\n button: {\n marginLeft: 8,\n },\n});\n\nexport default Prompt;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Switch","value","onChangeValue","inactiveThumbColor","inactiveTrackColor","trackColor","thumbColor","select","palette","colors","useUIKitTheme","position","useRef","Animated","Value","current","useEffect","animation","timing","toValue","styles","thumbOn","left","thumbOff","duration","useNativeDriver","start","stop","createInterpolate","offValue","onValue","interpolate","inputRange","outputRange","extrapolate","_trackColor","onBackground04","primary200","_thumbColor","background300","light","primary400","dark","primary300","container","track","backgroundColor","thumb","transform","translateX","OFFSET","W","H","createStyleSheet","width","height","alignItems","justifyContent","borderRadius","Platform","android","elevation","ios","shadowColor","shadowRadius","shadowOffset","shadowOpacity"],"sources":["index.tsx"],"sourcesContent":["import React, { useEffect, useRef } from 'react';\nimport { Animated, Platform, Pressable } from 'react-native';\n\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\n\
|
|
1
|
+
{"version":3,"names":["Switch","value","onChangeValue","inactiveThumbColor","inactiveTrackColor","trackColor","thumbColor","select","palette","colors","useUIKitTheme","position","useRef","Animated","Value","current","useEffect","animation","timing","toValue","styles","thumbOn","left","thumbOff","duration","useNativeDriver","start","stop","createInterpolate","offValue","onValue","interpolate","inputRange","outputRange","extrapolate","_trackColor","onBackground04","primary200","_thumbColor","background300","light","primary400","dark","primary300","container","track","backgroundColor","thumb","transform","translateX","OFFSET","W","H","createStyleSheet","width","height","alignItems","justifyContent","borderRadius","Platform","android","elevation","ios","shadowColor","shadowRadius","shadowOffset","shadowOpacity"],"sources":["index.tsx"],"sourcesContent":["import React, { useEffect, useRef } from 'react';\nimport { Animated, Platform, Pressable } from 'react-native';\n\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\n\ntype SwitchProps = React.PropsWithChildren<{\n trackColor?: string;\n thumbColor?: string;\n inactiveThumbColor?: string;\n inactiveTrackColor?: string;\n\n value: boolean;\n onChangeValue: (val: boolean) => void;\n}>;\nconst Switch = ({\n value,\n onChangeValue,\n inactiveThumbColor,\n inactiveTrackColor,\n trackColor,\n thumbColor,\n}: SwitchProps) => {\n const { select, palette, colors } = useUIKitTheme();\n const position = useRef(new Animated.Value(0)).current;\n\n useEffect(() => {\n const animation = Animated.timing(position, {\n toValue: value ? styles.thumbOn.left : styles.thumbOff.left,\n duration: 150,\n useNativeDriver: false,\n });\n animation.start();\n return () => animation.stop();\n }, [value]);\n\n const createInterpolate = <T extends string>(offValue: T, onValue: T) => {\n return position.interpolate({\n inputRange: [styles.thumbOff.left, styles.thumbOn.left],\n outputRange: [offValue, onValue],\n extrapolate: 'clamp',\n });\n };\n const _trackColor = createInterpolate(inactiveTrackColor ?? colors.onBackground04, trackColor ?? palette.primary200);\n const _thumbColor = createInterpolate(\n inactiveThumbColor ?? palette.background300,\n thumbColor ?? select({ light: palette.primary400, dark: palette.primary300 }),\n );\n\n return (\n <Pressable onPress={() => onChangeValue(!value)} style={[styles.container]}>\n <Animated.View style={[styles.track, { backgroundColor: _trackColor }]} />\n <Animated.View style={[styles.thumb, { backgroundColor: _thumbColor, transform: [{ translateX: position }] }]} />\n </Pressable>\n );\n};\n\nconst OFFSET = { W: 20, H: 16 };\nconst styles = createStyleSheet({\n container: {\n width: OFFSET.W + OFFSET.H,\n height: OFFSET.H,\n alignItems: 'center',\n justifyContent: 'center',\n },\n track: {\n width: '100%',\n height: '100%',\n borderRadius: OFFSET.H / 2,\n position: 'absolute',\n },\n thumb: {\n width: OFFSET.W,\n height: OFFSET.W,\n borderRadius: OFFSET.W / 2,\n ...Platform.select({\n android: {\n elevation: 2,\n },\n ios: {\n shadowColor: 'black',\n shadowRadius: 1,\n shadowOffset: { width: 0, height: 2 },\n shadowOpacity: 0.4,\n },\n }),\n },\n thumbOn: {\n left: OFFSET.H / 2,\n },\n thumbOff: {\n left: -OFFSET.H / 2,\n },\n});\n\nexport default Switch;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Text","children","color","style","props","colors","useUIKitTheme","typoStyle","useTypographyFilter","text","h1","h2","subtitle1","subtitle2","body1","body2","body3","button","caption1","caption2","caption3","caption4","typography"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { Text as RNText, TextProps as RNTextProps } from 'react-native';\n\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport type { TypoName, UIKitTheme } from '../../types';\n\ntype TypographyProps = Partial<Record<TypoName, boolean>>;\nexport type TextProps = RNTextProps & TypographyProps & { color?: ((colors: UIKitTheme['colors']) => string) | string };\nconst Text
|
|
1
|
+
{"version":3,"names":["Text","children","color","style","props","colors","useUIKitTheme","typoStyle","useTypographyFilter","text","h1","h2","subtitle1","subtitle2","body1","body2","body3","button","caption1","caption2","caption3","caption4","typography"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { Text as RNText, TextProps as RNTextProps } from 'react-native';\n\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport type { TypoName, UIKitTheme } from '../../types';\n\ntype TypographyProps = Partial<Record<TypoName, boolean>>;\nexport type TextProps = RNTextProps & TypographyProps & { color?: ((colors: UIKitTheme['colors']) => string) | string };\nconst Text = ({ children, color, style, ...props }: TextProps) => {\n const { colors } = useUIKitTheme();\n const typoStyle = useTypographyFilter(props);\n return (\n <RNText\n style={[{ color: typeof color === 'string' ? color : color?.(colors) ?? colors.text }, typoStyle, style]}\n {...props}\n >\n {children}\n </RNText>\n );\n};\n\nconst useTypographyFilter = ({\n h1,\n h2,\n subtitle1,\n subtitle2,\n body1,\n body2,\n body3,\n button,\n caption1,\n caption2,\n caption3,\n caption4,\n}: TypographyProps) => {\n const { typography } = useUIKitTheme();\n if (h1) return typography.h1;\n if (h2) return typography.h2;\n if (subtitle1) return typography.subtitle1;\n if (subtitle2) return typography.subtitle2;\n if (body1) return typography.body1;\n if (body2) return typography.body2;\n if (body3) return typography.body3;\n if (button) return typography.button;\n if (caption1) return typography.caption1;\n if (caption2) return typography.caption2;\n if (caption3) return typography.caption3;\n if (caption4) return typography.caption4;\n return {};\n};\n\nexport default Text;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;;;;;AAKA,MAAMA,IAAI,GAAG,QAAqD;EAAA,IAApD;IAAEC,QAAF;IAAYC,KAAZ;IAAmBC,KAAnB;IAA0B,GAAGC;EAA7B,CAAoD;EAChE,MAAM;IAAEC;EAAF,IAAa,IAAAC,sBAAA,GAAnB;EACA,MAAMC,SAAS,GAAGC,mBAAmB,CAACJ,KAAD,CAArC;EACA,oBACE,6BAAC,iBAAD;IACE,KAAK,EAAE,CAAC;MAAEF,KAAK,EAAE,OAAOA,KAAP,KAAiB,QAAjB,GAA4BA,KAA5B,GAAoC,CAAAA,KAAK,SAAL,IAAAA,KAAK,WAAL,YAAAA,KAAK,CAAGG,MAAH,CAAL,KAAmBA,MAAM,CAACI;IAAvE,CAAD,EAAgFF,SAAhF,EAA2FJ,KAA3F;EADT,GAEMC,KAFN,GAIGH,QAJH,CADF;AAQD,CAXD;;AAaA,MAAMO,mBAAmB,GAAG,SAaL;EAAA,IAbM;IAC3BE,EAD2B;IAE3BC,EAF2B;IAG3BC,SAH2B;IAI3BC,SAJ2B;IAK3BC,KAL2B;IAM3BC,KAN2B;IAO3BC,KAP2B;IAQ3BC,MAR2B;IAS3BC,QAT2B;IAU3BC,QAV2B;IAW3BC,QAX2B;IAY3BC;EAZ2B,CAaN;EACrB,MAAM;IAAEC;EAAF,IAAiB,IAAAhB,sBAAA,GAAvB;EACA,IAAII,EAAJ,EAAQ,OAAOY,UAAU,CAACZ,EAAlB;EACR,IAAIC,EAAJ,EAAQ,OAAOW,UAAU,CAACX,EAAlB;EACR,IAAIC,SAAJ,EAAe,OAAOU,UAAU,CAACV,SAAlB;EACf,IAAIC,SAAJ,EAAe,OAAOS,UAAU,CAACT,SAAlB;EACf,IAAIC,KAAJ,EAAW,OAAOQ,UAAU,CAACR,KAAlB;EACX,IAAIC,KAAJ,EAAW,OAAOO,UAAU,CAACP,KAAlB;EACX,IAAIC,KAAJ,EAAW,OAAOM,UAAU,CAACN,KAAlB;EACX,IAAIC,MAAJ,EAAY,OAAOK,UAAU,CAACL,MAAlB;EACZ,IAAIC,QAAJ,EAAc,OAAOI,UAAU,CAACJ,QAAlB;EACd,IAAIC,QAAJ,EAAc,OAAOG,UAAU,CAACH,QAAlB;EACd,IAAIC,QAAJ,EAAc,OAAOE,UAAU,CAACF,QAAlB;EACd,IAAIC,QAAJ,EAAc,OAAOC,UAAU,CAACD,QAAlB;EACd,OAAO,EAAP;AACD,CA5BD;;eA8BerB,I"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ToastContext","createContext","useOpacity","opacity","useRef","Animated","Value","current","transition","useCallback","value","timing","toValue","duration","useNativeDriver","start","show","hide","Toast","visible","type","children","top","bottom","colors","select","palette","useUIKitTheme","color","useMemo","dark","error300","light","error200","secondary300","secondary200","backgroundColor","useEffect","styles","toast","icon","onBackgroundReverse01","text","VISIBLE_MS","ToastProvider","dismissTimeout","state","setState","useState","useSafeAreaInsets","hideTimeout","setTimeout","prev","clearTimeout","toastPosition","useToast","context","useContext","Error","createStyleSheet","position","height","paddingHorizontal","justifyContent","alignItems","alignSelf","borderRadius","flexDirection","marginRight","maxWidth"],"sources":["index.tsx"],"sourcesContent":["import React, { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport { Animated } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport Icon from '../Icon';\nimport Text from '../Text';\n\ntype ToastType = 'normal' | 'error' | 'success';\ntype Context = { show(text: string, type?: ToastType): void };\n\nconst ToastContext = createContext<Context | null>(null);\n\ntype Props = {\n top?: number;\n bottom?: number;\n visible: boolean;\n type: ToastType;\n children: string;\n}
|
|
1
|
+
{"version":3,"names":["ToastContext","createContext","useOpacity","opacity","useRef","Animated","Value","current","transition","useCallback","value","timing","toValue","duration","useNativeDriver","start","show","hide","Toast","visible","type","children","top","bottom","colors","select","palette","useUIKitTheme","color","useMemo","dark","error300","light","error200","secondary300","secondary200","backgroundColor","useEffect","styles","toast","icon","onBackgroundReverse01","text","VISIBLE_MS","ToastProvider","dismissTimeout","state","setState","useState","useSafeAreaInsets","hideTimeout","setTimeout","prev","clearTimeout","toastPosition","useToast","context","useContext","Error","createStyleSheet","position","height","paddingHorizontal","justifyContent","alignItems","alignSelf","borderRadius","flexDirection","marginRight","maxWidth"],"sources":["index.tsx"],"sourcesContent":["import React, { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport { Animated } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport useUIKitTheme from '../../theme/useUIKitTheme';\nimport Icon from '../Icon';\nimport Text from '../Text';\n\ntype ToastType = 'normal' | 'error' | 'success';\ntype Context = { show(text: string, type?: ToastType): void };\n\nconst ToastContext = createContext<Context | null>(null);\n\ntype Props = React.PropsWithChildren<{\n top?: number;\n bottom?: number;\n visible: boolean;\n type: ToastType;\n children: string;\n}>;\n\nconst useOpacity = () => {\n const opacity = useRef(new Animated.Value(0)).current;\n const transition = useCallback(\n (value: number) => Animated.timing(opacity, { toValue: value, duration: 500, useNativeDriver: true }).start(),\n [],\n );\n return {\n opacity,\n show: () => transition(1),\n hide: () => transition(0),\n };\n};\n\nconst Toast = ({ visible, type, children, top, bottom }: Props) => {\n const { colors, select, palette } = useUIKitTheme();\n const { opacity, show, hide } = useOpacity();\n\n const color = useMemo(() => {\n if (type === 'error') {\n return select({ dark: palette.error300, light: palette.error200 });\n }\n if (type === 'success') {\n return select({ dark: palette.secondary300, light: palette.secondary200 });\n }\n return 'transparent';\n }, [type, select]);\n\n const backgroundColor = useMemo(() => {\n return select({ light: 'rgba(0,0,0,0.64)', dark: 'rgba(255,255,255,0.64)' });\n }, [select]);\n\n useEffect(() => {\n visible ? show() : hide();\n }, [visible]);\n\n return (\n <Animated.View pointerEvents={'none'} style={[styles.toast, { opacity, top, bottom, backgroundColor }]}>\n {type !== 'normal' && (\n <Icon icon={type === 'success' ? 'done' : 'error'} color={color} containerStyle={styles.icon} />\n )}\n <Text color={colors.onBackgroundReverse01} body3 numberOfLines={2} style={styles.text}>\n {children}\n </Text>\n </Animated.View>\n );\n};\n\nconst VISIBLE_MS = 3000;\nexport const ToastProvider = ({\n children,\n dismissTimeout = VISIBLE_MS,\n}: React.PropsWithChildren<{ dismissTimeout?: number }>) => {\n const [state, setState] = useState({ visible: false, type: 'error' as ToastType, text: '' });\n const { bottom } = useSafeAreaInsets();\n\n useEffect(() => {\n if (!state.visible) return;\n\n const hideTimeout = setTimeout(() => {\n setState((prev) => ({ ...prev, visible: false }));\n }, dismissTimeout);\n return () => clearTimeout(hideTimeout);\n });\n\n return (\n <ToastContext.Provider value={{ show: (text, type = 'normal') => text && setState({ text, type, visible: true }) }}>\n {children}\n <Toast type={state.type} visible={state.visible} bottom={bottom + styles.toastPosition.bottom}>\n {state.text}\n </Toast>\n </ToastContext.Provider>\n );\n};\n\nexport const useToast = () => {\n const context = useContext(ToastContext);\n if (!context) throw new Error('ToastContext is not provided, wrap your app with ToastProvider');\n return context;\n};\n\nconst styles = createStyleSheet({\n toast: {\n position: 'absolute',\n height: 48,\n paddingHorizontal: 12,\n justifyContent: 'center',\n alignItems: 'center',\n alignSelf: 'center',\n borderRadius: 24,\n flexDirection: 'row',\n },\n icon: {\n marginRight: 4,\n },\n text: {\n maxWidth: 240,\n paddingHorizontal: 4,\n },\n toastPosition: {\n bottom: 60,\n },\n});\n\nexport default Toast;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["openUrl","url","httpProtocol","targetUrl","Linking","openURL","catch","err","Logger","warn","URLParsedText","children","onPressUrl","strict","props","parsedChildren","useMemo","React","Children","map","toArray","child","replaceUrlAsComponents","startsWith","style","styles","createStyleSheet","textDecorationLine"],"sources":["index.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { Linking } from 'react-native';\n\nimport { Logger, replaceUrlAsComponents } from '@sendbird/uikit-utils';\n\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport type { TextProps } from '../Text';\nimport Text from '../Text';\n\ntype OnPressUrl = (url: string, httpProtocol: boolean) => void;\n\nconst openUrl: OnPressUrl = (url, httpProtocol) => {\n const targetUrl = httpProtocol ? url : 'https://' + url;\n Linking.openURL(targetUrl).catch((err) => Logger.warn('[URLParsedText]', 'Cannot open url', err));\n};\n\ntype Props = TextProps & {\n onPressUrl?: OnPressUrl;\n strict?: boolean;\n};\nconst URLParsedText
|
|
1
|
+
{"version":3,"names":["openUrl","url","httpProtocol","targetUrl","Linking","openURL","catch","err","Logger","warn","URLParsedText","children","onPressUrl","strict","props","parsedChildren","useMemo","React","Children","map","toArray","child","replaceUrlAsComponents","startsWith","style","styles","createStyleSheet","textDecorationLine"],"sources":["index.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { Linking } from 'react-native';\n\nimport { Logger, replaceUrlAsComponents } from '@sendbird/uikit-utils';\n\nimport createStyleSheet from '../../styles/createStyleSheet';\nimport type { TextProps } from '../Text';\nimport Text from '../Text';\n\ntype OnPressUrl = (url: string, httpProtocol: boolean) => void;\n\nconst openUrl: OnPressUrl = (url, httpProtocol) => {\n const targetUrl = httpProtocol ? url : 'https://' + url;\n Linking.openURL(targetUrl).catch((err) => Logger.warn('[URLParsedText]', 'Cannot open url', err));\n};\n\ntype Props = TextProps & {\n onPressUrl?: OnPressUrl;\n strict?: boolean;\n};\nconst URLParsedText = ({ children, onPressUrl = openUrl, strict, ...props }: Props) => {\n const parsedChildren = useMemo((): React.ReactNode => {\n return React.Children.map(React.Children.toArray(children), (child) => {\n if (typeof child === 'string') {\n return replaceUrlAsComponents(\n child,\n (url) => {\n return (\n <Text\n {...props}\n suppressHighlighting\n onPress={() => onPressUrl?.(url, url.startsWith('http'))}\n style={[props.style, styles.url]}\n >\n {url}\n </Text>\n );\n },\n strict,\n );\n }\n\n return child;\n });\n }, [children]);\n\n return <Text {...props}>{parsedChildren}</Text>;\n};\nconst styles = createStyleSheet({\n url: { textDecorationLine: 'underline' },\n});\nexport default URLParsedText;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AAEA;;AAEA;;;;;;;;;;AAIA,MAAMA,OAAmB,GAAG,CAACC,GAAD,EAAMC,YAAN,KAAuB;EACjD,MAAMC,SAAS,GAAGD,YAAY,GAAGD,GAAH,GAAS,aAAaA,GAApD;;EACAG,oBAAA,CAAQC,OAAR,CAAgBF,SAAhB,EAA2BG,KAA3B,CAAkCC,GAAD,IAASC,kBAAA,CAAOC,IAAP,CAAY,iBAAZ,EAA+B,iBAA/B,EAAkDF,GAAlD,CAA1C;AACD,CAHD;;AASA,MAAMG,aAAa,GAAG,QAAiE;EAAA,IAAhE;IAAEC,QAAF;IAAYC,UAAU,GAAGZ,OAAzB;IAAkCa,MAAlC;IAA0C,GAAGC;EAA7C,CAAgE;EACrF,MAAMC,cAAc,GAAG,IAAAC,cAAA,EAAQ,MAAuB;IACpD,OAAOC,cAAA,CAAMC,QAAN,CAAeC,GAAf,CAAmBF,cAAA,CAAMC,QAAN,CAAeE,OAAf,CAAuBT,QAAvB,CAAnB,EAAsDU,KAAD,IAAW;MACrE,IAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;QAC7B,OAAO,IAAAC,kCAAA,EACLD,KADK,EAEJpB,GAAD,IAAS;UACP,oBACE,6BAAC,aAAD,eACMa,KADN;YAEE,oBAAoB,MAFtB;YAGE,OAAO,EAAE,MAAMF,UAAN,aAAMA,UAAN,uBAAMA,UAAU,CAAGX,GAAH,EAAQA,GAAG,CAACsB,UAAJ,CAAe,MAAf,CAAR,CAH3B;YAIE,KAAK,EAAE,CAACT,KAAK,CAACU,KAAP,EAAcC,MAAM,CAACxB,GAArB;UAJT,IAMGA,GANH,CADF;QAUD,CAbI,EAcLY,MAdK,CAAP;MAgBD;;MAED,OAAOQ,KAAP;IACD,CArBM,CAAP;EAsBD,CAvBsB,EAuBpB,CAACV,QAAD,CAvBoB,CAAvB;EAyBA,oBAAO,6BAAC,aAAD,EAAUG,KAAV,EAAkBC,cAAlB,CAAP;AACD,CA3BD;;AA4BA,MAAMU,MAAM,GAAG,IAAAC,yBAAA,EAAiB;EAC9BzB,GAAG,EAAE;IAAE0B,kBAAkB,EAAE;EAAtB;AADyB,CAAjB,CAAf;eAGejB,a"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeModules","getImageModule","hasFastImage","Boolean","FastImageView","require","default","e"],"sources":["index.ts"],"sourcesContent":["import type
|
|
1
|
+
{"version":3,"names":["NativeModules","getImageModule","hasFastImage","Boolean","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,SAASA,aAAT,QAA8B,cAA9B;;AAUA,SAASC,cAAT,GAAkD;EAChD,MAAMC,YAAY,GAAGC,OAAO,CAACH,aAAa,CAACI,aAAf,CAA5B;;EACA,IAAIF,YAAJ,EAAkB;IAChB,IAAI;MACF,OAAOG,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;;AAED,eAAeL,cAAc,EAA7B"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { StatusBar } from 'react-native';
|
|
2
|
+
import { StatusBar, useWindowDimensions } from 'react-native';
|
|
3
3
|
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
4
|
+
import getDefaultHeaderHeight from './getDefaultHeaderHeight';
|
|
4
5
|
export const HeaderStyleContext = /*#__PURE__*/React.createContext({
|
|
5
6
|
HeaderComponent: () => null,
|
|
6
7
|
defaultTitleAlign: 'left',
|
|
7
8
|
statusBarTranslucent: true,
|
|
8
|
-
topInset: StatusBar.currentHeight ?? 0
|
|
9
|
+
topInset: StatusBar.currentHeight ?? 0,
|
|
10
|
+
defaultHeight: getDefaultHeaderHeight(false)
|
|
9
11
|
});
|
|
10
12
|
export const HeaderStyleProvider = _ref => {
|
|
11
13
|
let {
|
|
@@ -17,12 +19,17 @@ export const HeaderStyleProvider = _ref => {
|
|
|
17
19
|
const {
|
|
18
20
|
top
|
|
19
21
|
} = useSafeAreaInsets();
|
|
22
|
+
const {
|
|
23
|
+
width,
|
|
24
|
+
height
|
|
25
|
+
} = useWindowDimensions();
|
|
20
26
|
return /*#__PURE__*/React.createElement(HeaderStyleContext.Provider, {
|
|
21
27
|
value: {
|
|
22
28
|
HeaderComponent,
|
|
23
29
|
defaultTitleAlign,
|
|
24
30
|
statusBarTranslucent,
|
|
25
|
-
topInset: statusBarTranslucent ? top : 0
|
|
31
|
+
topInset: statusBarTranslucent ? top : 0,
|
|
32
|
+
defaultHeight: getDefaultHeaderHeight(width > height)
|
|
26
33
|
}
|
|
27
34
|
}, children);
|
|
28
35
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","StatusBar","useSafeAreaInsets","HeaderStyleContext","createContext","HeaderComponent","defaultTitleAlign","statusBarTranslucent","topInset","currentHeight","HeaderStyleProvider","children","top"],"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
|
|
1
|
+
{"version":3,"names":["React","StatusBar","useWindowDimensions","useSafeAreaInsets","getDefaultHeaderHeight","HeaderStyleContext","createContext","HeaderComponent","defaultTitleAlign","statusBarTranslucent","topInset","currentHeight","defaultHeight","HeaderStyleProvider","children","top","width","height"],"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,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,SAAT,EAAoBC,mBAApB,QAA+C,cAA/C;AACA,SAASC,iBAAT,QAAkC,gCAAlC;AAGA,OAAOC,sBAAP,MAAmC,0BAAnC;AAoBA,OAAO,MAAMC,kBAAkB,gBAAGL,KAAK,CAACM,aAAN,CAA4C;EAC5EC,eAAe,EAAE,MAAM,IADqD;EAE5EC,iBAAiB,EAAE,MAFyD;EAG5EC,oBAAoB,EAAE,IAHsD;EAI5EC,QAAQ,EAAET,SAAS,CAACU,aAAV,IAA2B,CAJuC;EAK5EC,aAAa,EAAER,sBAAsB,CAAC,KAAD;AALuC,CAA5C,CAA3B;AASP,OAAO,MAAMS,mBAAmB,GAAG,QAKG;EAAA,IALF;IAClCC,QADkC;IAElCP,eAAe,GAAG,MAAM,IAFU;IAGlCC,iBAHkC;IAIlCC;EAJkC,CAKE;EACpC,MAAM;IAAEM;EAAF,IAAUZ,iBAAiB,EAAjC;EACA,MAAM;IAAEa,KAAF;IAASC;EAAT,IAAoBf,mBAAmB,EAA7C;EAEA,oBACE,oBAAC,kBAAD,CAAoB,QAApB;IACE,KAAK,EAAE;MACLK,eADK;MAELC,iBAFK;MAGLC,oBAHK;MAILC,QAAQ,EAAED,oBAAoB,GAAGM,GAAH,GAAS,CAJlC;MAKLH,aAAa,EAAER,sBAAsB,CAACY,KAAK,GAAGC,MAAT;IALhC;EADT,GASGH,QATH,CADF;AAaD,CAtBM"}
|
|
@@ -8,7 +8,8 @@ const DESIGNED_DEVICE_WIDTH = 360;
|
|
|
8
8
|
const createScaleFactor = function () {
|
|
9
9
|
let deviceWidth = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DESIGNED_DEVICE_WIDTH;
|
|
10
10
|
const ratio = Math.min(width, height) / deviceWidth;
|
|
11
|
-
|
|
11
|
+
const rangedRatio = Math.min(Math.max(0.85, ratio), 1.25);
|
|
12
|
+
return dp => PixelRatio.roundToNearestPixel(dp * rangedRatio);
|
|
12
13
|
};
|
|
13
14
|
|
|
14
15
|
createScaleFactor.updateScaleFactor = scaleFactor => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Dimensions","PixelRatio","width","height","get","DESIGNED_DEVICE_WIDTH","createScaleFactor","deviceWidth","ratio","Math","min","dp","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 *
|
|
1
|
+
{"version":3,"names":["Dimensions","PixelRatio","width","height","get","DESIGNED_DEVICE_WIDTH","createScaleFactor","deviceWidth","ratio","Math","min","rangedRatio","max","dp","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,SAASA,UAAT,EAAqBC,UAArB,QAAuC,cAAvC;AAEA,MAAM;EAAEC,KAAF;EAASC;AAAT,IAAoBH,UAAU,CAACI,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,CAASR,KAAT,EAAgBC,MAAhB,IAA0BI,WAAxC;EACA,MAAMI,WAAW,GAAGF,IAAI,CAACC,GAAL,CAASD,IAAI,CAACG,GAAL,CAAS,IAAT,EAAeJ,KAAf,CAAT,EAAgC,IAAhC,CAApB;EACA,OAAQK,EAAD,IAAgBZ,UAAU,CAACa,mBAAX,CAA+BD,EAAE,GAAGF,WAApC,CAAvB;AACD,CAJD;;AAMAL,iBAAiB,CAACS,iBAAlB,GAAuCC,WAAD,IAAyC;EAC7EC,oBAAoB,GAAGD,WAAvB;AACD,CAFD;;AAIA,OAAO,IAAIC,oBAAoB,GAAGX,iBAAiB,EAA5C;AACP,eAAeA,iBAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","LightUIKitTheme","UIKitThemeContext","UIKitThemeProvider","children","theme"],"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 = {
|
|
1
|
+
{"version":3,"names":["React","LightUIKitTheme","UIKitThemeContext","UIKitThemeProvider","children","theme"],"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,OAAOA,KAAP,MAAkB,OAAlB;AAGA,OAAOC,eAAP,MAA4B,mBAA5B;AACA,OAAOC,iBAAP,MAA8B,qBAA9B;;AAKA,MAAMC,kBAAkB,GAAG,QAAkD;EAAA,IAAjD;IAAEC,QAAF;IAAYC,KAAK,GAAGJ;EAApB,CAAiD;EAC3E,oBAAO,oBAAC,iBAAD,CAAmB,QAAnB;IAA4B,KAAK,EAAEI;EAAnC,GAA2CD,QAA3C,CAAP;AACD,CAFD;;AAIA,eAAeD,kBAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useState","TouchableOpacity","View","Logger","createStyleSheet","useHeaderStyle","useUIKitTheme","DialogBox","LoadingSpinner","Modal","Text","ActionMenu","visible","onHide","onError","onDismiss","title","menuItems","statusBarTranslucent","colors","pending","setPending","_onHide","alignItems","justifyContent","styles","ui","dialog","default","none","text","maxWidth","highlight","width","marginLeft","buttonContainer","map","item","index","button","onPress","e","errorHandler","error","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
|
|
1
|
+
{"version":3,"names":["React","useState","TouchableOpacity","View","Logger","createStyleSheet","useHeaderStyle","useUIKitTheme","DialogBox","LoadingSpinner","Modal","Text","ActionMenu","visible","onHide","onError","onDismiss","title","menuItems","statusBarTranslucent","colors","pending","setPending","_onHide","alignItems","justifyContent","styles","ui","dialog","default","none","text","maxWidth","highlight","width","marginLeft","buttonContainer","map","item","index","button","onPress","e","errorHandler","error","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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"}
|