@codeleap/mobile 3.9.0 → 3.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -145,37 +145,41 @@ export const useImageSpotlight = (name: string | null, src: ImageProps['source']
|
|
|
145
145
|
}
|
|
146
146
|
}
|
|
147
147
|
|
|
148
|
-
type
|
|
148
|
+
export type SpotlightHeaderComponent = {
|
|
149
149
|
imageIndex: number
|
|
150
150
|
spotlight: ReturnType<typeof useSpotlight>
|
|
151
151
|
}
|
|
152
152
|
|
|
153
|
-
type
|
|
153
|
+
export type SpootlightFooterComponent = React.ComponentType<{
|
|
154
154
|
imageIndex: number
|
|
155
155
|
imagesLength: number
|
|
156
|
+
spotlight: ReturnType<typeof useSpotlight>
|
|
156
157
|
}>
|
|
157
158
|
|
|
158
|
-
type FooterComponentProps =
|
|
159
|
+
type FooterComponentProps = SpotlightHeaderComponent
|
|
159
160
|
|
|
160
|
-
type SpotlightProps = {
|
|
161
|
+
export type SpotlightProps = {
|
|
161
162
|
name?: string
|
|
162
|
-
HeaderComponent?: (props:
|
|
163
|
+
HeaderComponent?: (props: SpotlightHeaderComponent) => JSX.Element
|
|
163
164
|
FooterComponent?: (props: FooterComponentProps) => JSX.Element
|
|
164
165
|
showFooter?: boolean
|
|
165
166
|
} & ImageViewProps
|
|
166
167
|
|
|
167
|
-
const DefaultFooterComponent:
|
|
168
|
+
const DefaultFooterComponent: SpootlightFooterComponent = ({ imageIndex, imagesLength }) => (
|
|
168
169
|
<View variants={['marginBottom:5', 'alignCenter']}>
|
|
169
170
|
<Text text={imageIndex + 1 + '/' + imagesLength} />
|
|
170
171
|
</View>
|
|
171
172
|
)
|
|
172
173
|
|
|
173
|
-
export const Spotlight
|
|
174
|
+
export const Spotlight = (props: SpotlightProps) => {
|
|
175
|
+
const { name, HeaderComponent, showFooter, FooterComponent, ...rest } = props
|
|
174
176
|
const spotlight = useSpotlight(name)
|
|
177
|
+
|
|
175
178
|
useUnmount(() => {
|
|
176
179
|
spotlight.clear()
|
|
177
180
|
})
|
|
178
181
|
|
|
182
|
+
const Footer = showFooter ? FooterComponent || DefaultFooterComponent : (() => null)
|
|
179
183
|
return <ImageView
|
|
180
184
|
imageIndex={spotlight.currentIndex}
|
|
181
185
|
images={spotlight.images.map(x => x.source)}
|
|
@@ -183,10 +187,7 @@ export const Spotlight: React.FC<SpotlightProps> = ({ name, HeaderComponent, Foo
|
|
|
183
187
|
onRequestClose={spotlight.close}
|
|
184
188
|
visible={typeof spotlight.currentIndex !== 'undefined'}
|
|
185
189
|
{...rest}
|
|
186
|
-
FooterComponent={({ imageIndex }) =>
|
|
187
|
-
<FooterComponent imageIndex={imageIndex} spotlight={spotlight} /> :
|
|
188
|
-
<DefaultFooterComponent imageIndex={imageIndex} imagesLength={spotlight.images.length} />
|
|
189
|
-
}
|
|
190
|
+
FooterComponent={({ imageIndex }) => <Footer imageIndex={imageIndex} spotlight={spotlight} imagesLength={spotlight.images.length} />}
|
|
190
191
|
HeaderComponent={!!HeaderComponent ? ({ imageIndex }) => <HeaderComponent spotlight={spotlight} imageIndex={imageIndex} /> : undefined}
|
|
191
192
|
/>
|
|
192
193
|
}
|
|
@@ -5,7 +5,8 @@ import _ImageView from 'react-native-image-viewing'
|
|
|
5
5
|
import { StatusBar } from 'react-native'
|
|
6
6
|
|
|
7
7
|
export type ImageViewProps = PropsOf<typeof _ImageView>
|
|
8
|
-
|
|
8
|
+
|
|
9
|
+
export const ImageView = (props: ImageViewProps) => {
|
|
9
10
|
onUpdate(() => {
|
|
10
11
|
StatusBar.setHidden(props.visible)
|
|
11
12
|
}, [props.visible])
|