@one-am/react-native-simple-image-slider 0.14.0 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/README.md +15 -9
  2. package/lib/commonjs/@types/common.js.map +1 -1
  3. package/lib/commonjs/@types/icons.js.map +1 -1
  4. package/lib/commonjs/@types/pinch-to-zoom.js +0 -4
  5. package/lib/commonjs/@types/pinch-to-zoom.js.map +1 -1
  6. package/lib/commonjs/@types/slider.js.map +1 -1
  7. package/lib/commonjs/AbsoluteComponentContainer.js +34 -0
  8. package/lib/commonjs/AbsoluteComponentContainer.js.map +1 -0
  9. package/lib/commonjs/BaseSimpleImageSlider.js +129 -157
  10. package/lib/commonjs/BaseSimpleImageSlider.js.map +1 -1
  11. package/lib/commonjs/FullScreenImageSlider.js +46 -51
  12. package/lib/commonjs/FullScreenImageSlider.js.map +1 -1
  13. package/lib/commonjs/PageCounter.js +30 -23
  14. package/lib/commonjs/PageCounter.js.map +1 -1
  15. package/lib/commonjs/PinchToZoom.js +16 -13
  16. package/lib/commonjs/PinchToZoom.js.map +1 -1
  17. package/lib/commonjs/SimpleImageSlider.js +31 -25
  18. package/lib/commonjs/SimpleImageSlider.js.map +1 -1
  19. package/lib/commonjs/SimpleImageSliderThemeProvider.js +26 -20
  20. package/lib/commonjs/SimpleImageSliderThemeProvider.js.map +1 -1
  21. package/lib/commonjs/icons/IconX.js +16 -14
  22. package/lib/commonjs/icons/IconX.js.map +1 -1
  23. package/lib/commonjs/index.js +10 -2
  24. package/lib/commonjs/index.js.map +1 -1
  25. package/lib/commonjs/package.json +1 -0
  26. package/lib/commonjs/utils/clamp.js.map +1 -1
  27. package/lib/commonjs/utils/renderProp.js +3 -2
  28. package/lib/commonjs/utils/renderProp.js.map +1 -1
  29. package/lib/module/@types/common.js +1 -1
  30. package/lib/module/@types/common.js.map +1 -1
  31. package/lib/module/@types/icons.js +2 -0
  32. package/lib/module/@types/icons.js.map +1 -1
  33. package/lib/module/@types/pinch-to-zoom.js +1 -1
  34. package/lib/module/@types/pinch-to-zoom.js.map +1 -1
  35. package/lib/module/@types/slider.js +2 -0
  36. package/lib/module/@types/slider.js.map +1 -1
  37. package/lib/module/AbsoluteComponentContainer.js +28 -0
  38. package/lib/module/AbsoluteComponentContainer.js.map +1 -0
  39. package/lib/module/BaseSimpleImageSlider.js +130 -156
  40. package/lib/module/BaseSimpleImageSlider.js.map +1 -1
  41. package/lib/module/FullScreenImageSlider.js +47 -50
  42. package/lib/module/FullScreenImageSlider.js.map +1 -1
  43. package/lib/module/PageCounter.js +31 -23
  44. package/lib/module/PageCounter.js.map +1 -1
  45. package/lib/module/PinchToZoom.js +17 -12
  46. package/lib/module/PinchToZoom.js.map +1 -1
  47. package/lib/module/SimpleImageSlider.js +31 -23
  48. package/lib/module/SimpleImageSlider.js.map +1 -1
  49. package/lib/module/SimpleImageSliderThemeProvider.js +27 -20
  50. package/lib/module/SimpleImageSliderThemeProvider.js.map +1 -1
  51. package/lib/module/icons/IconX.js +16 -12
  52. package/lib/module/icons/IconX.js.map +1 -1
  53. package/lib/module/index.js +4 -2
  54. package/lib/module/index.js.map +1 -1
  55. package/lib/module/package.json +1 -0
  56. package/lib/module/utils/clamp.js +2 -0
  57. package/lib/module/utils/clamp.js.map +1 -1
  58. package/lib/module/utils/renderProp.js +4 -1
  59. package/lib/module/utils/renderProp.js.map +1 -1
  60. package/lib/typescript/src/@types/pinch-to-zoom.d.ts +3 -4
  61. package/lib/typescript/src/@types/pinch-to-zoom.d.ts.map +1 -1
  62. package/lib/typescript/src/AbsoluteComponentContainer.d.ts +7 -0
  63. package/lib/typescript/src/AbsoluteComponentContainer.d.ts.map +1 -0
  64. package/lib/typescript/src/BaseSimpleImageSlider.d.ts +1 -1
  65. package/lib/typescript/src/BaseSimpleImageSlider.d.ts.map +1 -1
  66. package/lib/typescript/src/FullScreenImageSlider.d.ts +4 -4
  67. package/lib/typescript/src/FullScreenImageSlider.d.ts.map +1 -1
  68. package/lib/typescript/src/PageCounter.d.ts.map +1 -1
  69. package/lib/typescript/src/PinchToZoom.d.ts.map +1 -1
  70. package/lib/typescript/src/SimpleImageSlider.d.ts +15 -3
  71. package/lib/typescript/src/SimpleImageSlider.d.ts.map +1 -1
  72. package/lib/typescript/src/SimpleImageSliderThemeProvider.d.ts +10 -2
  73. package/lib/typescript/src/SimpleImageSliderThemeProvider.d.ts.map +1 -1
  74. package/lib/typescript/src/index.d.ts +2 -3
  75. package/lib/typescript/src/index.d.ts.map +1 -1
  76. package/package.json +161 -161
  77. package/src/@types/pinch-to-zoom.ts +3 -5
  78. package/src/AbsoluteComponentContainer.tsx +30 -0
  79. package/src/BaseSimpleImageSlider.tsx +119 -150
  80. package/src/FullScreenImageSlider.tsx +40 -38
  81. package/src/PageCounter.tsx +35 -17
  82. package/src/PinchToZoom.tsx +10 -9
  83. package/src/SimpleImageSlider.tsx +10 -0
  84. package/src/SimpleImageSliderThemeProvider.tsx +32 -13
  85. package/src/index.tsx +7 -2
  86. package/lib/commonjs/@types/styled.d.js +0 -4
  87. package/lib/commonjs/@types/styled.d.js.map +0 -1
  88. package/lib/module/@types/styled.d.js +0 -2
  89. package/lib/module/@types/styled.d.js.map +0 -1
  90. package/src/@types/styled.d.ts +0 -17
@@ -19,6 +19,12 @@ export type SimpleImageSliderProps = BaseSimpleImageSliderProps & {
19
19
  * @description Passed to the {@link FullScreenImageSlider} component.
20
20
  */
21
21
  FullScreenCloseButtonIcon?: FullScreenImageSliderProps['CloseButtonIcon'];
22
+ /**
23
+ * @description The aspect ratio of the images when full screen.
24
+ *
25
+ * @default {@link FullScreenImageSliderProps.imageAspectRatio}
26
+ */
27
+ fullScreenImageAspectRatio?: number;
22
28
  };
23
29
 
24
30
  /**
@@ -33,6 +39,8 @@ const SimpleImageSlider = forwardRef<FlashList<SimpleImageSliderItem>, SimpleIma
33
39
  onViewableItemChange,
34
40
  FullScreenCloseButtonIcon,
35
41
  renderFullScreenDescription,
42
+ imageAspectRatio,
43
+ fullScreenImageAspectRatio,
36
44
  ...props
37
45
  },
38
46
  ref
@@ -72,6 +80,7 @@ const SimpleImageSlider = forwardRef<FlashList<SimpleImageSliderItem>, SimpleIma
72
80
  <>
73
81
  <BaseListImageSlider
74
82
  {...props}
83
+ imageAspectRatio={imageAspectRatio}
75
84
  data={data}
76
85
  ref={mergeRefs(ref, listRef)}
77
86
  onItemPress={fullScreenEnabled ? openFullScreen : onItemPress}
@@ -80,6 +89,7 @@ const SimpleImageSlider = forwardRef<FlashList<SimpleImageSliderItem>, SimpleIma
80
89
  {fullScreenEnabled ? (
81
90
  <FullScreenImageSlider
82
91
  {...props}
92
+ imageAspectRatio={fullScreenImageAspectRatio ?? imageAspectRatio}
83
93
  ref={fullScreenListRef}
84
94
  open={fullScreen}
85
95
  onRequestClose={onRequestClose}
@@ -1,30 +1,49 @@
1
- import React, { type PropsWithChildren, useMemo } from 'react';
2
- import { type DefaultTheme, ThemeProvider } from 'styled-components/native';
1
+ import React, { createContext, type PropsWithChildren, useContext, useMemo } from 'react';
2
+
3
+ export type SimpleImageSliderTheme = {
4
+ colors: {
5
+ pageCounterBackground: string;
6
+ pageCounterBorder: string;
7
+ fullScreenCloseButton: string;
8
+ descriptionContainerBorder: string;
9
+ };
10
+ };
11
+
12
+ const defaultTheme: SimpleImageSliderTheme = {
13
+ colors: {
14
+ pageCounterBackground: '#D3D3D3',
15
+ pageCounterBorder: '#000000',
16
+ fullScreenCloseButton: '#FFFFFF',
17
+ descriptionContainerBorder: '#FFFFFF',
18
+ },
19
+ };
20
+
21
+ const ThemeContext = createContext<SimpleImageSliderTheme>(defaultTheme);
3
22
 
4
23
  export type SimpleImageSliderThemeProviderProps = PropsWithChildren<{
5
24
  overrides?: {
6
- colors: Partial<DefaultTheme['colors']>;
25
+ colors: Partial<SimpleImageSliderTheme['colors']>;
7
26
  };
8
27
  }>;
9
28
 
29
+ export function useSimpleImageSliderTheme() {
30
+ return useContext(ThemeContext);
31
+ }
32
+
10
33
  export default function SimpleImageSliderThemeProvider({
11
34
  overrides,
12
35
  children,
13
36
  }: SimpleImageSliderThemeProviderProps) {
14
- const theme: DefaultTheme = useMemo(
37
+ const theme: SimpleImageSliderTheme = useMemo(
15
38
  () => ({
39
+ ...defaultTheme,
16
40
  colors: {
17
- simpleImageSlider: {
18
- pageCounterBackground: '#D3D3D3',
19
- pageCounterBorder: '#000000',
20
- fullScreenCloseButton: '#FFFFFF',
21
- descriptionContainerBorder: '#FFFFFF',
22
- ...overrides?.colors?.simpleImageSlider,
23
- },
41
+ ...defaultTheme.colors,
42
+ ...overrides?.colors,
24
43
  },
25
44
  }),
26
- [overrides?.colors?.simpleImageSlider]
45
+ [overrides?.colors]
27
46
  );
28
47
 
29
- return <ThemeProvider theme={theme}>{children}</ThemeProvider>;
48
+ return <ThemeContext.Provider value={theme}>{children}</ThemeContext.Provider>;
30
49
  }
package/src/index.tsx CHANGED
@@ -1,5 +1,8 @@
1
- import SimpleImageSliderThemeProvider from './SimpleImageSliderThemeProvider';
2
- import type { SimpleImageSliderTheme } from './@types/styled';
1
+ import SimpleImageSliderThemeProvider, {
2
+ useSimpleImageSliderTheme,
3
+ type SimpleImageSliderTheme,
4
+ type SimpleImageSliderThemeProviderProps,
5
+ } from './SimpleImageSliderThemeProvider';
3
6
  import BaseListImageSlider, { type BaseSimpleImageSliderProps } from './BaseSimpleImageSlider';
4
7
  import SimpleImageSlider, { type SimpleImageSliderProps } from './SimpleImageSlider';
5
8
  import FullScreenImageSlider, { type FullScreenImageSliderProps } from './FullScreenImageSlider';
@@ -9,7 +12,9 @@ import PageCounter, { type PageCounterProps } from './PageCounter';
9
12
 
10
13
  export {
11
14
  SimpleImageSliderThemeProvider,
15
+ useSimpleImageSliderTheme,
12
16
  type SimpleImageSliderTheme,
17
+ type SimpleImageSliderThemeProviderProps,
13
18
  BaseListImageSlider,
14
19
  type BaseSimpleImageSliderProps,
15
20
  SimpleImageSlider,
@@ -1,4 +0,0 @@
1
- "use strict";
2
-
3
- require("styled-components/native");
4
- //# sourceMappingURL=styled.d.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["require"],"sourceRoot":"../../../src","sources":["@types/styled.d.ts"],"mappings":";;AAAAA,OAAA","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import 'styled-components/native';
2
- //# sourceMappingURL=styled.d.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":[],"sourceRoot":"../../../src","sources":["@types/styled.d.ts"],"mappings":"AAAA,OAAO,0BAA0B","ignoreList":[]}
@@ -1,17 +0,0 @@
1
- import 'styled-components/native';
2
-
3
- export type SimpleImageSliderTheme = {
4
- colors: {
5
- simpleImageSlider: {
6
- pageCounterBackground: string;
7
- pageCounterBorder: string;
8
- fullScreenCloseButton: string;
9
- descriptionContainerBorder: string;
10
- };
11
- };
12
- };
13
-
14
- declare module 'styled-components/native' {
15
- // eslint-disable-next-line @typescript-eslint/no-empty-interface
16
- export interface DefaultTheme extends SimpleImageSliderTheme {}
17
- }