@0610studio/zs-ui 0.0.32 → 0.0.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/build/model/useNotifyProvider.d.ts.map +1 -1
  2. package/build/model/useNotifyProvider.js +2 -3
  3. package/build/model/useNotifyProvider.js.map +1 -1
  4. package/build/notify/BottomSheetNotify/index.d.ts.map +1 -1
  5. package/build/notify/BottomSheetNotify/index.js +4 -3
  6. package/build/notify/BottomSheetNotify/index.js.map +1 -1
  7. package/build/notify/BottomSheetNotify/ui/ContentsComponent/index.d.ts +2 -1
  8. package/build/notify/BottomSheetNotify/ui/ContentsComponent/index.d.ts.map +1 -1
  9. package/build/notify/BottomSheetNotify/ui/ContentsComponent/index.js +17 -17
  10. package/build/notify/BottomSheetNotify/ui/ContentsComponent/index.js.map +1 -1
  11. package/build/ui/ZSBottomButton/index.d.ts.map +1 -1
  12. package/build/ui/ZSBottomButton/index.js +17 -22
  13. package/build/ui/ZSBottomButton/index.js.map +1 -1
  14. package/build/ui/ZSContainer/index.d.ts.map +1 -1
  15. package/build/ui/ZSContainer/index.js +3 -2
  16. package/build/ui/ZSContainer/index.js.map +1 -1
  17. package/build/ui/ZSTextField/index.d.ts +3 -1
  18. package/build/ui/ZSTextField/index.d.ts.map +1 -1
  19. package/build/ui/ZSTextField/index.js +4 -5
  20. package/build/ui/ZSTextField/index.js.map +1 -1
  21. package/package.json +1 -1
  22. package/build/ZsUi.types.d.ts +0 -7
  23. package/build/ZsUi.types.d.ts.map +0 -1
  24. package/build/ZsUi.types.js +0 -2
  25. package/build/ZsUi.types.js.map +0 -1
  26. package/build/ZsUiModule.d.ts +0 -3
  27. package/build/ZsUiModule.d.ts.map +0 -1
  28. package/build/ZsUiModule.js +0 -5
  29. package/build/ZsUiModule.js.map +0 -1
  30. package/build/ZsUiModule.web.d.ts +0 -7
  31. package/build/ZsUiModule.web.d.ts.map +0 -1
  32. package/build/ZsUiModule.web.js +0 -12
  33. package/build/ZsUiModule.web.js.map +0 -1
  34. package/build/ZsUiView.d.ts +0 -4
  35. package/build/ZsUiView.d.ts.map +0 -1
  36. package/build/ZsUiView.js +0 -7
  37. package/build/ZsUiView.js.map +0 -1
  38. package/build/ZsUiView.web.d.ts +0 -4
  39. package/build/ZsUiView.web.d.ts.map +0 -1
  40. package/build/ZsUiView.web.js +0 -7
  41. package/build/ZsUiView.web.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"useNotifyProvider.d.ts","sourceRoot":"","sources":["../../src/model/useNotifyProvider.tsx"],"names":[],"mappings":"AAGA,OAAO,EAA4C,mBAAmB,EAAwF,MAAM,SAAS,CAAC;AAS9K,wBAAgB,cAAc,CAAC,EAC3B,cAAc,EACd,eAAe,EACf,QAAQ,EACX,EAAE,mBAAmB,+BAkPrB"}
1
+ {"version":3,"file":"useNotifyProvider.d.ts","sourceRoot":"","sources":["../../src/model/useNotifyProvider.tsx"],"names":[],"mappings":"AAGA,OAAO,EAA4C,mBAAmB,EAAwF,MAAM,SAAS,CAAC;AAO9K,wBAAgB,cAAc,CAAC,EAC3B,cAAc,EACd,eAAe,EACf,QAAQ,EACX,EAAE,mBAAmB,+BAkPrB"}
@@ -1,12 +1,11 @@
1
1
  import { useCallback, useRef, useState } from 'react';
2
- import { Dimensions, Keyboard } from 'react-native';
2
+ import { Keyboard } from 'react-native';
3
3
  import NotifyContext from './useNotify';
4
4
  import AlertNotify from '../notify/AlertNotify';
5
5
  import SnackbarNotify from '../notify/SnackbarNotify';
6
6
  import BottomSheetNotify from '../notify/BottomSheetNotify';
7
7
  import LoadingNotify from '../notify/LoadingNotify';
8
8
  import PopOverMenu from '../notify/PopOver/PopOverMenu';
9
- const BS_MAX_HEIGHT = Dimensions.get('window').height - 120;
10
9
  export function NotifyProvider({ customSnackbar, loaderComponent, children }) {
11
10
  // Alert
12
11
  const [title, setTitle] = useState('');
@@ -30,7 +29,7 @@ export function NotifyProvider({ customSnackbar, loaderComponent, children }) {
30
29
  const [bottomSheetComponent, setBottomSheetComponent] = useState(false);
31
30
  const [bottomSheetPadding, setBottomSheetPadding] = useState(undefined);
32
31
  const [bottomSheetMarginX, setBottomSheetMarginX] = useState(undefined);
33
- const [bottomSheetMaxHeight, setBottomSheetMaxHeight] = useState(BS_MAX_HEIGHT);
32
+ const [bottomSheetMaxHeight, setBottomSheetMaxHeight] = useState();
34
33
  const [bottomSheetScrollView, setBottomSheetScrollView] = useState(true);
35
34
  const [isBottomRadius, setIsBottomRadius] = useState(true);
36
35
  const [handleVisible, setHandleVisible] = useState(true);
@@ -1 +1 @@
1
- {"version":3,"file":"useNotifyProvider.js","sourceRoot":"","sources":["../../src/model/useNotifyProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useCallback, useRef, useState } from 'react';\nimport { Dimensions, Keyboard, TextProps, TouchableOpacityProps } from 'react-native';\nimport NotifyContext from './useNotify';\nimport { AlertActions, BottomSheetRef, HideOption, NotifyProviderProps, PopOverMenuProps, ShowAlertProps, ShowBottomSheetProps, ShowSnackBarProps, SnackItem } from './types';\nimport AlertNotify from '../notify/AlertNotify';\nimport SnackbarNotify from '../notify/SnackbarNotify';\nimport BottomSheetNotify from '../notify/BottomSheetNotify';\nimport LoadingNotify from '../notify/LoadingNotify';\nimport PopOverMenu from '../notify/PopOver/PopOverMenu';\n\nconst BS_MAX_HEIGHT = Dimensions.get('window').height - 120;\n\nexport function NotifyProvider({\n customSnackbar,\n loaderComponent,\n children\n}: NotifyProviderProps) {\n // Alert\n const [title, setTitle] = useState<string>('');\n const [informative, setInformative] = useState<string>('');\n const [alertVisible, setAlertVisible] = useState<boolean>(false);\n const [actions, setActions] = useState<AlertActions>();\n const [isBackgroundTouchClose, setIsBackgroundTouchClose] = useState<boolean>(true);\n const [titleStyle, setTitleStyle] = useState<TextProps['style']>();\n const [informativeStyle, setInformativeStyle] = useState<TextProps['style']>();\n const [secondaryButtonStyle, setSecondaryButtonStyle] = useState<TouchableOpacityProps['style']>();\n const [primaryButtonStyle, setPrimaryButtonStyle] = useState<TouchableOpacityProps['style']>();\n const [secondaryButtonTextStyle, setSecondaryButtonTextStyle] = useState<TextProps['style']>();\n const [primaryButtonTextStyle, setPrimaryButtonTextStyle] = useState<TextProps['style']>();\n const [singleButtonTextStyle, setSingleButtonTextStyle] = useState<TextProps['style']>();\n\n // Snackbar\n const [snackItemStack, setSnackItemStack] = useState<SnackItem[]>([]);\n\n // BottomSheet\n const [contentsGestureEnable, setContentsGestureEnable] = useState<boolean>(false);\n const [bottomSheetVisible, setBottomSheetVisible] = useState<boolean>(false);\n const [bottomSheetBackgroundColor, setBottomSheetBackgroundColor] = useState<string>();\n const [bottomSheetComponent, setBottomSheetComponent] = useState<React.ReactNode>(false);\n const [bottomSheetPadding, setBottomSheetPadding] = useState<number | undefined>(undefined);\n const [bottomSheetMarginX, setBottomSheetMarginX] = useState<number | undefined>(undefined);\n const [bottomSheetMaxHeight, setBottomSheetMaxHeight] = useState<number>(BS_MAX_HEIGHT);\n const [bottomSheetScrollView, setBottomSheetScrollView] = useState<boolean>(true);\n const [isBottomRadius, setIsBottomRadius] = useState<boolean>(true);\n const [handleVisible, setHandleVisible] = useState<boolean>(true);\n const [marginBottomBS, setMarginBottomBs] = useState<number | undefined>(undefined);\n const [showsVerticalScrollIndicator, setShowsVerticalScrollIndicator] = useState<boolean>(false);\n const [headerComponent, setHeaderComponent] = useState<React.ReactNode | undefined>(undefined);\n const bottomSheetRef = useRef<BottomSheetRef | null>(null);\n\n // Loading\n const [loaderVisible, setLoaderVisible] = useState<boolean>(false);\n\n // PopOver\n const [popOverVisible, setPopOverVisible] = useState<boolean>(false);\n const [popOverLocation, setPopOverLocation] = useState<{ px: PopOverMenuProps['px'], py: PopOverMenuProps['py'] }>({ px: 0, py: 0 });\n const [popOverComponent, setPopOverComponent] = useState<React.ReactNode>(false);\n\n // ---\n const [fontFamily, setFontFamily] = useState<string | undefined | { title?: string; info?: string; label?: string; }>(undefined);\n\n\n const showAlert = ({\n title,\n informative,\n actions,\n isBackgroundTouchClose = true,\n titleStyle,\n informativeStyle,\n secondaryButtonStyle,\n primaryButtonStyle,\n secondaryButtonTextStyle,\n primaryButtonTextStyle,\n singleButtonTextStyle,\n }: ShowAlertProps) => {\n Keyboard.dismiss();\n setTitle(title);\n setInformative(informative);\n setActions(actions || {} as AlertActions);\n setIsBackgroundTouchClose(isBackgroundTouchClose);\n setAlertVisible(true);\n\n setTitleStyle(titleStyle);\n setInformativeStyle(informativeStyle);\n setSecondaryButtonStyle(secondaryButtonStyle);\n setPrimaryButtonStyle(primaryButtonStyle);\n setSecondaryButtonTextStyle(secondaryButtonTextStyle);\n setPrimaryButtonTextStyle(primaryButtonTextStyle);\n setSingleButtonTextStyle(singleButtonTextStyle);\n\n setFontFamily(fontFamily);\n };\n\n const showBottomSheet = ({\n isHandleVisible = true,\n component,\n contentsGestureEnable = true,\n marginHorizontal,\n padding,\n marginBottom,\n backgroundColor,\n isBottomRadius = true,\n maxHeight,\n isScrollView = true,\n showsVerticalScrollIndicator = false,\n headerComponent = undefined\n }: ShowBottomSheetProps) => {\n Keyboard.dismiss();\n padding && setBottomSheetPadding(padding);\n marginBottom && setMarginBottomBs(marginBottom);\n marginHorizontal && setBottomSheetMarginX(marginHorizontal);\n backgroundColor && setBottomSheetBackgroundColor(backgroundColor);\n maxHeight && setBottomSheetMaxHeight(maxHeight);\n setShowsVerticalScrollIndicator(showsVerticalScrollIndicator);\n setHeaderComponent(headerComponent);\n setContentsGestureEnable(contentsGestureEnable);\n setHandleVisible(isHandleVisible);\n setBottomSheetScrollView(isScrollView);\n setIsBottomRadius(isBottomRadius);\n setBottomSheetComponent(component);\n bottomSheetRef.current?.handleVisible(true);\n };\n\n const showLoader = () => {\n setLoaderVisible(true);\n };\n\n const showPopOverMenu = ({\n px,\n py,\n component\n }: PopOverMenuProps) => {\n setPopOverLocation({ px, py });\n setPopOverComponent(component);\n setPopOverVisible(true);\n }\n\n const showSnackBar = ({\n message,\n type = 'success',\n index = Date.now(),\n snackbarDuration = 3000\n }: ShowSnackBarProps) => {\n // TODO: 스택 쌓고싶은데 삭제될 때 참조를 잃어서 삭제가 안되는 문제가 있음.\n setSnackItemStack((prev) => {\n if (prev.length === 0) {\n return [...prev, { message, type, index: index, snackbarDuration: snackbarDuration }];\n } else {\n return prev;\n };\n });\n };\n\n const hideSnackBar = (index: number) => {\n setSnackItemStack((prev) => prev.filter((item) => item.index !== index));\n };\n\n const hideNotify = useCallback((option: HideOption) => {\n switch (option) {\n case 'alert':\n setAlertVisible(false);\n break;\n case 'snack':\n setSnackItemStack([]);\n break;\n case 'bottomSheet':\n bottomSheetRef.current?.handleVisible(false);\n break;\n case 'loader':\n setLoaderVisible(false);\n break;\n case 'popOver':\n setPopOverVisible(false);\n break;\n case 'all':\n setAlertVisible(false);\n setSnackItemStack([]);\n setLoaderVisible(false);\n setPopOverVisible(false);\n bottomSheetRef.current?.handleVisible(false);\n break;\n default:\n break;\n };\n }, []);\n\n\n return (\n <NotifyContext.Provider value={{\n alertVisible,\n setAlertVisible,\n // ---\n snackItemStack,\n hideSnackBar,\n // ---\n bottomSheetVisible,\n setBottomSheetVisible,\n // ---\n loaderVisible,\n // ---\n popOverVisible,\n setPopOverVisible,\n // ---\n showAlert,\n showSnackBar,\n showBottomSheet,\n showLoader,\n showPopOverMenu,\n // ---\n hideNotify,\n }}>\n {children}\n\n <BottomSheetNotify\n ref={bottomSheetRef}\n bottomSheetComponent={bottomSheetComponent}\n contentsGestureEnable={contentsGestureEnable}\n bottomSheetPadding={bottomSheetPadding}\n marginBottomBS={marginBottomBS}\n isHandleVisible={handleVisible}\n bottomSheetMarginX={bottomSheetMarginX}\n isBottomRadius={isBottomRadius}\n bottomSheetBackgroundColor={bottomSheetBackgroundColor}\n maxHeight={bottomSheetMaxHeight}\n isScrollView={bottomSheetScrollView}\n showsVerticalScrollIndicator={showsVerticalScrollIndicator}\n headerComponent={headerComponent}\n />\n\n <PopOverMenu\n px={popOverLocation?.px}\n py={popOverLocation?.py}\n component={popOverComponent}\n />\n\n <SnackbarNotify\n customSnackbar={customSnackbar}\n />\n\n <AlertNotify\n title={title}\n informative={informative}\n actions={actions || {} as AlertActions}\n isBackgroundTouchClose={isBackgroundTouchClose}\n titleStyle={titleStyle}\n informativeStyle={informativeStyle}\n secondaryButtonStyle={secondaryButtonStyle}\n primaryButtonStyle={primaryButtonStyle}\n secondaryButtonTextStyle={secondaryButtonTextStyle}\n primaryButtonTextStyle={primaryButtonTextStyle}\n singleButtonTextStyle={singleButtonTextStyle}\n />\n\n <LoadingNotify\n loaderComponent={loaderComponent}\n />\n </NotifyContext.Provider>\n );\n}\n"]}
1
+ {"version":3,"file":"useNotifyProvider.js","sourceRoot":"","sources":["../../src/model/useNotifyProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useCallback, useRef, useState } from 'react';\nimport { Dimensions, Keyboard, TextProps, TouchableOpacityProps } from 'react-native';\nimport NotifyContext from './useNotify';\nimport { AlertActions, BottomSheetRef, HideOption, NotifyProviderProps, PopOverMenuProps, ShowAlertProps, ShowBottomSheetProps, ShowSnackBarProps, SnackItem } from './types';\nimport AlertNotify from '../notify/AlertNotify';\nimport SnackbarNotify from '../notify/SnackbarNotify';\nimport BottomSheetNotify from '../notify/BottomSheetNotify';\nimport LoadingNotify from '../notify/LoadingNotify';\nimport PopOverMenu from '../notify/PopOver/PopOverMenu';\n\nexport function NotifyProvider({\n customSnackbar,\n loaderComponent,\n children\n}: NotifyProviderProps) {\n // Alert\n const [title, setTitle] = useState<string>('');\n const [informative, setInformative] = useState<string>('');\n const [alertVisible, setAlertVisible] = useState<boolean>(false);\n const [actions, setActions] = useState<AlertActions>();\n const [isBackgroundTouchClose, setIsBackgroundTouchClose] = useState<boolean>(true);\n const [titleStyle, setTitleStyle] = useState<TextProps['style']>();\n const [informativeStyle, setInformativeStyle] = useState<TextProps['style']>();\n const [secondaryButtonStyle, setSecondaryButtonStyle] = useState<TouchableOpacityProps['style']>();\n const [primaryButtonStyle, setPrimaryButtonStyle] = useState<TouchableOpacityProps['style']>();\n const [secondaryButtonTextStyle, setSecondaryButtonTextStyle] = useState<TextProps['style']>();\n const [primaryButtonTextStyle, setPrimaryButtonTextStyle] = useState<TextProps['style']>();\n const [singleButtonTextStyle, setSingleButtonTextStyle] = useState<TextProps['style']>();\n\n // Snackbar\n const [snackItemStack, setSnackItemStack] = useState<SnackItem[]>([]);\n\n // BottomSheet\n const [contentsGestureEnable, setContentsGestureEnable] = useState<boolean>(false);\n const [bottomSheetVisible, setBottomSheetVisible] = useState<boolean>(false);\n const [bottomSheetBackgroundColor, setBottomSheetBackgroundColor] = useState<string>();\n const [bottomSheetComponent, setBottomSheetComponent] = useState<React.ReactNode>(false);\n const [bottomSheetPadding, setBottomSheetPadding] = useState<number | undefined>(undefined);\n const [bottomSheetMarginX, setBottomSheetMarginX] = useState<number | undefined>(undefined);\n const [bottomSheetMaxHeight, setBottomSheetMaxHeight] = useState<number>();\n const [bottomSheetScrollView, setBottomSheetScrollView] = useState<boolean>(true);\n const [isBottomRadius, setIsBottomRadius] = useState<boolean>(true);\n const [handleVisible, setHandleVisible] = useState<boolean>(true);\n const [marginBottomBS, setMarginBottomBs] = useState<number | undefined>(undefined);\n const [showsVerticalScrollIndicator, setShowsVerticalScrollIndicator] = useState<boolean>(false);\n const [headerComponent, setHeaderComponent] = useState<React.ReactNode | undefined>(undefined);\n const bottomSheetRef = useRef<BottomSheetRef | null>(null);\n\n // Loading\n const [loaderVisible, setLoaderVisible] = useState<boolean>(false);\n\n // PopOver\n const [popOverVisible, setPopOverVisible] = useState<boolean>(false);\n const [popOverLocation, setPopOverLocation] = useState<{ px: PopOverMenuProps['px'], py: PopOverMenuProps['py'] }>({ px: 0, py: 0 });\n const [popOverComponent, setPopOverComponent] = useState<React.ReactNode>(false);\n\n // ---\n const [fontFamily, setFontFamily] = useState<string | undefined | { title?: string; info?: string; label?: string; }>(undefined);\n\n\n const showAlert = ({\n title,\n informative,\n actions,\n isBackgroundTouchClose = true,\n titleStyle,\n informativeStyle,\n secondaryButtonStyle,\n primaryButtonStyle,\n secondaryButtonTextStyle,\n primaryButtonTextStyle,\n singleButtonTextStyle,\n }: ShowAlertProps) => {\n Keyboard.dismiss();\n setTitle(title);\n setInformative(informative);\n setActions(actions || {} as AlertActions);\n setIsBackgroundTouchClose(isBackgroundTouchClose);\n setAlertVisible(true);\n\n setTitleStyle(titleStyle);\n setInformativeStyle(informativeStyle);\n setSecondaryButtonStyle(secondaryButtonStyle);\n setPrimaryButtonStyle(primaryButtonStyle);\n setSecondaryButtonTextStyle(secondaryButtonTextStyle);\n setPrimaryButtonTextStyle(primaryButtonTextStyle);\n setSingleButtonTextStyle(singleButtonTextStyle);\n\n setFontFamily(fontFamily);\n };\n\n const showBottomSheet = ({\n isHandleVisible = true,\n component,\n contentsGestureEnable = true,\n marginHorizontal,\n padding,\n marginBottom,\n backgroundColor,\n isBottomRadius = true,\n maxHeight,\n isScrollView = true,\n showsVerticalScrollIndicator = false,\n headerComponent = undefined\n }: ShowBottomSheetProps) => {\n Keyboard.dismiss();\n padding && setBottomSheetPadding(padding);\n marginBottom && setMarginBottomBs(marginBottom);\n marginHorizontal && setBottomSheetMarginX(marginHorizontal);\n backgroundColor && setBottomSheetBackgroundColor(backgroundColor);\n maxHeight && setBottomSheetMaxHeight(maxHeight);\n setShowsVerticalScrollIndicator(showsVerticalScrollIndicator);\n setHeaderComponent(headerComponent);\n setContentsGestureEnable(contentsGestureEnable);\n setHandleVisible(isHandleVisible);\n setBottomSheetScrollView(isScrollView);\n setIsBottomRadius(isBottomRadius);\n setBottomSheetComponent(component);\n bottomSheetRef.current?.handleVisible(true);\n };\n\n const showLoader = () => {\n setLoaderVisible(true);\n };\n\n const showPopOverMenu = ({\n px,\n py,\n component\n }: PopOverMenuProps) => {\n setPopOverLocation({ px, py });\n setPopOverComponent(component);\n setPopOverVisible(true);\n }\n\n const showSnackBar = ({\n message,\n type = 'success',\n index = Date.now(),\n snackbarDuration = 3000\n }: ShowSnackBarProps) => {\n // TODO: 스택 쌓고싶은데 삭제될 때 참조를 잃어서 삭제가 안되는 문제가 있음.\n setSnackItemStack((prev) => {\n if (prev.length === 0) {\n return [...prev, { message, type, index: index, snackbarDuration: snackbarDuration }];\n } else {\n return prev;\n };\n });\n };\n\n const hideSnackBar = (index: number) => {\n setSnackItemStack((prev) => prev.filter((item) => item.index !== index));\n };\n\n const hideNotify = useCallback((option: HideOption) => {\n switch (option) {\n case 'alert':\n setAlertVisible(false);\n break;\n case 'snack':\n setSnackItemStack([]);\n break;\n case 'bottomSheet':\n bottomSheetRef.current?.handleVisible(false);\n break;\n case 'loader':\n setLoaderVisible(false);\n break;\n case 'popOver':\n setPopOverVisible(false);\n break;\n case 'all':\n setAlertVisible(false);\n setSnackItemStack([]);\n setLoaderVisible(false);\n setPopOverVisible(false);\n bottomSheetRef.current?.handleVisible(false);\n break;\n default:\n break;\n };\n }, []);\n\n\n return (\n <NotifyContext.Provider value={{\n alertVisible,\n setAlertVisible,\n // ---\n snackItemStack,\n hideSnackBar,\n // ---\n bottomSheetVisible,\n setBottomSheetVisible,\n // ---\n loaderVisible,\n // ---\n popOverVisible,\n setPopOverVisible,\n // ---\n showAlert,\n showSnackBar,\n showBottomSheet,\n showLoader,\n showPopOverMenu,\n // ---\n hideNotify,\n }}>\n {children}\n\n <BottomSheetNotify\n ref={bottomSheetRef}\n bottomSheetComponent={bottomSheetComponent}\n contentsGestureEnable={contentsGestureEnable}\n bottomSheetPadding={bottomSheetPadding}\n marginBottomBS={marginBottomBS}\n isHandleVisible={handleVisible}\n bottomSheetMarginX={bottomSheetMarginX}\n isBottomRadius={isBottomRadius}\n bottomSheetBackgroundColor={bottomSheetBackgroundColor}\n maxHeight={bottomSheetMaxHeight}\n isScrollView={bottomSheetScrollView}\n showsVerticalScrollIndicator={showsVerticalScrollIndicator}\n headerComponent={headerComponent}\n />\n\n <PopOverMenu\n px={popOverLocation?.px}\n py={popOverLocation?.py}\n component={popOverComponent}\n />\n\n <SnackbarNotify\n customSnackbar={customSnackbar}\n />\n\n <AlertNotify\n title={title}\n informative={informative}\n actions={actions || {} as AlertActions}\n isBackgroundTouchClose={isBackgroundTouchClose}\n titleStyle={titleStyle}\n informativeStyle={informativeStyle}\n secondaryButtonStyle={secondaryButtonStyle}\n primaryButtonStyle={primaryButtonStyle}\n secondaryButtonTextStyle={secondaryButtonTextStyle}\n primaryButtonTextStyle={primaryButtonTextStyle}\n singleButtonTextStyle={singleButtonTextStyle}\n />\n\n <LoadingNotify\n loaderComponent={loaderComponent}\n />\n </NotifyContext.Provider>\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/notify/BottomSheetNotify/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AACxE,OAAO,EAA0B,SAAS,EAAY,MAAM,cAAc,CAAC;AAI3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAU/C,UAAU,KAAM,SAAQ,SAAS;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oBAAoB,EAAE,KAAK,CAAC,SAAS,CAAC;IACtC,4BAA4B,EAAE,OAAO,CAAC;IACtC,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACnC;;AAmJD,wBAA6C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/notify/BottomSheetNotify/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AACxE,OAAO,EAA0B,SAAS,EAAY,MAAM,cAAc,CAAC;AAI3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAW/C,UAAU,KAAM,SAAQ,SAAS;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oBAAoB,EAAE,KAAK,CAAC,SAAS,CAAC;IACtC,4BAA4B,EAAE,OAAO,CAAC;IACtC,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACnC;;AAoJD,wBAA6C"}
@@ -7,8 +7,9 @@ import ContentsComponent from './ui/ContentsComponent';
7
7
  import { useTheme } from '../../model/useThemeProvider';
8
8
  import ViewAtom from '../../ui/atoms/ViewAtom';
9
9
  import { ZSView } from '../../ui';
10
+ import { useSafeAreaInsets } from 'react-native-safe-area-context';
10
11
  const DEFAULT_BORDER_RADIUS = 24;
11
- const BS_MAX_HEIGHT = Dimensions.get('window').height - 120;
12
+ const BS_MAX_HEIGHT = Dimensions.get('window').height - 80;
12
13
  function BottomSheetNotify(props, ref) {
13
14
  const { marginBottomBS = 15, bottomSheetPadding = 20, bottomSheetBackgroundColor, closeOffset = Dimensions.get('window').height, contentsGestureEnable = true, isHandleVisible = true, bottomSheetMarginX = 10, isBottomRadius = true, isScrollView = true, maxHeight = BS_MAX_HEIGHT, bottomSheetComponent, showsVerticalScrollIndicator, headerComponent } = props;
14
15
  const { HANDLE_HEIGHT, bottomSheetVisible, bsAnimatedStyle, onGestureEvent, handleVisible, onTapEvent, openPosition, screenWidth, screenHeight, panGestureRef, listScrollPosition, bsModalBgStyle, backgroundPressHandler } = useBottomSheetNotify({
@@ -19,6 +20,7 @@ function BottomSheetNotify(props, ref) {
19
20
  isHandleVisible,
20
21
  });
21
22
  const { palette: { background } } = useTheme();
23
+ const { bottom, top } = useSafeAreaInsets();
22
24
  const styles = useMemo(() => createStyles({ background }), [background]);
23
25
  useImperativeHandle(ref, () => ({
24
26
  handleVisible,
@@ -35,7 +37,6 @@ function BottomSheetNotify(props, ref) {
35
37
  {
36
38
  width: screenWidth,
37
39
  height: screenHeight,
38
- paddingHorizontal: bottomSheetPadding,
39
40
  left: bottomSheetMarginX,
40
41
  right: bottomSheetMarginX,
41
42
  borderTopLeftRadius: DEFAULT_BORDER_RADIUS,
@@ -51,7 +52,7 @@ function BottomSheetNotify(props, ref) {
51
52
  </ZSView>)}
52
53
 
53
54
  <GestureDetector gesture={onTapEvent}>
54
- <ContentsComponent HANDLE_HEIGHT={HANDLE_HEIGHT} panGestureRef={panGestureRef} listScrollPosition={listScrollPosition} openPosition={openPosition} marginBottomBS={marginBottomBS} screenHeight={screenHeight} bottomSheetComponent={bottomSheetComponent} bottomSheetPadding={bottomSheetPadding} maxHeight={maxHeight} isScrollView={isScrollView} showsVerticalScrollIndicator={showsVerticalScrollIndicator} headerComponent={headerComponent}/>
55
+ <ContentsComponent HANDLE_HEIGHT={HANDLE_HEIGHT} panGestureRef={panGestureRef} listScrollPosition={listScrollPosition} openPosition={openPosition} marginBottomBS={marginBottomBS} screenHeight={screenHeight} bottomSheetComponent={bottomSheetComponent} bottomSheetPadding={bottomSheetPadding} maxHeight={maxHeight - bottom - top - marginBottomBS - bottomSheetMarginX} isScrollView={isScrollView} showsVerticalScrollIndicator={showsVerticalScrollIndicator} headerComponent={headerComponent} paddingHorizontal={bottomSheetPadding}/>
55
56
  </GestureDetector>
56
57
  </Animated.View>
57
58
  </GestureDetector>
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/notify/BottomSheetNotify/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { forwardRef, useImperativeHandle, useMemo } from 'react';\nimport { StyleSheet, Dimensions, ViewProps, Keyboard } from 'react-native';\nimport { GestureDetector, GestureHandlerRootView } from 'react-native-gesture-handler';\nimport Animated, { FadeIn, FadeOut } from 'react-native-reanimated';\nimport useBottomSheetNotify from './model/useBottomSheetNotify';\nimport { BottomSheetNotifyRef } from './types';\nimport ContentsComponent from './ui/ContentsComponent';\nimport { useTheme } from '../../model/useThemeProvider';\nimport { ThemeBackground } from '../../theme';\nimport ViewAtom from '../../ui/atoms/ViewAtom';\nimport { ZSView } from '../../ui';\n\nconst DEFAULT_BORDER_RADIUS = 24;\nconst BS_MAX_HEIGHT = Dimensions.get('window').height - 120;\n\ninterface Props extends ViewProps {\n marginBottomBS?: number;\n bottomSheetBackgroundColor?: string;\n bottomSheetPadding?: number;\n closeOffset?: number;\n contentsGestureEnable?: boolean;\n isHandleVisible?: boolean;\n bottomSheetMarginX?: number;\n isBottomRadius?: boolean;\n maxHeight?: number;\n isScrollView?: boolean;\n bottomSheetComponent: React.ReactNode;\n showsVerticalScrollIndicator: boolean;\n headerComponent?: React.ReactNode;\n}\n\nfunction BottomSheetNotify(props: Props, ref: React.Ref<BottomSheetNotifyRef>) {\n const {\n marginBottomBS = 15,\n bottomSheetPadding = 20,\n bottomSheetBackgroundColor,\n closeOffset = Dimensions.get('window').height,\n contentsGestureEnable = true,\n isHandleVisible = true,\n bottomSheetMarginX = 10,\n isBottomRadius = true,\n isScrollView = true,\n maxHeight = BS_MAX_HEIGHT,\n bottomSheetComponent,\n showsVerticalScrollIndicator,\n headerComponent\n } = props;\n\n const {\n HANDLE_HEIGHT,\n bottomSheetVisible,\n bsAnimatedStyle,\n onGestureEvent,\n handleVisible,\n onTapEvent,\n openPosition,\n screenWidth,\n screenHeight,\n panGestureRef,\n listScrollPosition,\n bsModalBgStyle,\n backgroundPressHandler\n } = useBottomSheetNotify({\n bottomSheetPadding,\n closeOffset,\n contentsGestureEnable,\n bottomSheetMarginX,\n isHandleVisible,\n });\n\n const { palette: { background } } = useTheme();\n\n const styles = useMemo(\n () => createStyles({ background }),\n [background]\n );\n\n useImperativeHandle(ref, () => ({\n handleVisible,\n }));\n\n return bottomSheetVisible && bottomSheetComponent ? (\n <Animated.View\n style={[styles.modalBg, bsModalBgStyle]}\n entering={FadeIn.duration(50)}\n exiting={FadeOut.duration(50)}\n onTouchEnd={backgroundPressHandler} // 외부 터치 시 시트 닫기\n >\n <GestureHandlerRootView style={styles.rootViewWrapper}>\n <GestureDetector gesture={onGestureEvent}>\n <Animated.View\n onTouchEnd={(e) => {\n e.stopPropagation();\n Keyboard.dismiss(); // 키보드 숨김\n }}\n style={[\n styles.sheet,\n {\n width: screenWidth,\n height: screenHeight,\n paddingHorizontal: bottomSheetPadding,\n left: bottomSheetMarginX,\n right: bottomSheetMarginX,\n borderTopLeftRadius: DEFAULT_BORDER_RADIUS,\n borderTopRightRadius: DEFAULT_BORDER_RADIUS,\n borderBottomLeftRadius: isBottomRadius ? DEFAULT_BORDER_RADIUS : 0,\n borderBottomRightRadius: isBottomRadius ? DEFAULT_BORDER_RADIUS : 0,\n backgroundColor: bottomSheetBackgroundColor || background.base,\n },\n bsAnimatedStyle, // 애니메이션 스타일 적용\n ]}\n >\n {isHandleVisible && (\n <ZSView style={[styles.handleContainer, { height: HANDLE_HEIGHT }]}>\n <ViewAtom style={styles.handle} />\n </ZSView>\n )}\n\n <GestureDetector gesture={onTapEvent}>\n <ContentsComponent\n HANDLE_HEIGHT={HANDLE_HEIGHT}\n panGestureRef={panGestureRef}\n listScrollPosition={listScrollPosition}\n openPosition={openPosition}\n marginBottomBS={marginBottomBS}\n screenHeight={screenHeight}\n bottomSheetComponent={bottomSheetComponent}\n bottomSheetPadding={bottomSheetPadding}\n maxHeight={maxHeight}\n isScrollView={isScrollView}\n showsVerticalScrollIndicator={showsVerticalScrollIndicator}\n headerComponent={headerComponent}\n />\n </GestureDetector>\n </Animated.View>\n </GestureDetector>\n </GestureHandlerRootView>\n </Animated.View>\n ) : null;\n}\n\n\nconst createStyles = ({\n background,\n}: {\n background: ThemeBackground;\n}) =>\n StyleSheet.create({\n modalBg: {\n position: 'absolute',\n width: Dimensions.get('window').width,\n height: Dimensions.get('window').height,\n bottom: 0,\n },\n sheet: {\n position: 'absolute',\n zIndex: 9000,\n overflow: 'hidden',\n },\n handleContainer: {\n width: '100%',\n alignItems: 'center',\n paddingTop: 13,\n },\n handle: {\n backgroundColor: background.layer2,\n width: 50,\n height: 4,\n borderRadius: 2,\n },\n rootViewWrapper: {\n width: '100%',\n height: '100%',\n },\n });\n\nexport default forwardRef(BottomSheetNotify);\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/notify/BottomSheetNotify/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { forwardRef, useImperativeHandle, useMemo } from 'react';\nimport { StyleSheet, Dimensions, ViewProps, Keyboard } from 'react-native';\nimport { GestureDetector, GestureHandlerRootView } from 'react-native-gesture-handler';\nimport Animated, { FadeIn, FadeOut } from 'react-native-reanimated';\nimport useBottomSheetNotify from './model/useBottomSheetNotify';\nimport { BottomSheetNotifyRef } from './types';\nimport ContentsComponent from './ui/ContentsComponent';\nimport { useTheme } from '../../model/useThemeProvider';\nimport { ThemeBackground } from '../../theme';\nimport ViewAtom from '../../ui/atoms/ViewAtom';\nimport { ZSView } from '../../ui';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nconst DEFAULT_BORDER_RADIUS = 24;\nconst BS_MAX_HEIGHT = Dimensions.get('window').height - 80;\n\ninterface Props extends ViewProps {\n marginBottomBS?: number;\n bottomSheetBackgroundColor?: string;\n bottomSheetPadding?: number;\n closeOffset?: number;\n contentsGestureEnable?: boolean;\n isHandleVisible?: boolean;\n bottomSheetMarginX?: number;\n isBottomRadius?: boolean;\n maxHeight?: number;\n isScrollView?: boolean;\n bottomSheetComponent: React.ReactNode;\n showsVerticalScrollIndicator: boolean;\n headerComponent?: React.ReactNode;\n}\n\nfunction BottomSheetNotify(props: Props, ref: React.Ref<BottomSheetNotifyRef>) {\n const {\n marginBottomBS = 15,\n bottomSheetPadding = 20,\n bottomSheetBackgroundColor,\n closeOffset = Dimensions.get('window').height,\n contentsGestureEnable = true,\n isHandleVisible = true,\n bottomSheetMarginX = 10,\n isBottomRadius = true,\n isScrollView = true,\n maxHeight = BS_MAX_HEIGHT,\n bottomSheetComponent,\n showsVerticalScrollIndicator,\n headerComponent\n } = props;\n\n const {\n HANDLE_HEIGHT,\n bottomSheetVisible,\n bsAnimatedStyle,\n onGestureEvent,\n handleVisible,\n onTapEvent,\n openPosition,\n screenWidth,\n screenHeight,\n panGestureRef,\n listScrollPosition,\n bsModalBgStyle,\n backgroundPressHandler\n } = useBottomSheetNotify({\n bottomSheetPadding,\n closeOffset,\n contentsGestureEnable,\n bottomSheetMarginX,\n isHandleVisible,\n });\n\n const { palette: { background } } = useTheme();\n const { bottom, top } = useSafeAreaInsets();\n\n const styles = useMemo(\n () => createStyles({ background }),\n [background]\n );\n\n useImperativeHandle(ref, () => ({\n handleVisible,\n }));\n\n return bottomSheetVisible && bottomSheetComponent ? (\n <Animated.View\n style={[styles.modalBg, bsModalBgStyle]}\n entering={FadeIn.duration(50)}\n exiting={FadeOut.duration(50)}\n onTouchEnd={backgroundPressHandler} // 외부 터치 시 시트 닫기\n >\n <GestureHandlerRootView style={styles.rootViewWrapper}>\n <GestureDetector gesture={onGestureEvent}>\n <Animated.View\n onTouchEnd={(e) => {\n e.stopPropagation();\n Keyboard.dismiss(); // 키보드 숨김\n }}\n style={[\n styles.sheet,\n {\n width: screenWidth,\n height: screenHeight,\n left: bottomSheetMarginX,\n right: bottomSheetMarginX,\n borderTopLeftRadius: DEFAULT_BORDER_RADIUS,\n borderTopRightRadius: DEFAULT_BORDER_RADIUS,\n borderBottomLeftRadius: isBottomRadius ? DEFAULT_BORDER_RADIUS : 0,\n borderBottomRightRadius: isBottomRadius ? DEFAULT_BORDER_RADIUS : 0,\n backgroundColor: bottomSheetBackgroundColor || background.base,\n },\n bsAnimatedStyle, // 애니메이션 스타일 적용\n ]}\n >\n {isHandleVisible && (\n <ZSView style={[styles.handleContainer, { height: HANDLE_HEIGHT }]}>\n <ViewAtom style={styles.handle} />\n </ZSView>\n )}\n\n <GestureDetector gesture={onTapEvent}>\n <ContentsComponent\n HANDLE_HEIGHT={HANDLE_HEIGHT}\n panGestureRef={panGestureRef}\n listScrollPosition={listScrollPosition}\n openPosition={openPosition}\n marginBottomBS={marginBottomBS}\n screenHeight={screenHeight}\n bottomSheetComponent={bottomSheetComponent}\n bottomSheetPadding={bottomSheetPadding}\n maxHeight={maxHeight - bottom - top - marginBottomBS - bottomSheetMarginX}\n isScrollView={isScrollView}\n showsVerticalScrollIndicator={showsVerticalScrollIndicator}\n headerComponent={headerComponent}\n paddingHorizontal={bottomSheetPadding}\n />\n </GestureDetector>\n </Animated.View>\n </GestureDetector>\n </GestureHandlerRootView>\n </Animated.View>\n ) : null;\n}\n\n\nconst createStyles = ({\n background,\n}: {\n background: ThemeBackground;\n}) =>\n StyleSheet.create({\n modalBg: {\n position: 'absolute',\n width: Dimensions.get('window').width,\n height: Dimensions.get('window').height,\n bottom: 0,\n },\n sheet: {\n position: 'absolute',\n zIndex: 9000,\n overflow: 'hidden',\n },\n handleContainer: {\n width: '100%',\n alignItems: 'center',\n paddingTop: 13,\n },\n handle: {\n backgroundColor: background.layer2,\n width: 50,\n height: 4,\n borderRadius: 2,\n },\n rootViewWrapper: {\n width: '100%',\n height: '100%',\n },\n });\n\nexport default forwardRef(BottomSheetNotify);\n"]}
@@ -14,8 +14,9 @@ interface Props {
14
14
  isScrollView: boolean;
15
15
  showsVerticalScrollIndicator: boolean;
16
16
  headerComponent?: React.ReactNode;
17
+ paddingHorizontal?: number;
17
18
  }
18
- declare function ContentsComponent({ HANDLE_HEIGHT, panGestureRef, listScrollPosition, openPosition, marginBottomBS, screenHeight, bottomSheetComponent, bottomSheetPadding, maxHeight, isScrollView, showsVerticalScrollIndicator, headerComponent }: Props): React.JSX.Element;
19
+ declare function ContentsComponent({ HANDLE_HEIGHT, panGestureRef, listScrollPosition, openPosition, marginBottomBS, screenHeight, bottomSheetComponent, bottomSheetPadding, maxHeight, isScrollView, showsVerticalScrollIndicator, headerComponent, paddingHorizontal }: Props): React.JSX.Element;
19
20
  declare const _default: React.MemoExoticComponent<typeof ContentsComponent>;
20
21
  export default _default;
21
22
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/notify/BottomSheetNotify/ui/ContentsComponent/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAE3C,OAAO,EAAE,WAAW,EAAc,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAOtD,UAAU,KAAK;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,KAAK,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;IACnD,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACxC,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,oBAAoB,EAAE,KAAK,CAAC,SAAS,CAAC;IACtC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,4BAA4B,EAAE,OAAO,CAAC;IACtC,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACrC;AAGD,iBAAS,iBAAiB,CAAC,EACvB,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,oBAAoB,EACpB,kBAAkB,EAClB,SAAS,EACT,YAAY,EACZ,4BAA4B,EAC5B,eAAe,EAClB,EAAE,KAAK,qBA4CP;;AAED,wBAA6C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/notify/BottomSheetNotify/ui/ContentsComponent/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAErD,OAAO,EAAE,WAAW,EAAc,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAOtD,UAAU,KAAK;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,KAAK,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;IACnD,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACxC,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,oBAAoB,EAAE,KAAK,CAAC,SAAS,CAAC;IACtC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,4BAA4B,EAAE,OAAO,CAAC;IACtC,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAClC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAGD,iBAAS,iBAAiB,CAAC,EACvB,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,oBAAoB,EACpB,kBAAkB,EAClB,SAAS,EACT,YAAY,EACZ,4BAA4B,EAC5B,eAAe,EACf,iBAAiB,EACpB,EAAE,KAAK,qBAiDP;;AAED,wBAA6C"}
@@ -1,37 +1,37 @@
1
- import React, { useCallback } from 'react';
2
- import { Dimensions } from 'react-native';
1
+ import React, { useCallback, useState } from 'react';
2
+ import { Dimensions, View } from 'react-native';
3
3
  import { ScrollView } from 'react-native-gesture-handler';
4
4
  import { useSafeAreaInsets } from 'react-native-safe-area-context';
5
5
  import { ZSView } from '../../../../ui';
6
6
  // const ANDROID_STATUS_BAR_HEIGHT = Platform.OS === 'android' ? 25 : 0;
7
7
  const ANDROID_STATUS_BAR_HEIGHT = 0;
8
8
  // 화살표 함수 대신 일반 함수 사용
9
- function ContentsComponent({ HANDLE_HEIGHT, panGestureRef, listScrollPosition, openPosition, marginBottomBS, screenHeight, bottomSheetComponent, bottomSheetPadding, maxHeight, isScrollView, showsVerticalScrollIndicator, headerComponent }) {
9
+ function ContentsComponent({ HANDLE_HEIGHT, panGestureRef, listScrollPosition, openPosition, marginBottomBS, screenHeight, bottomSheetComponent, bottomSheetPadding, maxHeight, isScrollView, showsVerticalScrollIndicator, headerComponent, paddingHorizontal }) {
10
10
  const { bottom } = useSafeAreaInsets();
11
- // onLayout 함수를 useCallback으로 최적화
11
+ const [headerLazyLoading, setHeaderLazyLoading] = useState(false);
12
12
  const onLayout = useCallback((event) => {
13
13
  const { height } = event.nativeEvent.layout;
14
14
  const contentMaxHeight = maxHeight + HANDLE_HEIGHT;
15
- const resultHeight = Math.min(height, contentMaxHeight); // 더 간결하게 변경
16
- // 성능 문제 방지를 위해 runOnUI 사용
15
+ const resultHeight = Math.min(height, contentMaxHeight);
17
16
  screenHeight.value = resultHeight + HANDLE_HEIGHT;
18
17
  openPosition.value = Dimensions.get('window').height - resultHeight - marginBottomBS - bottom - ANDROID_STATUS_BAR_HEIGHT - HANDLE_HEIGHT;
18
+ setTimeout(() => {
19
+ setHeaderLazyLoading(true);
20
+ }, 500);
19
21
  }, [maxHeight, HANDLE_HEIGHT, screenHeight, openPosition, marginBottomBS, bottom]);
20
- // 현재 스크롤 위치를 관리하는 함수
22
+ // 현재 스크롤 위치
21
23
  const handleScroll = useCallback((event) => {
22
24
  listScrollPosition.value = event.nativeEvent.contentOffset.y;
23
25
  }, [listScrollPosition]);
24
- return isScrollView ? (<ScrollView simultaneousHandlers={[panGestureRef]} onScroll={handleScroll} style={{ maxHeight }} keyboardShouldPersistTaps="handled" bounces={false} bouncesZoom={false} overScrollMode="never" showsVerticalScrollIndicator={showsVerticalScrollIndicator} scrollEventThrottle={16} stickyHeaderIndices={headerComponent ? [0] : undefined}>
25
- {headerComponent && headerComponent}
26
+ return (<ZSView style={{ width: '100%', minHeight: 1, paddingBottom: bottomSheetPadding, maxHeight }} onLayout={onLayout}>
27
+ {headerComponent && headerLazyLoading && headerComponent}
26
28
 
27
- <ZSView style={{ width: '100%', minHeight: 1, paddingBottom: bottomSheetPadding }} onLayout={onLayout}>
28
- {bottomSheetComponent}
29
- </ZSView>
30
- </ScrollView>) : (<ZSView style={{ width: '100%', minHeight: 1, paddingBottom: bottomSheetPadding, maxHeight }} onLayout={onLayout}>
31
- {headerComponent && headerComponent}
32
-
33
- {bottomSheetComponent}
29
+ {isScrollView ? (<ScrollView simultaneousHandlers={[panGestureRef]} onScroll={handleScroll} style={{ maxHeight }} keyboardShouldPersistTaps="handled" bounces={false} bouncesZoom={false} overScrollMode="never" showsVerticalScrollIndicator={showsVerticalScrollIndicator} scrollEventThrottle={16} contentContainerStyle={{ paddingHorizontal }}>
30
+ {bottomSheetComponent}
31
+ </ScrollView>) : (<View style={{ paddingHorizontal }}>
32
+ {bottomSheetComponent}
33
+ </View>)}
34
34
  </ZSView>);
35
35
  }
36
- export default React.memo(ContentsComponent); // React.memo로 성능 최적화
36
+ export default React.memo(ContentsComponent);
37
37
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/notify/BottomSheetNotify/ui/ContentsComponent/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useCallback } from 'react';\nimport { Dimensions, LayoutChangeEvent, NativeScrollEvent, NativeSyntheticEvent, Text, View } from 'react-native';\nimport { GestureType, ScrollView } from 'react-native-gesture-handler';\nimport { SharedValue } from 'react-native-reanimated';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport { ZSView } from '../../../../ui';\n\n// const ANDROID_STATUS_BAR_HEIGHT = Platform.OS === 'android' ? 25 : 0;\nconst ANDROID_STATUS_BAR_HEIGHT = 0;\n\ninterface Props {\n HANDLE_HEIGHT: number;\n panGestureRef: React.MutableRefObject<GestureType>;\n listScrollPosition: SharedValue<number>;\n openPosition: SharedValue<number>;\n marginBottomBS: number;\n screenHeight: SharedValue<number>;\n bottomSheetComponent: React.ReactNode;\n bottomSheetPadding: number;\n maxHeight: number;\n isScrollView: boolean;\n showsVerticalScrollIndicator: boolean;\n headerComponent?: React.ReactNode;\n}\n\n// 화살표 함수 대신 일반 함수 사용\nfunction ContentsComponent({\n HANDLE_HEIGHT,\n panGestureRef,\n listScrollPosition,\n openPosition,\n marginBottomBS,\n screenHeight,\n bottomSheetComponent,\n bottomSheetPadding,\n maxHeight,\n isScrollView,\n showsVerticalScrollIndicator,\n headerComponent\n}: Props) {\n const { bottom } = useSafeAreaInsets();\n\n // onLayout 함수를 useCallback으로 최적화\n const onLayout = useCallback((event: LayoutChangeEvent) => {\n const { height } = event.nativeEvent.layout;\n const contentMaxHeight = maxHeight + HANDLE_HEIGHT;\n const resultHeight = Math.min(height, contentMaxHeight); // 더 간결하게 변경\n // 성능 문제 방지를 위해 runOnUI 사용\n screenHeight.value = resultHeight + HANDLE_HEIGHT;\n openPosition.value = Dimensions.get('window').height - resultHeight - marginBottomBS - bottom - ANDROID_STATUS_BAR_HEIGHT - HANDLE_HEIGHT;\n }, [maxHeight, HANDLE_HEIGHT, screenHeight, openPosition, marginBottomBS, bottom]);\n\n // 현재 스크롤 위치를 관리하는 함수\n const handleScroll = useCallback((event: NativeSyntheticEvent<NativeScrollEvent>) => {\n listScrollPosition.value = event.nativeEvent.contentOffset.y;\n }, [listScrollPosition]);\n\n return isScrollView ? (\n <ScrollView\n simultaneousHandlers={[panGestureRef]}\n onScroll={handleScroll}\n style={{ maxHeight }}\n keyboardShouldPersistTaps=\"handled\"\n bounces={false}\n bouncesZoom={false}\n overScrollMode=\"never\" \n showsVerticalScrollIndicator={showsVerticalScrollIndicator}\n scrollEventThrottle={16}\n stickyHeaderIndices={headerComponent ? [0] : undefined}\n >\n {headerComponent && headerComponent}\n\n <ZSView style={{ width: '100%', minHeight: 1, paddingBottom: bottomSheetPadding }} onLayout={onLayout}>\n {bottomSheetComponent}\n </ZSView>\n </ScrollView>\n ) : (\n <ZSView style={{ width: '100%', minHeight: 1, paddingBottom: bottomSheetPadding, maxHeight }} onLayout={onLayout}>\n {headerComponent && headerComponent}\n\n {bottomSheetComponent}\n </ZSView>\n );\n}\n\nexport default React.memo(ContentsComponent); // React.memo로 성능 최적화\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/notify/BottomSheetNotify/ui/ContentsComponent/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useCallback, useState } from 'react';\nimport { Dimensions, LayoutChangeEvent, NativeScrollEvent, NativeSyntheticEvent, View } from 'react-native';\nimport { GestureType, ScrollView } from 'react-native-gesture-handler';\nimport { SharedValue } from 'react-native-reanimated';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport { ZSView } from '../../../../ui';\n\n// const ANDROID_STATUS_BAR_HEIGHT = Platform.OS === 'android' ? 25 : 0;\nconst ANDROID_STATUS_BAR_HEIGHT = 0;\n\ninterface Props {\n HANDLE_HEIGHT: number;\n panGestureRef: React.MutableRefObject<GestureType>;\n listScrollPosition: SharedValue<number>;\n openPosition: SharedValue<number>;\n marginBottomBS: number;\n screenHeight: SharedValue<number>;\n bottomSheetComponent: React.ReactNode;\n bottomSheetPadding: number;\n maxHeight: number;\n isScrollView: boolean;\n showsVerticalScrollIndicator: boolean;\n headerComponent?: React.ReactNode;\n paddingHorizontal?: number;\n}\n\n// 화살표 함수 대신 일반 함수 사용\nfunction ContentsComponent({\n HANDLE_HEIGHT,\n panGestureRef,\n listScrollPosition,\n openPosition,\n marginBottomBS,\n screenHeight,\n bottomSheetComponent,\n bottomSheetPadding,\n maxHeight,\n isScrollView,\n showsVerticalScrollIndicator,\n headerComponent,\n paddingHorizontal\n}: Props) {\n const { bottom } = useSafeAreaInsets();\n const [headerLazyLoading, setHeaderLazyLoading] = useState(false);\n\n const onLayout = useCallback((event: LayoutChangeEvent) => {\n const { height } = event.nativeEvent.layout;\n const contentMaxHeight = maxHeight + HANDLE_HEIGHT;\n const resultHeight = Math.min(height, contentMaxHeight);\n\n screenHeight.value = resultHeight + HANDLE_HEIGHT;\n openPosition.value = Dimensions.get('window').height - resultHeight - marginBottomBS - bottom - ANDROID_STATUS_BAR_HEIGHT - HANDLE_HEIGHT;\n setTimeout(() => {\n setHeaderLazyLoading(true);\n }, 500);\n }, [maxHeight, HANDLE_HEIGHT, screenHeight, openPosition, marginBottomBS, bottom]);\n\n // 현재 스크롤 위치\n const handleScroll = useCallback((event: NativeSyntheticEvent<NativeScrollEvent>) => {\n listScrollPosition.value = event.nativeEvent.contentOffset.y;\n }, [listScrollPosition]);\n\n return (\n <ZSView style={{ width: '100%', minHeight: 1, paddingBottom: bottomSheetPadding, maxHeight }} onLayout={onLayout}>\n {headerComponent && headerLazyLoading && headerComponent}\n\n {\n isScrollView ? (\n <ScrollView\n simultaneousHandlers={[panGestureRef]}\n onScroll={handleScroll}\n style={{ maxHeight }}\n keyboardShouldPersistTaps=\"handled\"\n bounces={false}\n bouncesZoom={false}\n overScrollMode=\"never\"\n showsVerticalScrollIndicator={showsVerticalScrollIndicator}\n scrollEventThrottle={16}\n contentContainerStyle={{ paddingHorizontal }}\n >\n {bottomSheetComponent}\n </ScrollView>\n ) : (\n <View style={{ paddingHorizontal }}>\n {bottomSheetComponent}\n </View>\n )\n }\n </ZSView>\n );\n}\n\nexport default React.memo(ContentsComponent);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/ZSBottomButton/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AACnD,OAAO,EAAuE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAU1H,UAAU,KAAK;IACb,gBAAgB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;IACnC,qBAAqB,EAAE,KAAK,CAAC,SAAS,CAAC;IACvC,kBAAkB,CAAC,EAAE,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACpD,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,uBAAuB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1C,oBAAoB,CAAC,EAAE,qBAAqB,CAAC,OAAO,CAAC,CAAC;CACvD;AAED,iBAAS,cAAc,CAAC,EACtB,gBAAwC,EACxC,MAAW,EACX,QAAgB,EAChB,qBAAqB,EACrB,cAAc,EACd,kBAAuB,EACvB,gBAAgB,EAChB,uBAAuB,EACvB,oBAAyB,EAC1B,EAAE,KAAK,qBA2FP;AA0BD,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/ZSBottomButton/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAChE,OAAO,EAAuE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAS1H,UAAU,KAAK;IACb,gBAAgB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;IACnC,qBAAqB,EAAE,KAAK,CAAC,SAAS,CAAC;IACvC,kBAAkB,CAAC,EAAE,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACpD,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,uBAAuB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1C,oBAAoB,CAAC,EAAE,qBAAqB,CAAC,OAAO,CAAC,CAAC;CACvD;AAED,iBAAS,cAAc,CAAC,EACtB,gBAAwC,EACxC,MAAW,EACX,QAAgB,EAChB,qBAAqB,EACrB,cAAc,EACd,kBAAuB,EACvB,gBAAgB,EAChB,uBAAuB,EACvB,oBAAyB,EAC1B,EAAE,KAAK,qBAuFP;AA0BD,eAAe,cAAc,CAAC"}
@@ -1,9 +1,8 @@
1
- import React, { useEffect, useState } from "react";
1
+ import React, { useCallback, useEffect, useState } from "react";
2
2
  import { ActivityIndicator, Keyboard, Platform, StyleSheet, TouchableOpacity } from "react-native";
3
3
  import Animated, { interpolate, useAnimatedStyle, useSharedValue, withTiming } from "react-native-reanimated";
4
- import { withPromise } from "../../model/utils";
4
+ import { useSafeAreaInsets } from "react-native-safe-area-context";
5
5
  const DEFAULT_MARGIN_X = 20;
6
- const DEFAULT_MARGIN_TOP = 0;
7
6
  const DEFAULT_MARGIN_BOTTOM = 20;
8
7
  const DEFAULT_BORDER_RADIUS = 14;
9
8
  const DURATION = { duration: 250 };
@@ -11,42 +10,38 @@ function ZSBottomButton({ loadingComponent = <ActivityIndicator />, height = 55,
11
10
  const isKeyboardVisible = useSharedValue(0);
12
11
  const keyboardHeight = useSharedValue(0);
13
12
  const [isLoading, setIsLoading] = useState(false);
14
- const handlePress = async () => {
13
+ const { bottom } = useSafeAreaInsets();
14
+ const handlePress = useCallback(async () => {
15
15
  setIsLoading(true);
16
16
  try {
17
- await withPromise(primaryOnPress);
17
+ await primaryOnPress();
18
18
  }
19
19
  finally {
20
20
  setIsLoading(false);
21
21
  }
22
- };
22
+ }, [primaryOnPress]);
23
23
  // ** 소프트 키보드 핸들링
24
24
  useEffect(() => {
25
25
  const showEvent = Platform.OS === 'ios' ? 'keyboardWillShow' : 'keyboardDidShow';
26
26
  const hideEvent = Platform.OS === 'ios' ? 'keyboardWillHide' : 'keyboardDidHide';
27
- const keyboardDidShowListener = Keyboard.addListener(showEvent, (event) => {
28
- requestAnimationFrame(() => {
29
- keyboardHeight.value = event.endCoordinates.height; // 키보드 높이 설정
30
- isKeyboardVisible.value = 1; // 키보드가 보임
31
- });
27
+ const keyboardShowSubscription = Keyboard.addListener(showEvent, (event) => {
28
+ keyboardHeight.value = event.endCoordinates.height - bottom;
29
+ isKeyboardVisible.value = withTiming(1, { duration: 200 });
32
30
  });
33
- const keyboardDidHideListener = Keyboard.addListener(hideEvent, () => {
34
- requestAnimationFrame(() => {
35
- isKeyboardVisible.value = 0; // 키보드가 숨김
36
- });
31
+ const keyboardHideSubscription = Keyboard.addListener(hideEvent, () => {
32
+ isKeyboardVisible.value = withTiming(0, { duration: 200 });
37
33
  });
38
34
  return () => {
39
- keyboardDidShowListener.remove();
40
- keyboardDidHideListener.remove();
35
+ keyboardShowSubscription.remove();
36
+ keyboardHideSubscription.remove();
41
37
  };
42
38
  }, [isKeyboardVisible, keyboardHeight]);
43
- // ** 애니메이션 스타일을 useAnimatedStyle로 최적화
44
39
  const animatedStyle = useAnimatedStyle(() => {
45
- const getBottom = interpolate(isKeyboardVisible.value, [0, 1], [DEFAULT_MARGIN_BOTTOM, 0], 'clamp');
40
+ const getBottom = interpolate(isKeyboardVisible.value, [0, 1], [DEFAULT_MARGIN_BOTTOM, Platform.OS === 'ios' ? keyboardHeight.value : 0], 'clamp');
46
41
  const getMargin = interpolate(isKeyboardVisible.value, [0, 1], [DEFAULT_MARGIN_X, 0], 'clamp');
47
42
  const getRadius = interpolate(isKeyboardVisible.value, [0, 1], [DEFAULT_BORDER_RADIUS, 0], 'clamp');
48
43
  return {
49
- marginBottom: withTiming(getBottom, DURATION),
44
+ bottom: withTiming(getBottom, DURATION),
50
45
  marginLeft: withTiming(getMargin, DURATION),
51
46
  marginRight: withTiming(getMargin, DURATION),
52
47
  borderRadius: withTiming(getRadius, DURATION),
@@ -77,12 +72,12 @@ const styles = StyleSheet.create({
77
72
  justifyContent: 'center',
78
73
  alignItems: 'center',
79
74
  borderRadius: DEFAULT_BORDER_RADIUS,
80
- marginTop: DEFAULT_MARGIN_TOP,
81
- marginBottom: DEFAULT_MARGIN_BOTTOM,
75
+ bottom: DEFAULT_MARGIN_BOTTOM,
82
76
  marginLeft: DEFAULT_MARGIN_X,
83
77
  marginRight: DEFAULT_MARGIN_X,
84
78
  overflow: 'hidden',
85
79
  flexDirection: 'row',
80
+ position: 'absolute'
86
81
  },
87
82
  });
88
83
  export default ZSBottomButton;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ui/ZSBottomButton/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport { ActivityIndicator, Keyboard, Platform, StyleSheet, TouchableOpacity, TouchableOpacityProps } from \"react-native\";\nimport Animated, { interpolate, useAnimatedStyle, useSharedValue, withTiming } from \"react-native-reanimated\";\nimport { withPromise } from \"../../model/utils\";\n\nconst DEFAULT_MARGIN_X = 20;\nconst DEFAULT_MARGIN_TOP = 0;\nconst DEFAULT_MARGIN_BOTTOM = 20;\nconst DEFAULT_BORDER_RADIUS = 14;\nconst DURATION = { duration: 250 };\n\ninterface Props {\n loadingComponent?: React.ReactNode;\n height?: number;\n disabled?: boolean;\n primaryOnPress: () => Promise<any>;\n primaryLabelComponent: React.ReactNode;\n primaryButtonStyle?: TouchableOpacityProps['style'];\n secondaryOnPress?: () => void;\n secondaryLabelComponent?: React.ReactNode;\n secondaryButtonStyle?: TouchableOpacityProps['style'];\n}\n\nfunction ZSBottomButton({\n loadingComponent = <ActivityIndicator />,\n height = 55,\n disabled = false,\n primaryLabelComponent,\n primaryOnPress,\n primaryButtonStyle = {},\n secondaryOnPress,\n secondaryLabelComponent,\n secondaryButtonStyle = {}\n}: Props) {\n const isKeyboardVisible = useSharedValue(0);\n const keyboardHeight = useSharedValue(0);\n const [isLoading, setIsLoading] = useState<boolean>(false);\n\n const handlePress = async () => {\n setIsLoading(true);\n try {\n await withPromise(primaryOnPress);\n } finally {\n setIsLoading(false);\n }\n };\n\n // ** 소프트 키보드 핸들링\n useEffect(() => {\n const showEvent = Platform.OS === 'ios' ? 'keyboardWillShow' : 'keyboardDidShow';\n const hideEvent = Platform.OS === 'ios' ? 'keyboardWillHide' : 'keyboardDidHide';\n\n const keyboardDidShowListener = Keyboard.addListener(showEvent, (event) => {\n requestAnimationFrame(() => {\n keyboardHeight.value = event.endCoordinates.height; // 키보드 높이 설정\n isKeyboardVisible.value = 1; // 키보드가 보임\n });\n });\n\n const keyboardDidHideListener = Keyboard.addListener(hideEvent, () => {\n requestAnimationFrame(() => {\n isKeyboardVisible.value = 0; // 키보드가 숨김\n });\n });\n\n return () => {\n keyboardDidShowListener.remove();\n keyboardDidHideListener.remove();\n };\n }, [isKeyboardVisible, keyboardHeight]);\n\n // ** 애니메이션 스타일을 useAnimatedStyle로 최적화\n const animatedStyle = useAnimatedStyle(() => {\n const getBottom = interpolate(\n isKeyboardVisible.value,\n [0, 1],\n [DEFAULT_MARGIN_BOTTOM, 0],\n 'clamp',\n );\n\n const getMargin = interpolate(\n isKeyboardVisible.value,\n [0, 1],\n [DEFAULT_MARGIN_X, 0],\n 'clamp',\n );\n\n const getRadius = interpolate(\n isKeyboardVisible.value,\n [0, 1],\n [DEFAULT_BORDER_RADIUS, 0],\n 'clamp',\n );\n\n return {\n marginBottom: withTiming(getBottom, DURATION),\n marginLeft: withTiming(getMargin, DURATION),\n marginRight: withTiming(getMargin, DURATION),\n borderRadius: withTiming(getRadius, DURATION),\n };\n });\n\n return (\n <Animated.View style={[styles.container, animatedStyle]}>\n {secondaryLabelComponent && (\n <TouchableOpacity\n activeOpacity={0.7}\n style={[secondaryButtonStyle, { height }, styles.touchSecondaryContainer]}\n onPress={secondaryOnPress}\n >\n {secondaryLabelComponent}\n </TouchableOpacity>\n )}\n\n <TouchableOpacity\n activeOpacity={0.7}\n style={[primaryButtonStyle, { height }, styles.touchContainer]}\n onPress={handlePress}\n disabled={disabled || isLoading}\n >\n {isLoading ? loadingComponent : primaryLabelComponent}\n </TouchableOpacity>\n </Animated.View>\n );\n}\n\nconst styles = StyleSheet.create({\n touchContainer: {\n justifyContent: 'center',\n alignItems: 'center',\n flex: 2,\n },\n touchSecondaryContainer: {\n justifyContent: 'center',\n alignItems: 'center',\n flex: 1,\n },\n container: {\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: DEFAULT_BORDER_RADIUS,\n marginTop: DEFAULT_MARGIN_TOP,\n marginBottom: DEFAULT_MARGIN_BOTTOM,\n marginLeft: DEFAULT_MARGIN_X,\n marginRight: DEFAULT_MARGIN_X,\n overflow: 'hidden',\n flexDirection: 'row',\n },\n});\n\nexport default ZSBottomButton;\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ui/ZSBottomButton/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useCallback, useEffect, useState } from \"react\";\nimport { ActivityIndicator, Keyboard, Platform, StyleSheet, TouchableOpacity, TouchableOpacityProps } from \"react-native\";\nimport Animated, { interpolate, useAnimatedStyle, useSharedValue, withTiming } from \"react-native-reanimated\";\nimport { useSafeAreaInsets } from \"react-native-safe-area-context\";\n\nconst DEFAULT_MARGIN_X = 20;\nconst DEFAULT_MARGIN_BOTTOM = 20;\nconst DEFAULT_BORDER_RADIUS = 14;\nconst DURATION = { duration: 250 };\n\ninterface Props {\n loadingComponent?: React.ReactNode;\n height?: number;\n disabled?: boolean;\n primaryOnPress: () => Promise<any>;\n primaryLabelComponent: React.ReactNode;\n primaryButtonStyle?: TouchableOpacityProps['style'];\n secondaryOnPress?: () => void;\n secondaryLabelComponent?: React.ReactNode;\n secondaryButtonStyle?: TouchableOpacityProps['style'];\n}\n\nfunction ZSBottomButton({\n loadingComponent = <ActivityIndicator />,\n height = 55,\n disabled = false,\n primaryLabelComponent,\n primaryOnPress,\n primaryButtonStyle = {},\n secondaryOnPress,\n secondaryLabelComponent,\n secondaryButtonStyle = {}\n}: Props) {\n const isKeyboardVisible = useSharedValue(0);\n const keyboardHeight = useSharedValue(0);\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const { bottom } = useSafeAreaInsets();\n\n const handlePress = useCallback(async () => {\n setIsLoading(true);\n try {\n await primaryOnPress();\n } finally {\n setIsLoading(false);\n }\n }, [primaryOnPress]);\n\n // ** 소프트 키보드 핸들링\n useEffect(() => {\n const showEvent = Platform.OS === 'ios' ? 'keyboardWillShow' : 'keyboardDidShow';\n const hideEvent = Platform.OS === 'ios' ? 'keyboardWillHide' : 'keyboardDidHide';\n\n const keyboardShowSubscription = Keyboard.addListener(showEvent, (event) => {\n keyboardHeight.value = event.endCoordinates.height - bottom;\n isKeyboardVisible.value = withTiming(1, { duration: 200 });\n });\n\n const keyboardHideSubscription = Keyboard.addListener(hideEvent, () => {\n isKeyboardVisible.value = withTiming(0, { duration: 200 });\n });\n\n return () => {\n keyboardShowSubscription.remove();\n keyboardHideSubscription.remove();\n };\n }, [isKeyboardVisible, keyboardHeight]);\n\n const animatedStyle = useAnimatedStyle(() => {\n const getBottom = interpolate(\n isKeyboardVisible.value,\n [0, 1],\n [DEFAULT_MARGIN_BOTTOM,Platform.OS === 'ios' ? keyboardHeight.value : 0],\n 'clamp',\n );\n\n const getMargin = interpolate(\n isKeyboardVisible.value,\n [0, 1],\n [DEFAULT_MARGIN_X, 0],\n 'clamp',\n );\n\n const getRadius = interpolate(\n isKeyboardVisible.value,\n [0, 1],\n [DEFAULT_BORDER_RADIUS, 0],\n 'clamp',\n );\n\n return {\n bottom: withTiming(getBottom, DURATION),\n marginLeft: withTiming(getMargin, DURATION),\n marginRight: withTiming(getMargin, DURATION),\n borderRadius: withTiming(getRadius, DURATION),\n };\n });\n\n return (\n <Animated.View style={[styles.container, animatedStyle]}>\n {secondaryLabelComponent && (\n <TouchableOpacity\n activeOpacity={0.7}\n style={[secondaryButtonStyle, { height }, styles.touchSecondaryContainer]}\n onPress={secondaryOnPress}\n >\n {secondaryLabelComponent}\n </TouchableOpacity>\n )}\n\n <TouchableOpacity\n activeOpacity={0.7}\n style={[primaryButtonStyle, { height }, styles.touchContainer]}\n onPress={handlePress}\n disabled={disabled || isLoading}\n >\n {isLoading ? loadingComponent : primaryLabelComponent}\n </TouchableOpacity>\n </Animated.View>\n );\n}\n\nconst styles = StyleSheet.create({\n touchContainer: {\n justifyContent: 'center',\n alignItems: 'center',\n flex: 2,\n },\n touchSecondaryContainer: {\n justifyContent: 'center',\n alignItems: 'center',\n flex: 1,\n },\n container: {\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: DEFAULT_BORDER_RADIUS,\n bottom: DEFAULT_MARGIN_BOTTOM,\n marginLeft: DEFAULT_MARGIN_X,\n marginRight: DEFAULT_MARGIN_X,\n overflow: 'hidden',\n flexDirection: 'row',\n position:'absolute'\n },\n});\n\nexport default ZSBottomButton;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/ZSContainer/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAuB,MAAM,OAAO,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAwF,UAAU,EAAE,MAAM,cAAc,CAAC;AAM3I,KAAK,gBAAgB,GAAG,SAAS,GAAG;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,eAAe,GAAG,cAAc,CAAC;IAC5C,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC,CAAC;IACnD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC5C,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,gBAAgB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACnC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IACzD,iCAAiC,CAAC,EAAE,OAAO,CAAC;CAC7C,CAAC;AAEF,iBAAS,WAAW,CAAC,EACnB,eAAe,EACf,QAAgB,EAChB,cAAc,EACd,QAAyB,EACzB,KAAyB,EACzB,YAAmB,EACnB,aAAa,EACb,YAAY,EACZ,eAAe,EACf,4BAAmC,EACnC,gBAAwC,EACxC,sBAAsB,EACtB,QAAQ,EACR,iCAAwC,EACxC,GAAG,KAAK,EACT,EAAE,gBAAgB,qBAiDlB;AAQD,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/ZSContainer/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAuB,MAAM,OAAO,CAAC;AAC9D,OAAO,EAAE,SAAS,EAA8E,UAAU,EAAE,MAAM,cAAc,CAAC;AAMjI,KAAK,gBAAgB,GAAG,SAAS,GAAG;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,eAAe,GAAG,cAAc,CAAC;IAC5C,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC,CAAC;IACnD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC5C,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,gBAAgB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACnC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IACzD,iCAAiC,CAAC,EAAE,OAAO,CAAC;CAC7C,CAAC;AAEF,iBAAS,WAAW,CAAC,EACnB,eAAe,EACf,QAAgB,EAChB,cAAc,EACd,QAAyB,EACzB,KAAyB,EACzB,YAAmB,EACnB,aAAa,EACb,YAAY,EACZ,eAAe,EACf,4BAAmC,EACnC,gBAAwC,EACxC,sBAAsB,EACtB,QAAQ,EACR,iCAAwC,EACxC,GAAG,KAAK,EACT,EAAE,gBAAgB,qBAiDlB;AAQD,eAAe,WAAW,CAAC"}
@@ -14,9 +14,8 @@ function ZSContainer({ backgroundColor, isLoader = false, statusBarColor, barSty
14
14
  return () => clearTimeout(timer);
15
15
  }, []);
16
16
  return (<SafeAreaView style={[{ backgroundColor: backgroundColor || palette.background.base }, styles.flex1, styles.fullWidth]} edges={edges}>
17
- <StatusBar barStyle={barStyle} backgroundColor={statusBarColor || palette.background.base}/>
18
17
 
19
- {!isDelayed && (<KeyboardAvoidingView style={[styles.flex1, styles.fullWidth]} behavior={behavior} keyboardVerticalOffset={keyboardVerticalOffset} enabled>
18
+ {!isDelayed && (<KeyboardAvoidingView style={[styles.flex1, styles.fullWidth]} behavior={behavior} keyboardVerticalOffset={keyboardVerticalOffset}>
20
19
  {topComponent && topComponent}
21
20
 
22
21
  {isLoader ? (loadingComponent) : isScrollView ? (<ScrollViewAtom ref={scrollViewRef} style={styles.fullWidth} bounces={false} contentContainerStyle={styles.scrollContainerStyle} showsVerticalScrollIndicator={showsVerticalScrollIndicator} keyboardShouldPersistTaps="handled" automaticallyAdjustKeyboardInsets={automaticallyAdjustKeyboardInsets}>
@@ -27,6 +26,8 @@ function ZSContainer({ backgroundColor, isLoader = false, statusBarColor, barSty
27
26
 
28
27
  {!isLoader && bottomComponent && bottomComponent}
29
28
  </KeyboardAvoidingView>)}
29
+
30
+ <StatusBar barStyle={barStyle} backgroundColor={statusBarColor || palette.background.base}/>
30
31
  </SafeAreaView>);
31
32
  }
32
33
  const styles = StyleSheet.create({
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ui/ZSContainer/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { ReactNode, useState, useEffect } from 'react';\nimport { ViewProps, KeyboardAvoidingView, StatusBar, StyleSheet, Dimensions, ActivityIndicator, Platform, ScrollView } from 'react-native';\nimport { SafeAreaView } from 'react-native-safe-area-context';\nimport ViewAtom from '../atoms/ViewAtom';\nimport ScrollViewAtom from '../atoms/ScrollViewAtom';\nimport { useTheme } from '../../model/useThemeProvider';\n\ntype ZSContainerProps = ViewProps & {\n backgroundColor?: string;\n isLoader?: boolean;\n statusBarColor?: string;\n barStyle?: 'light-content' | 'dark-content';\n edges?: Array<'top' | 'right' | 'bottom' | 'left'>;\n isScrollView?: boolean;\n scrollViewRef?: React.RefObject<ScrollView>;\n topComponent?: ReactNode;\n bottomComponent?: ReactNode;\n showsVerticalScrollIndicator?: boolean;\n loadingComponent?: React.ReactNode;\n keyboardVerticalOffset?: number;\n behavior?: \"padding\" | \"height\" | \"position\" | undefined;\n automaticallyAdjustKeyboardInsets?: boolean;\n};\n\nfunction ZSContainer({\n backgroundColor,\n isLoader = false,\n statusBarColor,\n barStyle = 'dark-content',\n edges = ['top', 'bottom'],\n isScrollView = true,\n scrollViewRef,\n topComponent,\n bottomComponent,\n showsVerticalScrollIndicator = true,\n loadingComponent = <ActivityIndicator />,\n keyboardVerticalOffset,\n behavior,\n automaticallyAdjustKeyboardInsets = true,\n ...props\n}: ZSContainerProps) {\n const { palette } = useTheme(); // 테마 사용\n const [isDelayed, setIsDelayed] = useState(true);\n\n useEffect(() => {\n const timer = setTimeout(() => {\n setIsDelayed(false);\n }, 200);\n return () => clearTimeout(timer);\n }, []);\n\n return (\n <SafeAreaView style={[{ backgroundColor: backgroundColor || palette.background.base }, styles.flex1, styles.fullWidth]} edges={edges}>\n <StatusBar barStyle={barStyle} backgroundColor={statusBarColor || palette.background.base} />\n\n {!isDelayed && (\n <KeyboardAvoidingView\n style={[styles.flex1, styles.fullWidth]}\n behavior={behavior}\n keyboardVerticalOffset={keyboardVerticalOffset}\n enabled\n >\n {topComponent && topComponent}\n\n {isLoader ? (\n loadingComponent\n ) : isScrollView ? (\n <ScrollViewAtom\n ref={scrollViewRef}\n style={styles.fullWidth}\n bounces={false}\n contentContainerStyle={styles.scrollContainerStyle}\n showsVerticalScrollIndicator={showsVerticalScrollIndicator}\n keyboardShouldPersistTaps=\"handled\"\n automaticallyAdjustKeyboardInsets={automaticallyAdjustKeyboardInsets}\n >\n <ViewAtom style={[styles.flex1, styles.fullWidth, props.style]}>\n {props.children}\n </ViewAtom>\n </ScrollViewAtom>\n ) : (\n <ViewAtom style={[styles.flex1, styles.fullWidth, props.style]}>{props.children}</ViewAtom>\n )}\n\n {!isLoader && bottomComponent && bottomComponent}\n </KeyboardAvoidingView>\n )}\n </SafeAreaView>\n );\n}\n\nconst styles = StyleSheet.create({\n flex1: { flex: 1 },\n fullWidth: { width: Dimensions.get('window').width },\n scrollContainerStyle: { flexGrow: 1, alignItems: 'center', width: Dimensions.get('window').width },\n});\n\nexport default ZSContainer;\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ui/ZSContainer/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { ReactNode, useState, useEffect } from 'react';\nimport { ViewProps, KeyboardAvoidingView, StatusBar, StyleSheet, Dimensions, ActivityIndicator, ScrollView } from 'react-native';\nimport { SafeAreaView } from 'react-native-safe-area-context';\nimport ViewAtom from '../atoms/ViewAtom';\nimport ScrollViewAtom from '../atoms/ScrollViewAtom';\nimport { useTheme } from '../../model/useThemeProvider';\n\ntype ZSContainerProps = ViewProps & {\n backgroundColor?: string;\n isLoader?: boolean;\n statusBarColor?: string;\n barStyle?: 'light-content' | 'dark-content';\n edges?: Array<'top' | 'right' | 'bottom' | 'left'>;\n isScrollView?: boolean;\n scrollViewRef?: React.RefObject<ScrollView>;\n topComponent?: ReactNode;\n bottomComponent?: ReactNode;\n showsVerticalScrollIndicator?: boolean;\n loadingComponent?: React.ReactNode;\n keyboardVerticalOffset?: number;\n behavior?: \"padding\" | \"height\" | \"position\" | undefined;\n automaticallyAdjustKeyboardInsets?: boolean;\n};\n\nfunction ZSContainer({\n backgroundColor,\n isLoader = false,\n statusBarColor,\n barStyle = 'dark-content',\n edges = ['top', 'bottom'],\n isScrollView = true,\n scrollViewRef,\n topComponent,\n bottomComponent,\n showsVerticalScrollIndicator = true,\n loadingComponent = <ActivityIndicator />,\n keyboardVerticalOffset,\n behavior,\n automaticallyAdjustKeyboardInsets = true,\n ...props\n}: ZSContainerProps) {\n const { palette } = useTheme(); // 테마 사용\n const [isDelayed, setIsDelayed] = useState(true);\n\n useEffect(() => {\n const timer = setTimeout(() => {\n setIsDelayed(false);\n }, 200);\n return () => clearTimeout(timer);\n }, []);\n\n return (\n <SafeAreaView style={[{ backgroundColor: backgroundColor || palette.background.base }, styles.flex1, styles.fullWidth]} edges={edges}>\n\n {!isDelayed && (\n <KeyboardAvoidingView\n style={[styles.flex1, styles.fullWidth]}\n behavior={behavior}\n keyboardVerticalOffset={keyboardVerticalOffset}\n >\n {topComponent && topComponent}\n\n {isLoader ? (\n loadingComponent\n ) : isScrollView ? (\n <ScrollViewAtom\n ref={scrollViewRef}\n style={styles.fullWidth}\n bounces={false}\n contentContainerStyle={styles.scrollContainerStyle}\n showsVerticalScrollIndicator={showsVerticalScrollIndicator}\n keyboardShouldPersistTaps=\"handled\"\n automaticallyAdjustKeyboardInsets={automaticallyAdjustKeyboardInsets}\n >\n <ViewAtom style={[styles.flex1, styles.fullWidth, props.style]}>\n {props.children}\n </ViewAtom>\n </ScrollViewAtom>\n ) : (\n <ViewAtom style={[styles.flex1, styles.fullWidth, props.style]}>{props.children}</ViewAtom>\n )}\n\n {!isLoader && bottomComponent && bottomComponent}\n </KeyboardAvoidingView>\n )}\n\n <StatusBar barStyle={barStyle} backgroundColor={statusBarColor || palette.background.base} />\n </SafeAreaView>\n );\n}\n\nconst styles = StyleSheet.create({\n flex1: { flex: 1 },\n fullWidth: { width: Dimensions.get('window').width },\n scrollContainerStyle: { flexGrow: 1, alignItems: 'center', width: Dimensions.get('window').width },\n});\n\nexport default ZSContainer;\n"]}
@@ -1,3 +1,4 @@
1
+ import React from 'react';
1
2
  import { TextInputProps } from 'react-native';
2
3
  import { TypoOptions } from '../../theme';
3
4
  export type BoxStyle = 'outline' | 'underline' | 'inbox';
@@ -27,5 +28,6 @@ interface TextFieldProps {
27
28
  isTextArea?: boolean;
28
29
  }
29
30
  declare function ZSTextField({ typo, status, value, onChangeText, label, labelColor, placeHolderColor, inputBgColor, labelBgColor, borderWidth, borderColor, focusColor, errorColor, borderRadius, paddingHorizontal, errorMessage, textInputProps, boxStyle, innerBoxStyle, disabled, allowFontScaling, isTextArea, }: TextFieldProps): JSX.Element;
30
- export default ZSTextField;
31
+ declare const _default: React.MemoExoticComponent<typeof ZSTextField>;
32
+ export default _default;
31
33
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/ZSTextField/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAqD,cAAc,EAAwB,MAAM,cAAc,CAAC;AAIvH,OAAO,EAAE,WAAW,EAA2B,MAAM,aAAa,CAAC;AAKnE,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;AAIzD,UAAU,cAAc;IACtB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,aAAa,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC5C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,iBAAS,WAAW,CAAC,EACnB,IAAe,EACf,MAAkB,EAClB,KAAK,EACL,YAAY,EACZ,KAAqB,EACrB,UAAsB,EACtB,gBAA4B,EAC5B,YAAsB,EACtB,YAAsB,EACtB,WAAiB,EACjB,WAAuB,EACvB,UAAsB,EACtB,UAAsB,EACtB,YAAiB,EACjB,iBAAsB,EACtB,YAAY,EACZ,cAAc,EACd,QAAoB,EACpB,aAAa,EACb,QAAgB,EAChB,gBAAuB,EACvB,UAAkB,GACnB,EAAE,cAAc,GAAG,GAAG,CAAC,OAAO,CAwI9B;AAED,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/ZSTextField/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoD,MAAM,OAAO,CAAC;AACzE,OAAO,EAAqD,cAAc,EAAwB,MAAM,cAAc,CAAC;AAIvH,OAAO,EAAE,WAAW,EAA2B,MAAM,aAAa,CAAC;AAKnE,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;AAIzD,UAAU,cAAc;IACtB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,aAAa,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC5C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,iBAAS,WAAW,CAAC,EACnB,IAAe,EACf,MAAkB,EAClB,KAAK,EACL,YAAY,EACZ,KAAqB,EACrB,UAAsB,EACtB,gBAA4B,EAC5B,YAAsB,EACtB,YAAsB,EACtB,WAAiB,EACjB,WAAuB,EACvB,UAAsB,EACtB,UAAsB,EACtB,YAAiB,EACjB,iBAAsB,EACtB,YAAY,EACZ,cAAc,EACd,QAAoB,EACpB,aAAa,EACb,QAAgB,EAChB,gBAAuB,EACvB,UAAkB,GACnB,EAAE,cAAc,GAAG,GAAG,CAAC,OAAO,CA2I9B;;AAED,wBAAuC"}
@@ -19,9 +19,8 @@ function ZSTextField({ typo = 'body.2', status = 'default', value, onChangeText,
19
19
  const boxHeightValue = useSharedValue(0);
20
20
  // 포커스 및 값 변경 시 라벨 애니메이션 트리거
21
21
  useEffect(() => {
22
- const shouldAnimate = value !== '' || isFocused;
23
- labelAnimationValue.value = withTiming(shouldAnimate ? 1 : 0, { duration: 50 });
24
- }, [value, isFocused, labelAnimationValue]);
22
+ labelAnimationValue.value = withTiming(value !== '' || isFocused ? 1 : 0, { duration: 150 });
23
+ }, [value, isFocused]);
25
24
  // 라벨 애니메이션 스타일
26
25
  const animatedLabelStyle = useAnimatedStyle(() => {
27
26
  const labelFontSize = interpolate(labelAnimationValue.value, [0, 1], [fontSize + (boxStyle === 'inbox' ? 2 : 0), boxStyle === 'inbox' ? 11 : 12], 'clamp');
@@ -85,7 +84,7 @@ function ZSTextField({ typo = 'body.2', status = 'default', value, onChangeText,
85
84
  { paddingTop: 7 + iosOffset, paddingBottom: 5 + iosOffset },
86
85
  textInputProps?.style,
87
86
  { fontSize, width: '100%', paddingRight: 25, fontFamily },
88
- ]} value={value} onFocus={handleFocus} onBlur={handleBlur} onChangeText={handleTextChange} allowFontScaling={allowFontScaling} selectionColor={palette.grey[50]}/>
87
+ ]} value={value} onFocus={handleFocus} onBlur={handleBlur} onChangeText={handleTextChange} allowFontScaling={allowFontScaling} selectionColor={palette.grey[50]} autoCorrect={false}/>
89
88
 
90
89
  <ViewAtom pointerEvents="none" style={{ position: 'absolute' }}>
91
90
  <Animated.Text allowFontScaling={allowFontScaling} style={[animatedLabelStyle, labelTextStyle, { color: computedLabelColor }]}>
@@ -99,5 +98,5 @@ function ZSTextField({ typo = 'body.2', status = 'default', value, onChangeText,
99
98
  {status === 'error' && errorMessage && (<ErrorComponent errorMessage={errorMessage} errorColor={errorColor} fontFamily={fontFamily}/>)}
100
99
  </>);
101
100
  }
102
- export default ZSTextField;
101
+ export default React.memo(ZSTextField);
103
102
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ui/ZSTextField/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useMemo, useCallback, useState, useEffect } from 'react';\nimport { LayoutChangeEvent, Platform, StyleProp, TextInput, TextInputProps, TextStyle, ViewStyle } from 'react-native';\nimport Animated, { interpolate, useAnimatedStyle, useSharedValue, withTiming } from 'react-native-reanimated';\nimport ButtonClose from './ui/ButtonClose';\nimport ErrorComponent from './ui/ErrorComponent';\nimport { TypoOptions, TypoStyle, TypoSubStyle } from '../../theme';\nimport { extractStyle } from '../../model/utils';\nimport { useTheme } from '../../model/useThemeProvider';\nimport ViewAtom from '../atoms/ViewAtom';\n\nexport type BoxStyle = 'outline' | 'underline' | 'inbox';\n\nconst iosOffset = Platform.OS === 'ios' ? 8 : 4;\n\ninterface TextFieldProps {\n typo?: TypoOptions;\n status?: 'default' | 'error';\n value: string;\n onChangeText?: (text: string) => void;\n inputBgColor?: string;\n labelBgColor?: string;\n label?: string;\n labelColor?: string;\n placeHolderColor?: string;\n fontSize?: number;\n borderColor?: string;\n borderRadius?: number;\n focusColor?: string;\n errorColor?: string;\n paddingHorizontal?: number;\n borderWidth?: number;\n errorMessage?: string;\n textInputProps?: TextInputProps;\n boxStyle?: BoxStyle;\n innerBoxStyle?: 'top' | 'middle' | 'bottom';\n disabled?: boolean;\n allowFontScaling?: boolean;\n isTextArea?: boolean;\n}\n\nfunction ZSTextField({\n typo = 'body.2',\n status = 'default',\n value,\n onChangeText,\n label = 'Placeholder',\n labelColor = '#757575',\n placeHolderColor = '#B1B1B1',\n inputBgColor = 'white',\n labelBgColor = 'white',\n borderWidth = 1.2,\n borderColor = '#E7EDF0',\n focusColor = '#007AFF',\n errorColor = '#FF3B30',\n borderRadius = 14,\n paddingHorizontal = 15,\n errorMessage,\n textInputProps,\n boxStyle = 'outline',\n innerBoxStyle,\n disabled = false,\n allowFontScaling = true,\n isTextArea = false,\n}: TextFieldProps): JSX.Element {\n const { typography, palette } = useTheme();\n const [primaryStyle, subStyle] = typo.split('.') as [TypoStyle, TypoSubStyle];\n\n // 폰트 크기 및 패밀리 추출\n const fontSize = useMemo(() => extractStyle(typography[primaryStyle][subStyle], 'fontSize') as number || 17, [typography, primaryStyle, subStyle]);\n const fontFamily = useMemo(() => extractStyle(typography[primaryStyle][subStyle], 'fontFamily') as string || '', [typography, primaryStyle, subStyle]);\n\n // 컴포넌트 상태 관리\n const [isFocused, setIsFocused] = useState<boolean>(false);\n const labelAnimationValue = useSharedValue(0);\n const boxHeightValue = useSharedValue(0);\n\n // 포커스 및 값 변경 시 라벨 애니메이션 트리거\n useEffect(() => {\n const shouldAnimate = value !== '' || isFocused;\n labelAnimationValue.value = withTiming(shouldAnimate ? 1 : 0, { duration: 50 });\n }, [value, isFocused, labelAnimationValue]);\n\n // 라벨 애니메이션 스타일\n const animatedLabelStyle = useAnimatedStyle(() => {\n const labelFontSize = interpolate(\n labelAnimationValue.value,\n [0, 1],\n [fontSize + (boxStyle === 'inbox' ? 2 : 0), boxStyle === 'inbox' ? 11 : 12],\n 'clamp'\n );\n\n const labelTop = interpolate(\n labelAnimationValue.value,\n [0, 1],\n [\n isTextArea ? 12 : 0,\n isTextArea ? -12 : -(boxHeightValue.value / 2) - 1 + (boxStyle === 'inbox' ? 17 : 0),\n ],\n 'clamp'\n );\n\n return {\n top: labelTop,\n fontSize: labelFontSize,\n };\n });\n\n // 레이아웃 핸들러\n const handleLayout = useCallback((event: LayoutChangeEvent) => {\n const { height } = event.nativeEvent.layout;\n if (boxHeightValue.value !== height) boxHeightValue.value = height;\n }, [boxHeightValue]);\n\n // 포커스 및 블러 핸들러\n const handleFocus = useCallback(() => setIsFocused(true), []);\n const handleBlur = useCallback(() => setIsFocused(false), []);\n\n // 상태에 따른 테두리 색상 설정\n const computedBorderColor = useMemo(() => (\n status === 'error' ? errorColor : isFocused ? focusColor : borderColor\n ), [status, errorColor, isFocused, focusColor, borderColor]);\n\n // 상태에 따른 라벨 색상 설정\n const computedLabelColor = useMemo(() => (\n status === 'error' ? errorColor : isFocused ? focusColor : value ? labelColor : placeHolderColor\n ), [status, errorColor, isFocused, focusColor, value, placeHolderColor, labelColor]);\n\n // 컨테이너 스타일 정의\n const containerStyle: StyleProp<ViewStyle> = useMemo(() => ({\n width: '100%',\n justifyContent: isTextArea ? 'flex-start' : 'center',\n borderRadius,\n paddingHorizontal,\n backgroundColor: inputBgColor,\n paddingTop: boxStyle === 'inbox' ? 13 : 0,\n ...(boxStyle === 'outline' || boxStyle === 'inbox' ? { borderWidth } : {}),\n ...(boxStyle === 'underline' ? { borderBottomWidth: borderWidth } : {}),\n ...(innerBoxStyle === 'top' ? { borderBottomLeftRadius: 0, borderBottomRightRadius: 0, borderBottomWidth: borderWidth / 2 }\n : innerBoxStyle === 'middle' ? { borderRadius: 0, borderTopWidth: borderWidth / 2, borderBottomWidth: borderWidth / 2 }\n : innerBoxStyle === 'bottom' ? { borderTopLeftRadius: 0, borderTopRightRadius: 0, borderTopWidth: borderWidth / 2 }\n : {}),\n }), [isTextArea, borderRadius, paddingHorizontal, inputBgColor, borderWidth, boxStyle, innerBoxStyle]);\n\n // 라벨 스타일 정의\n const labelTextStyle: StyleProp<TextStyle> = useMemo(() => ({\n fontSize,\n left: paddingHorizontal,\n backgroundColor: labelBgColor,\n paddingHorizontal: boxStyle === 'outline' ? 5 : 0,\n paddingVertical: 2,\n textAlignVertical: 'center',\n fontFamily,\n borderRadius: boxStyle === 'outline' ? 5 : 0,\n overflow: 'hidden',\n }), [fontSize, paddingHorizontal, labelBgColor, boxStyle, fontFamily]);\n\n // 텍스트 변경 핸들러\n const handleTextChange = useCallback((text: string) => {\n if (onChangeText) onChangeText(text);\n }, [onChangeText]);\n\n return (\n <>\n <ViewAtom\n style={[containerStyle, { borderColor: computedBorderColor }]}\n onLayout={handleLayout}\n pointerEvents={disabled ? 'none' : 'auto'}\n >\n <TextInput\n {...textInputProps}\n style={[\n { paddingTop: 7 + iosOffset, paddingBottom: 5 + iosOffset },\n textInputProps?.style,\n { fontSize, width: '100%', paddingRight: 25, fontFamily },\n ]}\n value={value}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onChangeText={handleTextChange}\n allowFontScaling={allowFontScaling}\n selectionColor={palette.grey[50]}\n />\n\n <ViewAtom pointerEvents=\"none\" style={{ position: 'absolute' }}>\n <Animated.Text allowFontScaling={allowFontScaling} style={[animatedLabelStyle, labelTextStyle, { color: computedLabelColor }]}>\n {label}\n </Animated.Text>\n </ViewAtom>\n\n {(value && isFocused) && (\n <ButtonClose marginTop={isTextArea ? 13 : undefined} onChangeText={onChangeText} />\n )}\n </ViewAtom>\n\n {status === 'error' && errorMessage && (\n <ErrorComponent errorMessage={errorMessage} errorColor={errorColor} fontFamily={fontFamily} />\n )}\n </>\n );\n}\n\nexport default ZSTextField;\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ui/ZSTextField/index.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useMemo, useCallback, useState, useEffect } from 'react';\nimport { LayoutChangeEvent, Platform, StyleProp, TextInput, TextInputProps, TextStyle, ViewStyle } from 'react-native';\nimport Animated, { interpolate, useAnimatedStyle, useSharedValue, withTiming } from 'react-native-reanimated';\nimport ButtonClose from './ui/ButtonClose';\nimport ErrorComponent from './ui/ErrorComponent';\nimport { TypoOptions, TypoStyle, TypoSubStyle } from '../../theme';\nimport { extractStyle } from '../../model/utils';\nimport { useTheme } from '../../model/useThemeProvider';\nimport ViewAtom from '../atoms/ViewAtom';\n\nexport type BoxStyle = 'outline' | 'underline' | 'inbox';\n\nconst iosOffset = Platform.OS === 'ios' ? 8 : 4;\n\ninterface TextFieldProps {\n typo?: TypoOptions;\n status?: 'default' | 'error';\n value: string;\n onChangeText?: (text: string) => void;\n inputBgColor?: string;\n labelBgColor?: string;\n label?: string;\n labelColor?: string;\n placeHolderColor?: string;\n fontSize?: number;\n borderColor?: string;\n borderRadius?: number;\n focusColor?: string;\n errorColor?: string;\n paddingHorizontal?: number;\n borderWidth?: number;\n errorMessage?: string;\n textInputProps?: TextInputProps;\n boxStyle?: BoxStyle;\n innerBoxStyle?: 'top' | 'middle' | 'bottom';\n disabled?: boolean;\n allowFontScaling?: boolean;\n isTextArea?: boolean;\n}\n\nfunction ZSTextField({\n typo = 'body.2',\n status = 'default',\n value,\n onChangeText,\n label = 'Placeholder',\n labelColor = '#757575',\n placeHolderColor = '#B1B1B1',\n inputBgColor = 'white',\n labelBgColor = 'white',\n borderWidth = 1.2,\n borderColor = '#E7EDF0',\n focusColor = '#007AFF',\n errorColor = '#FF3B30',\n borderRadius = 14,\n paddingHorizontal = 15,\n errorMessage,\n textInputProps,\n boxStyle = 'outline',\n innerBoxStyle,\n disabled = false,\n allowFontScaling = true,\n isTextArea = false,\n}: TextFieldProps): JSX.Element {\n const { typography, palette } = useTheme();\n const [primaryStyle, subStyle] = typo.split('.') as [TypoStyle, TypoSubStyle];\n\n // 폰트 크기 및 패밀리 추출\n const fontSize = useMemo(() => extractStyle(typography[primaryStyle][subStyle], 'fontSize') as number || 17, [typography, primaryStyle, subStyle]);\n const fontFamily = useMemo(() => extractStyle(typography[primaryStyle][subStyle], 'fontFamily') as string || '', [typography, primaryStyle, subStyle]);\n\n // 컴포넌트 상태 관리\n const [isFocused, setIsFocused] = useState<boolean>(false);\n const labelAnimationValue = useSharedValue(0);\n const boxHeightValue = useSharedValue(0);\n\n // 포커스 및 값 변경 시 라벨 애니메이션 트리거\n useEffect(() => {\n labelAnimationValue.value = withTiming(\n value !== '' || isFocused ? 1 : 0, \n { duration: 150 }\n );\n }, [value, isFocused]);\n\n // 라벨 애니메이션 스타일\n const animatedLabelStyle = useAnimatedStyle(() => {\n const labelFontSize = interpolate(\n labelAnimationValue.value,\n [0, 1],\n [fontSize + (boxStyle === 'inbox' ? 2 : 0), boxStyle === 'inbox' ? 11 : 12],\n 'clamp'\n );\n\n const labelTop = interpolate(\n labelAnimationValue.value,\n [0, 1],\n [\n isTextArea ? 12 : 0,\n isTextArea ? -12 : -(boxHeightValue.value / 2) - 1 + (boxStyle === 'inbox' ? 17 : 0),\n ],\n 'clamp'\n );\n\n return {\n top: labelTop,\n fontSize: labelFontSize,\n };\n });\n\n // 레이아웃 핸들러\n const handleLayout = useCallback((event: LayoutChangeEvent) => {\n const { height } = event.nativeEvent.layout;\n if (boxHeightValue.value !== height) boxHeightValue.value = height;\n }, [boxHeightValue]);\n\n // 포커스 및 블러 핸들러\n const handleFocus = useCallback(() => setIsFocused(true), []);\n const handleBlur = useCallback(() => setIsFocused(false), []);\n\n // 상태에 따른 테두리 색상 설정\n const computedBorderColor = useMemo(() => (\n status === 'error' ? errorColor : isFocused ? focusColor : borderColor\n ), [status, errorColor, isFocused, focusColor, borderColor]);\n\n // 상태에 따른 라벨 색상 설정\n const computedLabelColor = useMemo(() => (\n status === 'error' ? errorColor : isFocused ? focusColor : value ? labelColor : placeHolderColor\n ), [status, errorColor, isFocused, focusColor, value, placeHolderColor, labelColor]);\n\n // 컨테이너 스타일 정의\n const containerStyle: StyleProp<ViewStyle> = useMemo(() => ({\n width: '100%',\n justifyContent: isTextArea ? 'flex-start' : 'center',\n borderRadius,\n paddingHorizontal,\n backgroundColor: inputBgColor,\n paddingTop: boxStyle === 'inbox' ? 13 : 0,\n ...(boxStyle === 'outline' || boxStyle === 'inbox' ? { borderWidth } : {}),\n ...(boxStyle === 'underline' ? { borderBottomWidth: borderWidth } : {}),\n ...(innerBoxStyle === 'top' ? { borderBottomLeftRadius: 0, borderBottomRightRadius: 0, borderBottomWidth: borderWidth / 2 }\n : innerBoxStyle === 'middle' ? { borderRadius: 0, borderTopWidth: borderWidth / 2, borderBottomWidth: borderWidth / 2 }\n : innerBoxStyle === 'bottom' ? { borderTopLeftRadius: 0, borderTopRightRadius: 0, borderTopWidth: borderWidth / 2 }\n : {}),\n }), [isTextArea, borderRadius, paddingHorizontal, inputBgColor, borderWidth, boxStyle, innerBoxStyle]);\n\n // 라벨 스타일 정의\n const labelTextStyle: StyleProp<TextStyle> = useMemo(() => ({\n fontSize,\n left: paddingHorizontal,\n backgroundColor: labelBgColor,\n paddingHorizontal: boxStyle === 'outline' ? 5 : 0,\n paddingVertical: 2,\n textAlignVertical: 'center',\n fontFamily,\n borderRadius: boxStyle === 'outline' ? 5 : 0,\n overflow: 'hidden',\n }), [fontSize, paddingHorizontal, labelBgColor, boxStyle, fontFamily]);\n\n // 텍스트 변경 핸들러\n const handleTextChange = useCallback((text: string) => {\n if (onChangeText) onChangeText(text);\n }, [onChangeText]);\n\n return (\n <>\n <ViewAtom\n style={[containerStyle, { borderColor: computedBorderColor }]}\n onLayout={handleLayout}\n pointerEvents={disabled ? 'none' : 'auto'}\n >\n <TextInput\n {...textInputProps}\n style={[\n { paddingTop: 7 + iosOffset, paddingBottom: 5 + iosOffset },\n textInputProps?.style,\n { fontSize, width: '100%', paddingRight: 25, fontFamily },\n ]}\n value={value}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onChangeText={handleTextChange}\n allowFontScaling={allowFontScaling}\n selectionColor={palette.grey[50]}\n autoCorrect={false}\n />\n\n <ViewAtom pointerEvents=\"none\" style={{ position: 'absolute' }}>\n <Animated.Text allowFontScaling={allowFontScaling} style={[animatedLabelStyle, labelTextStyle, { color: computedLabelColor }]}>\n {label}\n </Animated.Text>\n </ViewAtom>\n\n {(value && isFocused) && (\n <ButtonClose marginTop={isTextArea ? 13 : undefined} onChangeText={onChangeText} />\n )}\n </ViewAtom>\n\n {status === 'error' && errorMessage && (\n <ErrorComponent errorMessage={errorMessage} errorColor={errorColor} fontFamily={fontFamily} />\n )}\n </>\n );\n}\n\nexport default React.memo(ZSTextField);\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@0610studio/zs-ui",
3
- "version": "0.0.32",
3
+ "version": "0.0.34",
4
4
  "private": false,
5
5
  "description": "EXPO ZS-UI",
6
6
  "type": "module",
@@ -1,7 +0,0 @@
1
- export type ChangeEventPayload = {
2
- value: string;
3
- };
4
- export type ZsUiViewProps = {
5
- name: string;
6
- };
7
- //# sourceMappingURL=ZsUi.types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ZsUi.types.d.ts","sourceRoot":"","sources":["../src/ZsUi.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;CACd,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=ZsUi.types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ZsUi.types.js","sourceRoot":"","sources":["../src/ZsUi.types.ts"],"names":[],"mappings":"","sourcesContent":["export type ChangeEventPayload = {\n value: string;\n};\n\nexport type ZsUiViewProps = {\n name: string;\n};\n"]}
@@ -1,3 +0,0 @@
1
- declare const _default: any;
2
- export default _default;
3
- //# sourceMappingURL=ZsUiModule.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ZsUiModule.d.ts","sourceRoot":"","sources":["../src/ZsUiModule.ts"],"names":[],"mappings":";AAIA,wBAA2C"}
@@ -1,5 +0,0 @@
1
- import { requireNativeModule } from 'expo-modules-core';
2
- // It loads the native module object from the JSI or falls back to
3
- // the bridge module (from NativeModulesProxy) if the remote debugger is on.
4
- export default requireNativeModule('ZsUi');
5
- //# sourceMappingURL=ZsUiModule.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ZsUiModule.js","sourceRoot":"","sources":["../src/ZsUiModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,kEAAkE;AAClE,4EAA4E;AAC5E,eAAe,mBAAmB,CAAC,MAAM,CAAC,CAAC","sourcesContent":["import { requireNativeModule } from 'expo-modules-core';\n\n// It loads the native module object from the JSI or falls back to\n// the bridge module (from NativeModulesProxy) if the remote debugger is on.\nexport default requireNativeModule('ZsUi');\n"]}
@@ -1,7 +0,0 @@
1
- declare const _default: {
2
- PI: number;
3
- setValueAsync(value: string): Promise<void>;
4
- hello(): string;
5
- };
6
- export default _default;
7
- //# sourceMappingURL=ZsUiModule.web.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ZsUiModule.web.d.ts","sourceRoot":"","sources":["../src/ZsUiModule.web.ts"],"names":[],"mappings":";;yBAM6B,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;;;AAFnD,wBAQE"}
@@ -1,12 +0,0 @@
1
- import { EventEmitter } from 'expo-modules-core';
2
- const emitter = new EventEmitter({});
3
- export default {
4
- PI: Math.PI,
5
- async setValueAsync(value) {
6
- emitter.emit('onChange', { value });
7
- },
8
- hello() {
9
- return 'Hello world! 👋';
10
- },
11
- };
12
- //# sourceMappingURL=ZsUiModule.web.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ZsUiModule.web.js","sourceRoot":"","sources":["../src/ZsUiModule.web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,EAAS,CAAC,CAAC;AAE5C,eAAe;IACb,EAAE,EAAE,IAAI,CAAC,EAAE;IACX,KAAK,CAAC,aAAa,CAAC,KAAa;QAC/B,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACtC,CAAC;IACD,KAAK;QACH,OAAO,iBAAiB,CAAC;IAC3B,CAAC;CACF,CAAC","sourcesContent":["import { EventEmitter } from 'expo-modules-core';\n\nconst emitter = new EventEmitter({} as any);\n\nexport default {\n PI: Math.PI,\n async setValueAsync(value: string): Promise<void> {\n emitter.emit('onChange', { value });\n },\n hello() {\n return 'Hello world! 👋';\n },\n};\n"]}
@@ -1,4 +0,0 @@
1
- import * as React from 'react';
2
- import { ZsUiViewProps } from './ZsUi.types';
3
- export default function ZsUiView(props: ZsUiViewProps): React.JSX.Element;
4
- //# sourceMappingURL=ZsUiView.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ZsUiView.d.ts","sourceRoot":"","sources":["../src/ZsUiView.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAK7C,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,KAAK,EAAE,aAAa,qBAEpD"}
package/build/ZsUiView.js DELETED
@@ -1,7 +0,0 @@
1
- import { requireNativeViewManager } from 'expo-modules-core';
2
- import * as React from 'react';
3
- const NativeView = requireNativeViewManager('ZsUi');
4
- export default function ZsUiView(props) {
5
- return <NativeView {...props}/>;
6
- }
7
- //# sourceMappingURL=ZsUiView.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ZsUiView.js","sourceRoot":"","sources":["../src/ZsUiView.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,UAAU,GACd,wBAAwB,CAAC,MAAM,CAAC,CAAC;AAEnC,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,KAAoB;IACnD,OAAO,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,EAAG,CAAC;AACnC,CAAC","sourcesContent":["import { requireNativeViewManager } from 'expo-modules-core';\nimport * as React from 'react';\n\nimport { ZsUiViewProps } from './ZsUi.types';\n\nconst NativeView: React.ComponentType<ZsUiViewProps> =\n requireNativeViewManager('ZsUi');\n\nexport default function ZsUiView(props: ZsUiViewProps) {\n return <NativeView {...props} />;\n}\n"]}
@@ -1,4 +0,0 @@
1
- import * as React from 'react';
2
- import { ZsUiViewProps } from './ZsUi.types';
3
- export default function ZsUiView(props: ZsUiViewProps): React.JSX.Element;
4
- //# sourceMappingURL=ZsUiView.web.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ZsUiView.web.d.ts","sourceRoot":"","sources":["../src/ZsUiView.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,KAAK,EAAE,aAAa,qBAMpD"}
@@ -1,7 +0,0 @@
1
- import * as React from 'react';
2
- export default function ZsUiView(props) {
3
- return (<div>
4
- <span>{props.name}</span>
5
- </div>);
6
- }
7
- //# sourceMappingURL=ZsUiView.web.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ZsUiView.web.js","sourceRoot":"","sources":["../src/ZsUiView.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,KAAoB;IACnD,OAAO,CACL,CAAC,GAAG,CACF;MAAA,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,CAC1B;IAAA,EAAE,GAAG,CAAC,CACP,CAAC;AACJ,CAAC","sourcesContent":["import * as React from 'react';\n\nimport { ZsUiViewProps } from './ZsUi.types';\n\nexport default function ZsUiView(props: ZsUiViewProps) {\n return (\n <div>\n <span>{props.name}</span>\n </div>\n );\n}\n"]}