@planningcenter/chat-react-native 4.0.0-rc.2 → 4.0.0-rc.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"avatar_picker_screen.d.ts","sourceRoot":"","sources":["../../../src/screens/avatar_picker/avatar_picker_screen.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgB,iBAAiB,EAAiB,MAAM,0BAA0B,CAAA;AAWzF,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,4CAA4C,CAAA;AAoBnD,eAAO,MAAM,yBAAyB,6EAIpC,CAAA;AAEF,eAAO,MAAM,+BAA+B,6EAI1C,CAAA;AAEF,MAAM,MAAM,uBAAuB,GAAG,iBAAiB,CAAC;IACtD,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACvC,gBAAgB,CAAC,EAAE,mBAAmB,CAAA;CACvC,CAAC,CAAA;AAUF,wBAAgB,kBAAkB,CAAC,EAAE,KAAK,EAAE,EAAE,uBAAuB,2CAMpE"}
1
+ {"version":3,"file":"avatar_picker_screen.d.ts","sourceRoot":"","sources":["../../../src/screens/avatar_picker/avatar_picker_screen.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgB,iBAAiB,EAAiB,MAAM,0BAA0B,CAAA;AAWzF,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,4CAA4C,CAAA;AA6BnD,eAAO,MAAM,yBAAyB,6EAIpC,CAAA;AAEF,eAAO,MAAM,+BAA+B,6EAI1C,CAAA;AAEF,MAAM,MAAM,uBAAuB,GAAG,iBAAiB,CAAC;IACtD,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACvC,gBAAgB,CAAC,EAAE,mBAAmB,CAAA;CACvC,CAAC,CAAA;AAUF,wBAAgB,kBAAkB,CAAC,EAAE,KAAK,EAAE,EAAE,uBAAuB,2CAMpE"}
@@ -20,21 +20,24 @@ import { ColorPicker } from './color_picker';
20
20
  import { EmojiTab } from './emoji_tab';
21
21
  import { IconGrid } from './icon_grid';
22
22
  import { UploadTab } from './upload_tab';
23
+
24
+ // On iPad a native formSheet is a fixed-size centered sheet whose content gets
25
+ // laid out against the window instead of the sheet, clipping the bottom of the
26
+ // picker (CHAT-246) — present as a regular modal there instead.
23
27
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
28
+ const isPad = Platform.OS === 'ios' && Platform.isPad;
29
+ const presentation = Platform.select({
30
+ android: 'modal',
31
+ ios: isPad ? 'modal' : 'formSheet'
32
+ });
24
33
  export const AvatarPickerScreenOptions = getFormSheetScreenOptions({
25
34
  headerTitle: 'Update avatar',
26
- presentation: Platform.select({
27
- android: 'modal',
28
- ios: 'formSheet'
29
- }),
35
+ presentation,
30
36
  sheetAllowedDetents: [1]
31
37
  });
32
38
  export const AvatarPickerCreateScreenOptions = getFormSheetScreenOptions({
33
39
  headerTitle: 'Choose avatar',
34
- presentation: Platform.select({
35
- android: 'modal',
36
- ios: 'formSheet'
37
- }),
40
+ presentation,
38
41
  sheetAllowedDetents: [1]
39
42
  });
40
43
  const TABS = ['icon', 'emoji', 'upload'];
@@ -1 +1 @@
1
- {"version":3,"file":"avatar_picker_screen.js","names":["StackActions","useNavigation","React","useCallback","useReducer","Platform","StyleSheet","View","useSafeAreaInsets","ConversationAvatar","Tabs","Text","coerceColorKey","FormSheet","getFormSheetScreenOptions","useTheme","useConversation","useConversationAvatarUpdate","useFontScale","usePreviewAvatarDiameter","MAX_FONT_SIZE_MULTIPLIER_LANDMARK","avatarPickerReducer","initAvatarPickerState","initAvatarPickerStateFromPayload","initEmptyAvatarPickerState","AvatarPreview","ColorPicker","EmojiTab","IconGrid","UploadTab","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","AvatarPickerScreenOptions","headerTitle","presentation","select","android","ios","sheetAllowedDetents","AvatarPickerCreateScreenOptions","TABS","TAB_LABELS","icon","emoji","upload","AvatarPickerScreen","t0","$","_c","route","conversation_id","source_params","avatar_selection","params","t1","EditModeContent","CreateModeContent","conversationId","navigation","data","conversation","t2","mutation","previewDiameter","state","dispatch","hasAvatar","selectedType","t3","isDirty","goBack","payload","buildPayload","mutate","handleDone","t4","kind","onSuccess","type","handleRemove","t5","HeaderTextButton","appearance","children","t6","isPending","disabled","t7","t8","width","height","t9","size","style","t10","AvatarPickerFormSheet","headerActions","fallbackPreview","sourceParams","existingSelection","_temp","popTo","Symbol","for","EmptyAvatarPlaceholder","selection","styles","useStyles","HeaderTitle","HeaderActions","header","Header","tab","activeTab","tabLabel","tabLabelActive","item","tabs","onTabPress","renderItem","selectedKey","selectedIconKey","onIconSelect","iconKey","onEmojiSelect","imagePreviewUri","onImageSelect","asset","t11","body","t12","selectedColor","colorPickerWrapper","onColorSelect","color","t13","formSheetContent","formSheetRoot","Root","contentStyle","showAndroidSheetGrabber","diameter","borderRadius","emptyAvatarPlaceholder","hasValidSelection","imageAsset","key","colors","maxFontSizeMultiplier","fontScale","top","borderColorDefaultBase","fillColorNeutral100Inverted","textColorDefaultPrimary","textColorDefaultSecondary","create","flex","paddingTop","minHeight","borderBottomWidth","borderBottomColor","backgroundColor","zIndex","fontSize","paddingVertical","minWidth","textAlign","overflow","borderTopWidth","borderTopColor","borderWidth","borderStyle","borderColor"],"sources":["../../../src/screens/avatar_picker/avatar_picker_screen.tsx"],"sourcesContent":["import { StackActions, StaticScreenProps, useNavigation } from '@react-navigation/native'\nimport React, { useCallback, useReducer } from 'react'\nimport { Platform, StyleSheet, View } from 'react-native'\nimport { useSafeAreaInsets } from 'react-native-safe-area-context'\nimport { ConversationAvatar } from '../../components/display/conversation_avatar'\nimport { Tabs } from '../../components/display/tabs'\nimport { Text } from '../../components/display/text'\nimport { coerceColorKey } from '../../components/display/utils/avatar_gradient_colors'\nimport FormSheet, { getFormSheetScreenOptions } from '../../components/primitive/form_sheet'\nimport { useTheme } from '../../hooks'\nimport { useConversation } from '../../hooks/use_conversation'\nimport {\n useConversationAvatarUpdate,\n type AvatarUpdatePayload,\n} from '../../hooks/use_conversation_avatar_update'\nimport { useFontScale } from '../../hooks/use_font_scale'\nimport { usePreviewAvatarDiameter } from '../../hooks/use_preview_avatar_diameter'\nimport { MAX_FONT_SIZE_MULTIPLIER_LANDMARK } from '../../utils'\nimport type { ImagePickerAsset } from '../../utils/native_adapters/image_picker'\nimport {\n avatarPickerReducer,\n initAvatarPickerState,\n initAvatarPickerStateFromPayload,\n initEmptyAvatarPickerState,\n type AvatarPickerAction,\n type AvatarPickerState,\n type AvatarTab,\n} from './avatar_picker_state'\nimport { AvatarPreview } from './avatar_preview'\nimport { ColorPicker } from './color_picker'\nimport { EmojiTab } from './emoji_tab'\nimport { IconGrid } from './icon_grid'\nimport { UploadTab } from './upload_tab'\n\nexport const AvatarPickerScreenOptions = getFormSheetScreenOptions({\n headerTitle: 'Update avatar',\n presentation: Platform.select({ android: 'modal', ios: 'formSheet' }),\n sheetAllowedDetents: [1],\n})\n\nexport const AvatarPickerCreateScreenOptions = getFormSheetScreenOptions({\n headerTitle: 'Choose avatar',\n presentation: Platform.select({ android: 'modal', ios: 'formSheet' }),\n sheetAllowedDetents: [1],\n})\n\nexport type AvatarPickerScreenProps = StaticScreenProps<{\n conversation_id?: number\n source_params?: Record<string, unknown>\n avatar_selection?: AvatarUpdatePayload\n}>\n\nconst TABS: AvatarTab[] = ['icon', 'emoji', 'upload']\n\nconst TAB_LABELS: Record<AvatarTab, string> = {\n icon: 'Icon',\n emoji: 'Emoji',\n upload: 'Upload',\n}\n\nexport function AvatarPickerScreen({ route }: AvatarPickerScreenProps) {\n const { conversation_id, source_params, avatar_selection } = route.params\n if (conversation_id) {\n return <EditModeContent conversationId={conversation_id} />\n }\n return <CreateModeContent sourceParams={source_params} existingSelection={avatar_selection} />\n}\n\nfunction EditModeContent({ conversationId }: { conversationId: number }) {\n const navigation = useNavigation()\n const { data: conversation } = useConversation({ conversation_id: conversationId })\n const mutation = useConversationAvatarUpdate({ conversationId })\n const previewDiameter = usePreviewAvatarDiameter()\n\n const [state, dispatch] = useReducer(avatarPickerReducer, conversation, initAvatarPickerState)\n\n const hasAvatar = state.selectedType !== null\n\n const handleDone = useCallback(() => {\n if (!state.isDirty) {\n navigation.goBack()\n return\n }\n\n const payload = buildPayload(state)\n if (payload) {\n mutation.mutate(payload)\n }\n navigation.goBack()\n }, [state, mutation, navigation])\n\n const handleRemove = useCallback(() => {\n mutation.mutate({ kind: 'clear' }, { onSuccess: () => dispatch({ type: 'CLEAR' }) })\n }, [mutation, dispatch])\n\n return (\n <AvatarPickerFormSheet\n state={state}\n dispatch={dispatch}\n headerTitle=\"Update avatar\"\n headerActions={\n <>\n {hasAvatar && (\n <FormSheet.HeaderTextButton onPress={handleRemove} appearance=\"danger\">\n Remove\n </FormSheet.HeaderTextButton>\n )}\n <FormSheet.HeaderTextButton onPress={handleDone} disabled={mutation.isPending}>\n Done\n </FormSheet.HeaderTextButton>\n </>\n }\n fallbackPreview={\n <ConversationAvatar\n conversation={conversation}\n size=\"2xl\"\n maxFontSizeMultiplier={MAX_FONT_SIZE_MULTIPLIER_LANDMARK}\n style={{ width: previewDiameter, height: previewDiameter }}\n />\n }\n />\n )\n}\n\ninterface CreateModeContentProps {\n sourceParams?: Record<string, unknown>\n existingSelection?: AvatarUpdatePayload\n}\n\nfunction CreateModeContent({ sourceParams, existingSelection }: CreateModeContentProps) {\n const navigation = useNavigation()\n\n const [state, dispatch] = useReducer(avatarPickerReducer, existingSelection, selection =>\n selection ? initAvatarPickerStateFromPayload(selection) : initEmptyAvatarPickerState()\n )\n\n const handleDone = useCallback(() => {\n if (!state.isDirty) {\n navigation.goBack()\n return\n }\n\n const payload = buildPayload(state)\n if (payload) {\n navigation.dispatch(\n StackActions.popTo('ConversationNew', { ...sourceParams, avatar_selection: payload })\n )\n } else {\n navigation.goBack()\n }\n }, [state, navigation, sourceParams])\n\n return (\n <AvatarPickerFormSheet\n state={state}\n dispatch={dispatch}\n headerTitle=\"Choose avatar\"\n headerActions={\n <FormSheet.HeaderTextButton onPress={handleDone}>Done</FormSheet.HeaderTextButton>\n }\n fallbackPreview={<EmptyAvatarPlaceholder />}\n />\n )\n}\n\ninterface AvatarPickerFormSheetProps {\n state: AvatarPickerState\n dispatch: React.Dispatch<AvatarPickerAction>\n headerTitle: string\n headerActions: React.ReactNode\n fallbackPreview: React.ReactNode\n}\n\nfunction AvatarPickerFormSheet({\n state,\n dispatch,\n headerTitle,\n headerActions,\n fallbackPreview,\n}: AvatarPickerFormSheetProps) {\n const styles = useStyles()\n\n return (\n <FormSheet.Root\n style={styles.formSheetRoot}\n contentStyle={styles.formSheetContent}\n showAndroidSheetGrabber={false}\n >\n <FormSheet.Header style={styles.header}>\n <FormSheet.HeaderTitle>{headerTitle}</FormSheet.HeaderTitle>\n <FormSheet.HeaderActions>{headerActions}</FormSheet.HeaderActions>\n </FormSheet.Header>\n\n <AvatarPreview state={state} fallback={fallbackPreview} />\n\n <Tabs\n data={TABS}\n activeTab={state.activeTab}\n onTabPress={tab => dispatch({ type: 'SELECT_TAB', payload: tab })}\n renderItem={({ item }) => (\n <Text\n style={[styles.tabLabel, item === state.activeTab && styles.tabLabelActive]}\n maxFontSizeMultiplier={MAX_FONT_SIZE_MULTIPLIER_LANDMARK}\n >\n {TAB_LABELS[item]}\n </Text>\n )}\n style={styles.tabs}\n />\n\n <View style={styles.body}>\n {state.activeTab === 'icon' && (\n <IconGrid\n selectedIconKey={state.selectedType === 'icon' ? state.selectedKey : null}\n onIconSelect={iconKey => dispatch({ type: 'SELECT_ICON', payload: iconKey })}\n />\n )}\n {state.activeTab === 'emoji' && (\n <EmojiTab onEmojiSelect={emoji => dispatch({ type: 'SELECT_EMOJI', payload: emoji })} />\n )}\n {state.activeTab === 'upload' && (\n <UploadTab\n imagePreviewUri={state.imagePreviewUri}\n onImageSelect={asset => dispatch({ type: 'SET_IMAGE', payload: asset })}\n />\n )}\n </View>\n\n {state.activeTab !== 'upload' && (\n <View style={styles.colorPickerWrapper}>\n <ColorPicker\n selectedColor={state.selectedColor}\n onColorSelect={color => dispatch({ type: 'SELECT_COLOR', payload: color })}\n />\n </View>\n )}\n </FormSheet.Root>\n )\n}\n\nfunction EmptyAvatarPlaceholder() {\n const styles = useStyles()\n const diameter = usePreviewAvatarDiameter()\n return (\n <View\n style={[\n styles.emptyAvatarPlaceholder,\n { width: diameter, height: diameter, borderRadius: diameter / 2 },\n ]}\n />\n )\n}\n\ntype ValidAvatarPickerState = AvatarPickerState &\n (\n | { selectedType: 'icon' | 'emoji'; selectedKey: string }\n | { selectedType: 'image'; imageAsset: ImagePickerAsset }\n )\n\nfunction hasValidSelection(state: AvatarPickerState): state is ValidAvatarPickerState {\n switch (state.selectedType) {\n case 'icon':\n case 'emoji':\n return state.selectedKey !== null\n case 'image':\n return state.imageAsset !== null\n case null:\n return false\n }\n}\n\nfunction buildPayload(state: AvatarPickerState): AvatarUpdatePayload | null {\n if (!hasValidSelection(state)) return null\n\n const color = coerceColorKey(state.selectedColor)\n\n switch (state.selectedType) {\n case 'icon':\n return { kind: 'icon', key: state.selectedKey, color }\n case 'emoji':\n return { kind: 'emoji', key: state.selectedKey, color }\n case 'image':\n return { kind: 'image', imageAsset: state.imageAsset, color }\n }\n}\n\nconst useStyles = () => {\n const { colors } = useTheme()\n const fontScale = useFontScale({ maxFontSizeMultiplier: MAX_FONT_SIZE_MULTIPLIER_LANDMARK })\n const { top } = useSafeAreaInsets()\n\n return StyleSheet.create({\n formSheetRoot: {\n flex: 1,\n },\n formSheetContent: {\n flex: 1,\n },\n header: {\n paddingTop: Platform.select({ ios: 20, android: 20 + top }),\n },\n tabs: {\n minHeight: 52 * fontScale,\n borderBottomWidth: 1,\n borderBottomColor: colors.borderColorDefaultBase,\n backgroundColor: colors.fillColorNeutral100Inverted,\n zIndex: 1,\n },\n tabLabel: {\n fontSize: 14,\n color: colors.textColorDefaultSecondary,\n paddingVertical: 14 * fontScale,\n minWidth: 56 * fontScale,\n textAlign: 'center',\n },\n tabLabelActive: {\n color: colors.textColorDefaultPrimary,\n },\n body: {\n flex: 1,\n overflow: 'hidden',\n },\n colorPickerWrapper: {\n borderTopWidth: 1,\n borderTopColor: colors.borderColorDefaultBase,\n },\n emptyAvatarPlaceholder: {\n borderWidth: 2,\n borderStyle: 'dashed',\n borderColor: colors.borderColorDefaultBase,\n },\n })\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"avatar_picker_screen.js","names":["StackActions","useNavigation","React","useCallback","useReducer","Platform","StyleSheet","View","useSafeAreaInsets","ConversationAvatar","Tabs","Text","coerceColorKey","FormSheet","getFormSheetScreenOptions","useTheme","useConversation","useConversationAvatarUpdate","useFontScale","usePreviewAvatarDiameter","MAX_FONT_SIZE_MULTIPLIER_LANDMARK","avatarPickerReducer","initAvatarPickerState","initAvatarPickerStateFromPayload","initEmptyAvatarPickerState","AvatarPreview","ColorPicker","EmojiTab","IconGrid","UploadTab","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","isPad","OS","presentation","select","android","ios","AvatarPickerScreenOptions","headerTitle","sheetAllowedDetents","AvatarPickerCreateScreenOptions","TABS","TAB_LABELS","icon","emoji","upload","AvatarPickerScreen","t0","$","_c","route","conversation_id","source_params","avatar_selection","params","t1","EditModeContent","CreateModeContent","conversationId","navigation","data","conversation","t2","mutation","previewDiameter","state","dispatch","hasAvatar","selectedType","t3","isDirty","goBack","payload","buildPayload","mutate","handleDone","t4","kind","onSuccess","type","handleRemove","t5","HeaderTextButton","appearance","children","t6","isPending","disabled","t7","t8","width","height","t9","size","style","t10","AvatarPickerFormSheet","headerActions","fallbackPreview","sourceParams","existingSelection","_temp","popTo","Symbol","for","EmptyAvatarPlaceholder","selection","styles","useStyles","HeaderTitle","HeaderActions","header","Header","tab","activeTab","tabLabel","tabLabelActive","item","tabs","onTabPress","renderItem","selectedKey","selectedIconKey","onIconSelect","iconKey","onEmojiSelect","imagePreviewUri","onImageSelect","asset","t11","body","t12","selectedColor","colorPickerWrapper","onColorSelect","color","t13","formSheetContent","formSheetRoot","Root","contentStyle","showAndroidSheetGrabber","diameter","borderRadius","emptyAvatarPlaceholder","hasValidSelection","imageAsset","key","colors","maxFontSizeMultiplier","fontScale","top","borderColorDefaultBase","fillColorNeutral100Inverted","textColorDefaultPrimary","textColorDefaultSecondary","create","flex","paddingTop","minHeight","borderBottomWidth","borderBottomColor","backgroundColor","zIndex","fontSize","paddingVertical","minWidth","textAlign","overflow","borderTopWidth","borderTopColor","borderWidth","borderStyle","borderColor"],"sources":["../../../src/screens/avatar_picker/avatar_picker_screen.tsx"],"sourcesContent":["import { StackActions, StaticScreenProps, useNavigation } from '@react-navigation/native'\nimport React, { useCallback, useReducer } from 'react'\nimport { Platform, StyleSheet, View } from 'react-native'\nimport { useSafeAreaInsets } from 'react-native-safe-area-context'\nimport { ConversationAvatar } from '../../components/display/conversation_avatar'\nimport { Tabs } from '../../components/display/tabs'\nimport { Text } from '../../components/display/text'\nimport { coerceColorKey } from '../../components/display/utils/avatar_gradient_colors'\nimport FormSheet, { getFormSheetScreenOptions } from '../../components/primitive/form_sheet'\nimport { useTheme } from '../../hooks'\nimport { useConversation } from '../../hooks/use_conversation'\nimport {\n useConversationAvatarUpdate,\n type AvatarUpdatePayload,\n} from '../../hooks/use_conversation_avatar_update'\nimport { useFontScale } from '../../hooks/use_font_scale'\nimport { usePreviewAvatarDiameter } from '../../hooks/use_preview_avatar_diameter'\nimport { MAX_FONT_SIZE_MULTIPLIER_LANDMARK } from '../../utils'\nimport type { ImagePickerAsset } from '../../utils/native_adapters/image_picker'\nimport {\n avatarPickerReducer,\n initAvatarPickerState,\n initAvatarPickerStateFromPayload,\n initEmptyAvatarPickerState,\n type AvatarPickerAction,\n type AvatarPickerState,\n type AvatarTab,\n} from './avatar_picker_state'\nimport { AvatarPreview } from './avatar_preview'\nimport { ColorPicker } from './color_picker'\nimport { EmojiTab } from './emoji_tab'\nimport { IconGrid } from './icon_grid'\nimport { UploadTab } from './upload_tab'\n\n// On iPad a native formSheet is a fixed-size centered sheet whose content gets\n// laid out against the window instead of the sheet, clipping the bottom of the\n// picker (CHAT-246) — present as a regular modal there instead.\nconst isPad = Platform.OS === 'ios' && Platform.isPad\nconst presentation = Platform.select({\n android: 'modal' as const,\n ios: isPad ? ('modal' as const) : ('formSheet' as const),\n})\n\nexport const AvatarPickerScreenOptions = getFormSheetScreenOptions({\n headerTitle: 'Update avatar',\n presentation,\n sheetAllowedDetents: [1],\n})\n\nexport const AvatarPickerCreateScreenOptions = getFormSheetScreenOptions({\n headerTitle: 'Choose avatar',\n presentation,\n sheetAllowedDetents: [1],\n})\n\nexport type AvatarPickerScreenProps = StaticScreenProps<{\n conversation_id?: number\n source_params?: Record<string, unknown>\n avatar_selection?: AvatarUpdatePayload\n}>\n\nconst TABS: AvatarTab[] = ['icon', 'emoji', 'upload']\n\nconst TAB_LABELS: Record<AvatarTab, string> = {\n icon: 'Icon',\n emoji: 'Emoji',\n upload: 'Upload',\n}\n\nexport function AvatarPickerScreen({ route }: AvatarPickerScreenProps) {\n const { conversation_id, source_params, avatar_selection } = route.params\n if (conversation_id) {\n return <EditModeContent conversationId={conversation_id} />\n }\n return <CreateModeContent sourceParams={source_params} existingSelection={avatar_selection} />\n}\n\nfunction EditModeContent({ conversationId }: { conversationId: number }) {\n const navigation = useNavigation()\n const { data: conversation } = useConversation({ conversation_id: conversationId })\n const mutation = useConversationAvatarUpdate({ conversationId })\n const previewDiameter = usePreviewAvatarDiameter()\n\n const [state, dispatch] = useReducer(avatarPickerReducer, conversation, initAvatarPickerState)\n\n const hasAvatar = state.selectedType !== null\n\n const handleDone = useCallback(() => {\n if (!state.isDirty) {\n navigation.goBack()\n return\n }\n\n const payload = buildPayload(state)\n if (payload) {\n mutation.mutate(payload)\n }\n navigation.goBack()\n }, [state, mutation, navigation])\n\n const handleRemove = useCallback(() => {\n mutation.mutate({ kind: 'clear' }, { onSuccess: () => dispatch({ type: 'CLEAR' }) })\n }, [mutation, dispatch])\n\n return (\n <AvatarPickerFormSheet\n state={state}\n dispatch={dispatch}\n headerTitle=\"Update avatar\"\n headerActions={\n <>\n {hasAvatar && (\n <FormSheet.HeaderTextButton onPress={handleRemove} appearance=\"danger\">\n Remove\n </FormSheet.HeaderTextButton>\n )}\n <FormSheet.HeaderTextButton onPress={handleDone} disabled={mutation.isPending}>\n Done\n </FormSheet.HeaderTextButton>\n </>\n }\n fallbackPreview={\n <ConversationAvatar\n conversation={conversation}\n size=\"2xl\"\n maxFontSizeMultiplier={MAX_FONT_SIZE_MULTIPLIER_LANDMARK}\n style={{ width: previewDiameter, height: previewDiameter }}\n />\n }\n />\n )\n}\n\ninterface CreateModeContentProps {\n sourceParams?: Record<string, unknown>\n existingSelection?: AvatarUpdatePayload\n}\n\nfunction CreateModeContent({ sourceParams, existingSelection }: CreateModeContentProps) {\n const navigation = useNavigation()\n\n const [state, dispatch] = useReducer(avatarPickerReducer, existingSelection, selection =>\n selection ? initAvatarPickerStateFromPayload(selection) : initEmptyAvatarPickerState()\n )\n\n const handleDone = useCallback(() => {\n if (!state.isDirty) {\n navigation.goBack()\n return\n }\n\n const payload = buildPayload(state)\n if (payload) {\n navigation.dispatch(\n StackActions.popTo('ConversationNew', { ...sourceParams, avatar_selection: payload })\n )\n } else {\n navigation.goBack()\n }\n }, [state, navigation, sourceParams])\n\n return (\n <AvatarPickerFormSheet\n state={state}\n dispatch={dispatch}\n headerTitle=\"Choose avatar\"\n headerActions={\n <FormSheet.HeaderTextButton onPress={handleDone}>Done</FormSheet.HeaderTextButton>\n }\n fallbackPreview={<EmptyAvatarPlaceholder />}\n />\n )\n}\n\ninterface AvatarPickerFormSheetProps {\n state: AvatarPickerState\n dispatch: React.Dispatch<AvatarPickerAction>\n headerTitle: string\n headerActions: React.ReactNode\n fallbackPreview: React.ReactNode\n}\n\nfunction AvatarPickerFormSheet({\n state,\n dispatch,\n headerTitle,\n headerActions,\n fallbackPreview,\n}: AvatarPickerFormSheetProps) {\n const styles = useStyles()\n\n return (\n <FormSheet.Root\n style={styles.formSheetRoot}\n contentStyle={styles.formSheetContent}\n showAndroidSheetGrabber={false}\n >\n <FormSheet.Header style={styles.header}>\n <FormSheet.HeaderTitle>{headerTitle}</FormSheet.HeaderTitle>\n <FormSheet.HeaderActions>{headerActions}</FormSheet.HeaderActions>\n </FormSheet.Header>\n\n <AvatarPreview state={state} fallback={fallbackPreview} />\n\n <Tabs\n data={TABS}\n activeTab={state.activeTab}\n onTabPress={tab => dispatch({ type: 'SELECT_TAB', payload: tab })}\n renderItem={({ item }) => (\n <Text\n style={[styles.tabLabel, item === state.activeTab && styles.tabLabelActive]}\n maxFontSizeMultiplier={MAX_FONT_SIZE_MULTIPLIER_LANDMARK}\n >\n {TAB_LABELS[item]}\n </Text>\n )}\n style={styles.tabs}\n />\n\n <View style={styles.body}>\n {state.activeTab === 'icon' && (\n <IconGrid\n selectedIconKey={state.selectedType === 'icon' ? state.selectedKey : null}\n onIconSelect={iconKey => dispatch({ type: 'SELECT_ICON', payload: iconKey })}\n />\n )}\n {state.activeTab === 'emoji' && (\n <EmojiTab onEmojiSelect={emoji => dispatch({ type: 'SELECT_EMOJI', payload: emoji })} />\n )}\n {state.activeTab === 'upload' && (\n <UploadTab\n imagePreviewUri={state.imagePreviewUri}\n onImageSelect={asset => dispatch({ type: 'SET_IMAGE', payload: asset })}\n />\n )}\n </View>\n\n {state.activeTab !== 'upload' && (\n <View style={styles.colorPickerWrapper}>\n <ColorPicker\n selectedColor={state.selectedColor}\n onColorSelect={color => dispatch({ type: 'SELECT_COLOR', payload: color })}\n />\n </View>\n )}\n </FormSheet.Root>\n )\n}\n\nfunction EmptyAvatarPlaceholder() {\n const styles = useStyles()\n const diameter = usePreviewAvatarDiameter()\n return (\n <View\n style={[\n styles.emptyAvatarPlaceholder,\n { width: diameter, height: diameter, borderRadius: diameter / 2 },\n ]}\n />\n )\n}\n\ntype ValidAvatarPickerState = AvatarPickerState &\n (\n | { selectedType: 'icon' | 'emoji'; selectedKey: string }\n | { selectedType: 'image'; imageAsset: ImagePickerAsset }\n )\n\nfunction hasValidSelection(state: AvatarPickerState): state is ValidAvatarPickerState {\n switch (state.selectedType) {\n case 'icon':\n case 'emoji':\n return state.selectedKey !== null\n case 'image':\n return state.imageAsset !== null\n case null:\n return false\n }\n}\n\nfunction buildPayload(state: AvatarPickerState): AvatarUpdatePayload | null {\n if (!hasValidSelection(state)) return null\n\n const color = coerceColorKey(state.selectedColor)\n\n switch (state.selectedType) {\n case 'icon':\n return { kind: 'icon', key: state.selectedKey, color }\n case 'emoji':\n return { kind: 'emoji', key: state.selectedKey, color }\n case 'image':\n return { kind: 'image', imageAsset: state.imageAsset, color }\n }\n}\n\nconst useStyles = () => {\n const { colors } = useTheme()\n const fontScale = useFontScale({ maxFontSizeMultiplier: MAX_FONT_SIZE_MULTIPLIER_LANDMARK })\n const { top } = useSafeAreaInsets()\n\n return StyleSheet.create({\n formSheetRoot: {\n flex: 1,\n },\n formSheetContent: {\n flex: 1,\n },\n header: {\n paddingTop: Platform.select({ ios: 20, android: 20 + top }),\n },\n tabs: {\n minHeight: 52 * fontScale,\n borderBottomWidth: 1,\n borderBottomColor: colors.borderColorDefaultBase,\n backgroundColor: colors.fillColorNeutral100Inverted,\n zIndex: 1,\n },\n tabLabel: {\n fontSize: 14,\n color: colors.textColorDefaultSecondary,\n paddingVertical: 14 * fontScale,\n minWidth: 56 * fontScale,\n textAlign: 'center',\n },\n tabLabelActive: {\n color: colors.textColorDefaultPrimary,\n },\n body: {\n flex: 1,\n overflow: 'hidden',\n },\n colorPickerWrapper: {\n borderTopWidth: 1,\n borderTopColor: colors.borderColorDefaultBase,\n },\n emptyAvatarPlaceholder: {\n borderWidth: 2,\n borderStyle: 'dashed',\n borderColor: colors.borderColorDefaultBase,\n },\n })\n}\n"],"mappings":";AAAA,SAASA,YAAY,EAAqBC,aAAa,QAAQ,0BAA0B;AACzF,OAAOC,KAAK,IAAIC,WAAW,EAAEC,UAAU,QAAQ,OAAO;AACtD,SAASC,QAAQ,EAAEC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AACzD,SAASC,iBAAiB,QAAQ,gCAAgC;AAClE,SAASC,kBAAkB,QAAQ,8CAA8C;AACjF,SAASC,IAAI,QAAQ,+BAA+B;AACpD,SAASC,IAAI,QAAQ,+BAA+B;AACpD,SAASC,cAAc,QAAQ,uDAAuD;AACtF,OAAOC,SAAS,IAAIC,yBAAyB,QAAQ,uCAAuC;AAC5F,SAASC,QAAQ,QAAQ,aAAa;AACtC,SAASC,eAAe,QAAQ,8BAA8B;AAC9D,SACEC,2BAA2B,QAEtB,4CAA4C;AACnD,SAASC,YAAY,QAAQ,4BAA4B;AACzD,SAASC,wBAAwB,QAAQ,yCAAyC;AAClF,SAASC,iCAAiC,QAAQ,aAAa;AAE/D,SACEC,mBAAmB,EACnBC,qBAAqB,EACrBC,gCAAgC,EAChCC,0BAA0B,QAIrB,uBAAuB;AAC9B,SAASC,aAAa,QAAQ,kBAAkB;AAChD,SAASC,WAAW,QAAQ,gBAAgB;AAC5C,SAASC,QAAQ,QAAQ,aAAa;AACtC,SAASC,QAAQ,QAAQ,aAAa;AACtC,SAASC,SAAS,QAAQ,cAAc;;AAExC;AACA;AACA;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA,EAAAC,IAAA,IAAAC,KAAA;AACA,MAAMC,KAAK,GAAG/B,QAAQ,CAACgC,EAAE,KAAK,KAAK,IAAIhC,QAAQ,CAAC+B,KAAK;AACrD,MAAME,YAAY,GAAGjC,QAAQ,CAACkC,MAAM,CAAC;EACnCC,OAAO,EAAE,OAAgB;EACzBC,GAAG,EAAEL,KAAK,GAAI,OAAO,GAAc;AACrC,CAAC,CAAC;AAEF,OAAO,MAAMM,yBAAyB,GAAG5B,yBAAyB,CAAC;EACjE6B,WAAW,EAAE,eAAe;EAC5BL,YAAY;EACZM,mBAAmB,EAAE,CAAC,CAAC;AACzB,CAAC,CAAC;AAEF,OAAO,MAAMC,+BAA+B,GAAG/B,yBAAyB,CAAC;EACvE6B,WAAW,EAAE,eAAe;EAC5BL,YAAY;EACZM,mBAAmB,EAAE,CAAC,CAAC;AACzB,CAAC,CAAC;AAQF,MAAME,IAAiB,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC;AAErD,MAAMC,UAAqC,GAAG;EAC5CC,IAAI,EAAE,MAAM;EACZC,KAAK,EAAE,OAAO;EACdC,MAAM,EAAE;AACV,CAAC;AAED,OAAO,SAAAC,mBAAAC,EAAA;EAAA,MAAAC,CAAA,GAAAC,EAAA;EAA4B;IAAAC;EAAA,IAAAH,EAAkC;EACnE;IAAAI,eAAA;IAAAC,aAAA;IAAAC;EAAA,IAA6DH,KAAK,CAAAI,MAAO;EACzE,IAAIH,eAAe;IAAA,IAAAI,EAAA;IAAA,IAAAP,CAAA,QAAAG,eAAA;MACVI,EAAA,gBAAA7B,IAAA,CAAC8B,eAAe;QAAiBL,cAAe,EAAfA;MAAe,CAAG,CAAC;MAAAH,CAAA,MAAAG,eAAA;MAAAH,CAAA,MAAAO,EAAA;IAAA;MAAAA,EAAA,GAAAP,CAAA;IAAA;IAAA,OAApDO,EAAoD;EAAA;EAC5D,IAAAA,EAAA;EAAA,IAAAP,CAAA,QAAAK,gBAAA,IAAAL,CAAA,QAAAI,aAAA;IACMG,EAAA,gBAAA7B,IAAA,CAAC+B,iBAAiB;MAAeL,YAAa,EAAbA,aAAa;MAAqBC,iBAAgB,EAAhBA;IAAgB,CAAG,CAAC;IAAAL,CAAA,MAAAK,gBAAA;IAAAL,CAAA,MAAAI,aAAA;IAAAJ,CAAA,MAAAO,EAAA;EAAA;IAAAA,EAAA,GAAAP,CAAA;EAAA;EAAA,OAAvFO,EAAuF;AAAA;AAGhG,SAAAC,gBAAAT,EAAA;EAAA,MAAAC,CAAA,GAAAC,EAAA;EAAyB;IAAAS;EAAA,IAAAX,EAA8C;EACrE,MAAAY,UAAA,GAAmB/D,aAAa,CAAC,CAAC;EAAA,IAAA2D,EAAA;EAAA,IAAAP,CAAA,QAAAU,cAAA;IACaH,EAAA;MAAAJ,eAAA,EAAmBO;IAAe,CAAC;IAAAV,CAAA,MAAAU,cAAA;IAAAV,CAAA,MAAAO,EAAA;EAAA;IAAAA,EAAA,GAAAP,CAAA;EAAA;EAAlF;IAAAY,IAAA,EAAAC;EAAA,IAA+BlD,eAAe,CAAC4C,EAAmC,CAAC;EAAA,IAAAO,EAAA;EAAA,IAAAd,CAAA,QAAAU,cAAA;IACtCI,EAAA;MAAAJ;IAAiB,CAAC;IAAAV,CAAA,MAAAU,cAAA;IAAAV,CAAA,MAAAc,EAAA;EAAA;IAAAA,EAAA,GAAAd,CAAA;EAAA;EAA/D,MAAAe,QAAA,GAAiBnD,2BAA2B,CAACkD,EAAkB,CAAC;EAChE,MAAAE,eAAA,GAAwBlD,wBAAwB,CAAC,CAAC;EAElD,OAAAmD,KAAA,EAAAC,QAAA,IAA0BnE,UAAU,CAACiB,mBAAmB,EAAE6C,YAAY,EAAE5C,qBAAqB,CAAC;EAE9F,MAAAkD,SAAA,GAAkBF,KAAK,CAAAG,YAAa,KAAK,IAAI;EAAA,IAAAC,EAAA;EAAA,IAAArB,CAAA,QAAAe,QAAA,IAAAf,CAAA,QAAAW,UAAA,IAAAX,CAAA,QAAAiB,KAAA;IAEdI,EAAA,GAAAA,CAAA;MAC7B,IAAI,CAACJ,KAAK,CAAAK,OAAQ;QAChBX,UAAU,CAAAY,MAAO,CAAC,CAAC;QAAA;MAAA;MAIrB,MAAAC,OAAA,GAAgBC,YAAY,CAACR,KAAK,CAAC;MACnC,IAAIO,OAAO;QACTT,QAAQ,CAAAW,MAAO,CAACF,OAAO,CAAC;MAAA;MAE1Bb,UAAU,CAAAY,MAAO,CAAC,CAAC;IAAA,CACpB;IAAAvB,CAAA,MAAAe,QAAA;IAAAf,CAAA,MAAAW,UAAA;IAAAX,CAAA,MAAAiB,KAAA;IAAAjB,CAAA,MAAAqB,EAAA;EAAA;IAAAA,EAAA,GAAArB,CAAA;EAAA;EAXD,MAAA2B,UAAA,GAAmBN,EAWc;EAAA,IAAAO,EAAA;EAAA,IAAA5B,CAAA,QAAAe,QAAA;IAEAa,EAAA,GAAAA,CAAA;MAC/Bb,QAAQ,CAAAW,MAAO,CAAC;QAAAG,IAAA,EAAQ;MAAQ,CAAC,EAAE;QAAAC,SAAA,EAAaA,CAAA,KAAMZ,QAAQ,CAAC;UAAAa,IAAA,EAAQ;QAAQ,CAAC;MAAE,CAAC,CAAC;IAAA,CACrF;IAAA/B,CAAA,MAAAe,QAAA;IAAAf,CAAA,MAAA4B,EAAA;EAAA;IAAAA,EAAA,GAAA5B,CAAA;EAAA;EAFD,MAAAgC,YAAA,GAAqBJ,EAEG;EAAA,IAAAK,EAAA;EAAA,IAAAjC,CAAA,SAAAgC,YAAA,IAAAhC,CAAA,SAAAmB,SAAA;IASfc,EAAA,GAAAd,SAIA,iBAJAzC,IAAA,CAAAlB,SAAA,CAAA0E,gBAAA;MACsCF,OAAY,EAAZA,YAAY;MAAaG,UAAQ,EAAR,QAAQ;MAAAC,QAAA,EAAC;IAEvE,CACF,CAAC;IAAApC,CAAA,OAAAgC,YAAA;IAAAhC,CAAA,OAAAmB,SAAA;IAAAnB,CAAA,OAAAiC,EAAA;EAAA;IAAAA,EAAA,GAAAjC,CAAA;EAAA;EAAA,IAAAqC,EAAA;EAAA,IAAArC,CAAA,SAAA2B,UAAA,IAAA3B,CAAA,SAAAe,QAAA,CAAAuB,SAAA;IACDD,EAAA,gBAAA3D,IAAA,CAAAlB,SAAA,CAAA0E,gBAAA;MAAqCP,OAAU,EAAVA,UAAU;MAAYY,QAAkB,EAAlBxB,QAAQ,CAAAuB,SAAU;MAAAF,QAAA,EAAE;IAE/E,CAA4B,CAAC;IAAApC,CAAA,OAAA2B,UAAA;IAAA3B,CAAA,OAAAe,QAAA,CAAAuB,SAAA;IAAAtC,CAAA,OAAAqC,EAAA;EAAA;IAAAA,EAAA,GAAArC,CAAA;EAAA;EAAA,IAAAwC,EAAA;EAAA,IAAAxC,CAAA,SAAAiC,EAAA,IAAAjC,CAAA,SAAAqC,EAAA;IAR/BG,EAAA,gBAAA1D,KAAA,CAAAF,SAAA;MAAAwD,QAAA,GACGH,EAIA,EACDI,EAE6B;IAAA,CAC7B,CAAC;IAAArC,CAAA,OAAAiC,EAAA;IAAAjC,CAAA,OAAAqC,EAAA;IAAArC,CAAA,OAAAwC,EAAA;EAAA;IAAAA,EAAA,GAAAxC,CAAA;EAAA;EAAA,IAAAyC,EAAA;EAAA,IAAAzC,CAAA,SAAAgB,eAAA;IAOMyB,EAAA;MAAAC,KAAA,EAAS1B,eAAe;MAAA2B,MAAA,EAAU3B;IAAgB,CAAC;IAAAhB,CAAA,OAAAgB,eAAA;IAAAhB,CAAA,OAAAyC,EAAA;EAAA;IAAAA,EAAA,GAAAzC,CAAA;EAAA;EAAA,IAAA4C,EAAA;EAAA,IAAA5C,CAAA,SAAAa,YAAA,IAAAb,CAAA,SAAAyC,EAAA;IAJ5DG,EAAA,gBAAAlE,IAAA,CAACtB,kBAAkB;MACHyD,YAAY,EAAZA,YAAY;MACrBgC,IAAK,EAAL,KAAK;MACa9E,qBAAiC,EAAjCA,iCAAiC;MACjD+E,KAAmD,EAAnDL;IAAmD,CAC3D,CAAC;IAAAzC,CAAA,OAAAa,YAAA;IAAAb,CAAA,OAAAyC,EAAA;IAAAzC,CAAA,OAAA4C,EAAA;EAAA;IAAAA,EAAA,GAAA5C,CAAA;EAAA;EAAA,IAAA+C,GAAA;EAAA,IAAA/C,CAAA,SAAAiB,KAAA,IAAAjB,CAAA,SAAAwC,EAAA,IAAAxC,CAAA,SAAA4C,EAAA;IAtBNG,GAAA,gBAAArE,IAAA,CAACsE,qBAAqB;MACb/B,KAAK,EAALA,KAAK;MACFC,QAAQ,EAARA,QAAQ;MACN5B,WAAe,EAAf,eAAe;MAEzB2D,aASG,EATHT,EASG;MAGHU,eAKE,EALFN;IAKE,CAEL,CAAC;IAAA5C,CAAA,OAAAiB,KAAA;IAAAjB,CAAA,OAAAwC,EAAA;IAAAxC,CAAA,OAAA4C,EAAA;IAAA5C,CAAA,OAAA+C,GAAA;EAAA;IAAAA,GAAA,GAAA/C,CAAA;EAAA;EAAA,OAxBF+C,GAwBE;AAAA;AASN,SAAAtC,kBAAAV,EAAA;EAAA,MAAAC,CAAA,GAAAC,EAAA;EAA2B;IAAAkD,YAAA;IAAAC;EAAA,IAAArD,EAA2D;EACpF,MAAAY,UAAA,GAAmB/D,aAAa,CAAC,CAAC;EAElC,OAAAqE,KAAA,EAAAC,QAAA,IAA0BnE,UAAU,CAACiB,mBAAmB,EAAEoF,iBAAiB,EAAEC,KAE7E,CAAC;EAAA,IAAA9C,EAAA;EAAA,IAAAP,CAAA,QAAAW,UAAA,IAAAX,CAAA,QAAAmD,YAAA,IAAAnD,CAAA,QAAAiB,KAAA;IAE8BV,EAAA,GAAAA,CAAA;MAC7B,IAAI,CAACU,KAAK,CAAAK,OAAQ;QAChBX,UAAU,CAAAY,MAAO,CAAC,CAAC;QAAA;MAAA;MAIrB,MAAAC,OAAA,GAAgBC,YAAY,CAACR,KAAK,CAAC;MACnC,IAAIO,OAAO;QACTb,UAAU,CAAAO,QAAS,CACjBvE,YAAY,CAAA2G,KAAM,CAAC,iBAAiB,EAAE;UAAA,GAAKH,YAAY;UAAA9C,gBAAA,EAAoBmB;QAAQ,CAAC,CACtF,CAAC;MAAA;QAEDb,UAAU,CAAAY,MAAO,CAAC,CAAC;MAAA;IACpB,CACF;IAAAvB,CAAA,MAAAW,UAAA;IAAAX,CAAA,MAAAmD,YAAA;IAAAnD,CAAA,MAAAiB,KAAA;IAAAjB,CAAA,MAAAO,EAAA;EAAA;IAAAA,EAAA,GAAAP,CAAA;EAAA;EAdD,MAAA2B,UAAA,GAAmBpB,EAckB;EAAA,IAAAO,EAAA;EAAA,IAAAd,CAAA,QAAA2B,UAAA;IAQ/Bb,EAAA,gBAAApC,IAAA,CAAAlB,SAAA,CAAA0E,gBAAA;MAAqCP,OAAU,EAAVA,UAAU;MAAAS,QAAA,EAAE;IAAI,CAA4B,CAAC;IAAApC,CAAA,MAAA2B,UAAA;IAAA3B,CAAA,MAAAc,EAAA;EAAA;IAAAA,EAAA,GAAAd,CAAA;EAAA;EAAA,IAAAqB,EAAA;EAAA,IAAArB,CAAA,QAAAuD,MAAA,CAAAC,GAAA;IAEnEnC,EAAA,gBAAA3C,IAAA,CAAC+E,sBAAsB,IAAE,CAAC;IAAAzD,CAAA,MAAAqB,EAAA;EAAA;IAAAA,EAAA,GAAArB,CAAA;EAAA;EAAA,IAAA4B,EAAA;EAAA,IAAA5B,CAAA,QAAAiB,KAAA,IAAAjB,CAAA,QAAAc,EAAA;IAP7Cc,EAAA,gBAAAlD,IAAA,CAACsE,qBAAqB;MACb/B,KAAK,EAALA,KAAK;MACFC,QAAQ,EAARA,QAAQ;MACN5B,WAAe,EAAf,eAAe;MAEzB2D,aAAkF,EAAlFnC,EAAkF;MAEnEoC,eAA0B,EAA1B7B;IAA0B,CAC5C,CAAC;IAAArB,CAAA,MAAAiB,KAAA;IAAAjB,CAAA,MAAAc,EAAA;IAAAd,CAAA,MAAA4B,EAAA;EAAA;IAAAA,EAAA,GAAA5B,CAAA;EAAA;EAAA,OARF4B,EAQE;AAAA;AAhCN,SAAAyB,MAAAK,SAAA;EAAA,OAIIA,SAAS,GAAGxF,gCAAgC,CAACwF,SAAwC,CAAC,GAA5BvF,0BAA0B,CAAC,CAAC;AAAA;AAwC1F,SAAA6E,sBAAAjD,EAAA;EAAA,MAAAC,CAAA,GAAAC,EAAA;EAA+B;IAAAgB,KAAA;IAAAC,QAAA;IAAA5B,WAAA;IAAA2D,aAAA;IAAAC;EAAA,IAAAnD,EAMF;EAC3B,MAAA4D,MAAA,GAAeC,SAAS,CAAC,CAAC;EAAA,IAAArD,EAAA;EAAA,IAAAP,CAAA,QAAAV,WAAA;IASpBiB,EAAA,gBAAA7B,IAAA,CAAAlB,SAAA,CAAAqG,WAAA;MAAAzB,QAAA,EAAwB9C;IAAW,CAAwB,CAAC;IAAAU,CAAA,MAAAV,WAAA;IAAAU,CAAA,MAAAO,EAAA;EAAA;IAAAA,EAAA,GAAAP,CAAA;EAAA;EAAA,IAAAc,EAAA;EAAA,IAAAd,CAAA,QAAAiD,aAAA;IAC5DnC,EAAA,gBAAApC,IAAA,CAAAlB,SAAA,CAAAsG,aAAA;MAAA1B,QAAA,EAA0Ba;IAAa,CAA0B,CAAC;IAAAjD,CAAA,MAAAiD,aAAA;IAAAjD,CAAA,MAAAc,EAAA;EAAA;IAAAA,EAAA,GAAAd,CAAA;EAAA;EAAA,IAAAqB,EAAA;EAAA,IAAArB,CAAA,QAAA2D,MAAA,CAAAI,MAAA,IAAA/D,CAAA,QAAAO,EAAA,IAAAP,CAAA,QAAAc,EAAA;IAFpEO,EAAA,gBAAAvC,KAAA,CAAAtB,SAAA,CAAAwG,MAAA;MAAyBlB,KAAa,EAAba,MAAM,CAAAI,MAAO;MAAA3B,QAAA,GACpC7B,EAA4D,EAC5DO,EAAkE;IAAA,CAClD,CAAC;IAAAd,CAAA,MAAA2D,MAAA,CAAAI,MAAA;IAAA/D,CAAA,MAAAO,EAAA;IAAAP,CAAA,MAAAc,EAAA;IAAAd,CAAA,MAAAqB,EAAA;EAAA;IAAAA,EAAA,GAAArB,CAAA;EAAA;EAAA,IAAA4B,EAAA;EAAA,IAAA5B,CAAA,QAAAkD,eAAA,IAAAlD,CAAA,QAAAiB,KAAA;IAEnBW,EAAA,gBAAAlD,IAAA,CAACN,aAAa;MAAQ6C,KAAK,EAALA,KAAK;MAAYiC,QAAe,EAAfA;IAAe,CAAG,CAAC;IAAAlD,CAAA,MAAAkD,eAAA;IAAAlD,CAAA,MAAAiB,KAAA;IAAAjB,CAAA,OAAA4B,EAAA;EAAA;IAAAA,EAAA,GAAA5B,CAAA;EAAA;EAAA,IAAAiC,EAAA;EAAA,IAAAjC,CAAA,SAAAkB,QAAA;IAK5Ce,EAAA,GAAAgC,GAAA,IAAO/C,QAAQ,CAAC;MAAAa,IAAA,EAAQ,YAAY;MAAAP,OAAA,EAAWyC;IAAI,CAAC,CAAC;IAAAjE,CAAA,OAAAkB,QAAA;IAAAlB,CAAA,OAAAiC,EAAA;EAAA;IAAAA,EAAA,GAAAjC,CAAA;EAAA;EAAA,IAAAqC,EAAA;EAAA,IAAArC,CAAA,SAAAiB,KAAA,CAAAiD,SAAA,IAAAlE,CAAA,SAAA2D,MAAA,CAAAQ,QAAA,IAAAnE,CAAA,SAAA2D,MAAA,CAAAS,cAAA;IACrD/B,EAAA,GAAAG,EAAA;MAAC;QAAA6B;MAAA,IAAA7B,EAAQ;MAAA,oBACnB9D,IAAA,CAACpB,IAAI;QACIwF,KAAoE,EAApE,CAACa,MAAM,CAAAQ,QAAS,EAAEE,IAAI,KAAKpD,KAAK,CAAAiD,SAAmC,IAArBP,MAAM,CAAAS,cAAe,CAAC;QACpDrG,qBAAiC,EAAjCA,iCAAiC;QAAAqE,QAAA,EAEvD1C,UAAU,CAAC2E,IAAI;MAAC,CACb,CAAC;IAAA,CACR;IAAArE,CAAA,OAAAiB,KAAA,CAAAiD,SAAA;IAAAlE,CAAA,OAAA2D,MAAA,CAAAQ,QAAA;IAAAnE,CAAA,OAAA2D,MAAA,CAAAS,cAAA;IAAApE,CAAA,OAAAqC,EAAA;EAAA;IAAAA,EAAA,GAAArC,CAAA;EAAA;EAAA,IAAAwC,EAAA;EAAA,IAAAxC,CAAA,SAAAiB,KAAA,CAAAiD,SAAA,IAAAlE,CAAA,SAAA2D,MAAA,CAAAW,IAAA,IAAAtE,CAAA,SAAAiC,EAAA,IAAAjC,CAAA,SAAAqC,EAAA;IAXHG,EAAA,gBAAA9D,IAAA,CAACrB,IAAI;MACGoC,IAAI,EAAJA,IAAI;MACCyE,SAAe,EAAfjD,KAAK,CAAAiD,SAAU;MACdK,UAAqD,EAArDtC,EAAqD;MACrDuC,UAOX,EAPWnC,EAOX;MACMS,KAAW,EAAXa,MAAM,CAAAW;IAAK,CACnB,CAAC;IAAAtE,CAAA,OAAAiB,KAAA,CAAAiD,SAAA;IAAAlE,CAAA,OAAA2D,MAAA,CAAAW,IAAA;IAAAtE,CAAA,OAAAiC,EAAA;IAAAjC,CAAA,OAAAqC,EAAA;IAAArC,CAAA,OAAAwC,EAAA;EAAA;IAAAA,EAAA,GAAAxC,CAAA;EAAA;EAAA,IAAAyC,EAAA;EAAA,IAAAzC,CAAA,SAAAkB,QAAA,IAAAlB,CAAA,SAAAiB,KAAA,CAAAiD,SAAA,IAAAlE,CAAA,SAAAiB,KAAA,CAAAwD,WAAA,IAAAzE,CAAA,SAAAiB,KAAA,CAAAG,YAAA;IAGCqB,EAAA,GAAAxB,KAAK,CAAAiD,SAAU,KAAK,MAKpB,iBALAxF,IAAA,CACEH,QAAQ;MACUmG,eAAwD,EAAxDzD,KAAK,CAAAG,YAAa,KAAK,MAAiC,GAAxBH,KAAK,CAAAwD,WAAmB,GAAxD,IAAwD;MAC3DE,YAA8D,EAA9DC,OAAA,IAAW1D,QAAQ,CAAC;QAAAa,IAAA,EAAQ,aAAa;QAAAP,OAAA,EAAWoD;MAAQ,CAAC;IAAC,CAEhF,CAAC;IAAA5E,CAAA,OAAAkB,QAAA;IAAAlB,CAAA,OAAAiB,KAAA,CAAAiD,SAAA;IAAAlE,CAAA,OAAAiB,KAAA,CAAAwD,WAAA;IAAAzE,CAAA,OAAAiB,KAAA,CAAAG,YAAA;IAAApB,CAAA,OAAAyC,EAAA;EAAA;IAAAA,EAAA,GAAAzC,CAAA;EAAA;EAAA,IAAA4C,EAAA;EAAA,IAAA5C,CAAA,SAAAkB,QAAA,IAAAlB,CAAA,SAAAiB,KAAA,CAAAiD,SAAA;IACAtB,EAAA,GAAA3B,KAAK,CAAAiD,SAAU,KAAK,OAEpB,iBAFAxF,IAAA,CACEJ,QAAQ;MAAgBuG,aAA2D,EAA3DjF,KAAA,IAASsB,QAAQ,CAAC;QAAAa,IAAA,EAAQ,cAAc;QAAAP,OAAA,EAAW5B;MAAM,CAAC;IAAC,CACtF,CAAC;IAAAI,CAAA,OAAAkB,QAAA;IAAAlB,CAAA,OAAAiB,KAAA,CAAAiD,SAAA;IAAAlE,CAAA,OAAA4C,EAAA;EAAA;IAAAA,EAAA,GAAA5C,CAAA;EAAA;EAAA,IAAA+C,GAAA;EAAA,IAAA/C,CAAA,SAAAkB,QAAA,IAAAlB,CAAA,SAAAiB,KAAA,CAAAiD,SAAA,IAAAlE,CAAA,SAAAiB,KAAA,CAAA6D,eAAA;IACA/B,GAAA,GAAA9B,KAAK,CAAAiD,SAAU,KAAK,QAKpB,iBALAxF,IAAA,CACEF,SAAS;MACSsG,eAAqB,EAArB7D,KAAK,CAAA6D,eAAgB;MACvBC,aAAwD,EAAxDC,KAAA,IAAS9D,QAAQ,CAAC;QAAAa,IAAA,EAAQ,WAAW;QAAAP,OAAA,EAAWwD;MAAM,CAAC;IAAC,CAE3E,CAAC;IAAAhF,CAAA,OAAAkB,QAAA;IAAAlB,CAAA,OAAAiB,KAAA,CAAAiD,SAAA;IAAAlE,CAAA,OAAAiB,KAAA,CAAA6D,eAAA;IAAA9E,CAAA,OAAA+C,GAAA;EAAA;IAAAA,GAAA,GAAA/C,CAAA;EAAA;EAAA,IAAAiF,GAAA;EAAA,IAAAjF,CAAA,SAAA2D,MAAA,CAAAuB,IAAA,IAAAlF,CAAA,SAAA+C,GAAA,IAAA/C,CAAA,SAAAyC,EAAA,IAAAzC,CAAA,SAAA4C,EAAA;IAfHqC,GAAA,gBAAAnG,KAAA,CAAC5B,IAAI;MAAQ4F,KAAW,EAAXa,MAAM,CAAAuB,IAAK;MAAA9C,QAAA,GACrBK,EAKA,EACAG,EAEA,EACAG,GAKA;IAAA,CACG,CAAC;IAAA/C,CAAA,OAAA2D,MAAA,CAAAuB,IAAA;IAAAlF,CAAA,OAAA+C,GAAA;IAAA/C,CAAA,OAAAyC,EAAA;IAAAzC,CAAA,OAAA4C,EAAA;IAAA5C,CAAA,OAAAiF,GAAA;EAAA;IAAAA,GAAA,GAAAjF,CAAA;EAAA;EAAA,IAAAmF,GAAA;EAAA,IAAAnF,CAAA,SAAAkB,QAAA,IAAAlB,CAAA,SAAAiB,KAAA,CAAAiD,SAAA,IAAAlE,CAAA,SAAAiB,KAAA,CAAAmE,aAAA,IAAApF,CAAA,SAAA2D,MAAA,CAAA0B,kBAAA;IAENF,GAAA,GAAAlE,KAAK,CAAAiD,SAAU,KAAK,QAOpB,iBAPAxF,IAAA,CACExB,IAAI;MAAQ4F,KAAyB,EAAzBa,MAAM,CAAA0B,kBAAmB;MAAAjD,QAAA,eACpC1D,IAAA,CAACL,WAAW;QACK+G,aAAmB,EAAnBnE,KAAK,CAAAmE,aAAc;QACnBE,aAA2D,EAA3DC,KAAA,IAASrE,QAAQ,CAAC;UAAAa,IAAA,EAAQ,cAAc;UAAAP,OAAA,EAAW+D;QAAM,CAAC;MAAC,CAC3E;IAAC,CAEN,CAAC;IAAAvF,CAAA,OAAAkB,QAAA;IAAAlB,CAAA,OAAAiB,KAAA,CAAAiD,SAAA;IAAAlE,CAAA,OAAAiB,KAAA,CAAAmE,aAAA;IAAApF,CAAA,OAAA2D,MAAA,CAAA0B,kBAAA;IAAArF,CAAA,OAAAmF,GAAA;EAAA;IAAAA,GAAA,GAAAnF,CAAA;EAAA;EAAA,IAAAwF,GAAA;EAAA,IAAAxF,CAAA,SAAA2D,MAAA,CAAA8B,gBAAA,IAAAzF,CAAA,SAAA2D,MAAA,CAAA+B,aAAA,IAAA1F,CAAA,SAAAiF,GAAA,IAAAjF,CAAA,SAAAmF,GAAA,IAAAnF,CAAA,SAAAqB,EAAA,IAAArB,CAAA,SAAA4B,EAAA,IAAA5B,CAAA,SAAAwC,EAAA;IApDHgD,GAAA,gBAAA1G,KAAA,CAAAtB,SAAA,CAAAmI,IAAA;MACS7C,KAAoB,EAApBa,MAAM,CAAA+B,aAAc;MACbE,YAAuB,EAAvBjC,MAAM,CAAA8B,gBAAiB;MACZI,uBAAK,EAAL,KAAK;MAAAzD,QAAA,GAE9Bf,EAGmB,EAEnBO,EAA0D,EAE1DY,EAaE,EAEFyC,GAgBO,EAENE,GAOA;IAAA,CACa,CAAC;IAAAnF,CAAA,OAAA2D,MAAA,CAAA8B,gBAAA;IAAAzF,CAAA,OAAA2D,MAAA,CAAA+B,aAAA;IAAA1F,CAAA,OAAAiF,GAAA;IAAAjF,CAAA,OAAAmF,GAAA;IAAAnF,CAAA,OAAAqB,EAAA;IAAArB,CAAA,OAAA4B,EAAA;IAAA5B,CAAA,OAAAwC,EAAA;IAAAxC,CAAA,OAAAwF,GAAA;EAAA;IAAAA,GAAA,GAAAxF,CAAA;EAAA;EAAA,OArDjBwF,GAqDiB;AAAA;AAIrB,SAAA/B,uBAAA;EAAA,MAAAzD,CAAA,GAAAC,EAAA;EACE,MAAA0D,MAAA,GAAeC,SAAS,CAAC,CAAC;EAC1B,MAAAkC,QAAA,GAAiBhI,wBAAwB,CAAC,CAAC;EAKc,MAAAiC,EAAA,GAAA+F,QAAQ,GAAG,CAAC;EAAA,IAAAvF,EAAA;EAAA,IAAAP,CAAA,QAAA8F,QAAA,IAAA9F,CAAA,QAAAD,EAAA;IAA/DQ,EAAA;MAAAmC,KAAA,EAASoD,QAAQ;MAAAnD,MAAA,EAAUmD,QAAQ;MAAAC,YAAA,EAAgBhG;IAAa,CAAC;IAAAC,CAAA,MAAA8F,QAAA;IAAA9F,CAAA,MAAAD,EAAA;IAAAC,CAAA,MAAAO,EAAA;EAAA;IAAAA,EAAA,GAAAP,CAAA;EAAA;EAAA,IAAAc,EAAA;EAAA,IAAAd,CAAA,QAAA2D,MAAA,CAAAqC,sBAAA,IAAAhG,CAAA,QAAAO,EAAA;IAHrEO,EAAA,gBAAApC,IAAA,CAACxB,IAAI;MACI4F,KAGN,EAHM,CACLa,MAAM,CAAAqC,sBAAuB,EAC7BzF,EAAiE;IAClE,CACF,CAAC;IAAAP,CAAA,MAAA2D,MAAA,CAAAqC,sBAAA;IAAAhG,CAAA,MAAAO,EAAA;IAAAP,CAAA,MAAAc,EAAA;EAAA;IAAAA,EAAA,GAAAd,CAAA;EAAA;EAAA,OALFc,EAKE;AAAA;AAUN,SAASmF,iBAAiBA,CAAChF,KAAwB,EAAmC;EACpF,QAAQA,KAAK,CAACG,YAAY;IACxB,KAAK,MAAM;IACX,KAAK,OAAO;MACV,OAAOH,KAAK,CAACwD,WAAW,KAAK,IAAI;IACnC,KAAK,OAAO;MACV,OAAOxD,KAAK,CAACiF,UAAU,KAAK,IAAI;IAClC,KAAK,IAAI;MACP,OAAO,KAAK;EAChB;AACF;AAEA,SAASzE,YAAYA,CAACR,KAAwB,EAA8B;EAC1E,IAAI,CAACgF,iBAAiB,CAAChF,KAAK,CAAC,EAAE,OAAO,IAAI;EAE1C,MAAMsE,KAAK,GAAGhI,cAAc,CAAC0D,KAAK,CAACmE,aAAa,CAAC;EAEjD,QAAQnE,KAAK,CAACG,YAAY;IACxB,KAAK,MAAM;MACT,OAAO;QAAES,IAAI,EAAE,MAAM;QAAEsE,GAAG,EAAElF,KAAK,CAACwD,WAAW;QAAEc;MAAM,CAAC;IACxD,KAAK,OAAO;MACV,OAAO;QAAE1D,IAAI,EAAE,OAAO;QAAEsE,GAAG,EAAElF,KAAK,CAACwD,WAAW;QAAEc;MAAM,CAAC;IACzD,KAAK,OAAO;MACV,OAAO;QAAE1D,IAAI,EAAE,OAAO;QAAEqE,UAAU,EAAEjF,KAAK,CAACiF,UAAU;QAAEX;MAAM,CAAC;EACjE;AACF;AAEA,MAAM3B,SAAS,GAAGA,CAAA;EAAA,MAAA5D,CAAA,GAAAC,EAAA;EAChB;IAAAmG;EAAA,IAAmB1I,QAAQ,CAAC,CAAC;EAAA,IAAAqC,EAAA;EAAA,IAAAC,CAAA,QAAAuD,MAAA,CAAAC,GAAA;IACEzD,EAAA;MAAAsG,qBAAA,EAAyBtI;IAAkC,CAAC;IAAAiC,CAAA,MAAAD,EAAA;EAAA;IAAAA,EAAA,GAAAC,CAAA;EAAA;EAA3F,MAAAsG,SAAA,GAAkBzI,YAAY,CAACkC,EAA4D,CAAC;EAC5F;IAAAwG;EAAA,IAAgBpJ,iBAAiB,CAAC,CAAC;EAAA,IAAAoD,EAAA;EAAA,IAAAP,CAAA,QAAAoG,MAAA,CAAAI,sBAAA,IAAAxG,CAAA,QAAAoG,MAAA,CAAAK,2BAAA,IAAAzG,CAAA,QAAAoG,MAAA,CAAAM,uBAAA,IAAA1G,CAAA,QAAAoG,MAAA,CAAAO,yBAAA,IAAA3G,CAAA,QAAAsG,SAAA,IAAAtG,CAAA,QAAAuG,GAAA;IAE5BhG,EAAA,GAAAtD,UAAU,CAAA2J,MAAO,CAAC;MAAAlB,aAAA,EACR;QAAAmB,IAAA,EACP;MACR,CAAC;MAAApB,gBAAA,EACiB;QAAAoB,IAAA,EACV;MACR,CAAC;MAAA9C,MAAA,EACO;QAAA+C,UAAA,EACM9J,QAAQ,CAAAkC,MAAO,CAAC;UAAAE,GAAA,EAAO,EAAE;UAAAD,OAAA,EAAW,EAAE,GAAGoH;QAAI,CAAC;MAC5D,CAAC;MAAAjC,IAAA,EACK;QAAAyC,SAAA,EACO,EAAE,GAAGT,SAAS;QAAAU,iBAAA,EACN,CAAC;QAAAC,iBAAA,EACDb,MAAM,CAAAI,sBAAuB;QAAAU,eAAA,EAC/Bd,MAAM,CAAAK,2BAA4B;QAAAU,MAAA,EAC3C;MACV,CAAC;MAAAhD,QAAA,EACS;QAAAiD,QAAA,EACE,EAAE;QAAA7B,KAAA,EACLa,MAAM,CAAAO,yBAA0B;QAAAU,eAAA,EACtB,EAAE,GAAGf,SAAS;QAAAgB,QAAA,EACrB,EAAE,GAAGhB,SAAS;QAAAiB,SAAA,EACb;MACb,CAAC;MAAAnD,cAAA,EACe;QAAAmB,KAAA,EACPa,MAAM,CAAAM;MACf,CAAC;MAAAxB,IAAA,EACK;QAAA2B,IAAA,EACE,CAAC;QAAAW,QAAA,EACG;MACZ,CAAC;MAAAnC,kBAAA,EACmB;QAAAoC,cAAA,EACF,CAAC;QAAAC,cAAA,EACDtB,MAAM,CAAAI;MACxB,CAAC;MAAAR,sBAAA,EACuB;QAAA2B,WAAA,EACT,CAAC;QAAAC,WAAA,EACD,QAAQ;QAAAC,WAAA,EACRzB,MAAM,CAAAI;MACrB;IACF,CAAC,CAAC;IAAAxG,CAAA,MAAAoG,MAAA,CAAAI,sBAAA;IAAAxG,CAAA,MAAAoG,MAAA,CAAAK,2BAAA;IAAAzG,CAAA,MAAAoG,MAAA,CAAAM,uBAAA;IAAA1G,CAAA,MAAAoG,MAAA,CAAAO,yBAAA;IAAA3G,CAAA,MAAAsG,SAAA;IAAAtG,CAAA,MAAAuG,GAAA;IAAAvG,CAAA,MAAAO,EAAA;EAAA;IAAAA,EAAA,GAAAP,CAAA;EAAA;EAAA,OAxCKO,EAwCL;AAAA,CACH","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@planningcenter/chat-react-native",
3
- "version": "4.0.0-rc.2",
3
+ "version": "4.0.0-rc.3",
4
4
  "description": "",
5
5
  "repository": {
6
6
  "type": "git",
@@ -84,5 +84,5 @@
84
84
  "sf-symbols-typescript": "^2.2.0",
85
85
  "typescript": "~6.0.3"
86
86
  },
87
- "gitHead": "a2abb21eb88d716a20e3bd15736be0ac4b8f6ea4"
87
+ "gitHead": "922e1838f9f8a5fb56cce9d7be861e9286a855d9"
88
88
  }
@@ -32,15 +32,24 @@ import { EmojiTab } from './emoji_tab'
32
32
  import { IconGrid } from './icon_grid'
33
33
  import { UploadTab } from './upload_tab'
34
34
 
35
+ // On iPad a native formSheet is a fixed-size centered sheet whose content gets
36
+ // laid out against the window instead of the sheet, clipping the bottom of the
37
+ // picker (CHAT-246) — present as a regular modal there instead.
38
+ const isPad = Platform.OS === 'ios' && Platform.isPad
39
+ const presentation = Platform.select({
40
+ android: 'modal' as const,
41
+ ios: isPad ? ('modal' as const) : ('formSheet' as const),
42
+ })
43
+
35
44
  export const AvatarPickerScreenOptions = getFormSheetScreenOptions({
36
45
  headerTitle: 'Update avatar',
37
- presentation: Platform.select({ android: 'modal', ios: 'formSheet' }),
46
+ presentation,
38
47
  sheetAllowedDetents: [1],
39
48
  })
40
49
 
41
50
  export const AvatarPickerCreateScreenOptions = getFormSheetScreenOptions({
42
51
  headerTitle: 'Choose avatar',
43
- presentation: Platform.select({ android: 'modal', ios: 'formSheet' }),
52
+ presentation,
44
53
  sheetAllowedDetents: [1],
45
54
  })
46
55