@one-am/react-native-simple-image-slider 0.14.0 → 0.15.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 (66) hide show
  1. package/README.md +3 -3
  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.map +1 -1
  5. package/lib/commonjs/@types/slider.js.map +1 -1
  6. package/lib/commonjs/@types/styled.d.js.map +1 -1
  7. package/lib/commonjs/BaseSimpleImageSlider.js +61 -55
  8. package/lib/commonjs/BaseSimpleImageSlider.js.map +1 -1
  9. package/lib/commonjs/FullScreenImageSlider.js +30 -26
  10. package/lib/commonjs/FullScreenImageSlider.js.map +1 -1
  11. package/lib/commonjs/PageCounter.js +9 -6
  12. package/lib/commonjs/PageCounter.js.map +1 -1
  13. package/lib/commonjs/PinchToZoom.js +11 -8
  14. package/lib/commonjs/PinchToZoom.js.map +1 -1
  15. package/lib/commonjs/SimpleImageSlider.js +31 -25
  16. package/lib/commonjs/SimpleImageSlider.js.map +1 -1
  17. package/lib/commonjs/SimpleImageSliderThemeProvider.js +16 -18
  18. package/lib/commonjs/SimpleImageSliderThemeProvider.js.map +1 -1
  19. package/lib/commonjs/icons/IconX.js +16 -14
  20. package/lib/commonjs/icons/IconX.js.map +1 -1
  21. package/lib/commonjs/index.js +1 -1
  22. package/lib/commonjs/index.js.map +1 -1
  23. package/lib/commonjs/package.json +1 -0
  24. package/lib/commonjs/utils/clamp.js.map +1 -1
  25. package/lib/commonjs/utils/renderProp.js +3 -2
  26. package/lib/commonjs/utils/renderProp.js.map +1 -1
  27. package/lib/module/@types/common.js +1 -1
  28. package/lib/module/@types/common.js.map +1 -1
  29. package/lib/module/@types/icons.js +2 -0
  30. package/lib/module/@types/icons.js.map +1 -1
  31. package/lib/module/@types/pinch-to-zoom.js +2 -0
  32. package/lib/module/@types/pinch-to-zoom.js.map +1 -1
  33. package/lib/module/@types/slider.js +2 -0
  34. package/lib/module/@types/slider.js.map +1 -1
  35. package/lib/module/@types/styled.d.js +2 -0
  36. package/lib/module/@types/styled.d.js.map +1 -1
  37. package/lib/module/BaseSimpleImageSlider.js +61 -53
  38. package/lib/module/BaseSimpleImageSlider.js.map +1 -1
  39. package/lib/module/FullScreenImageSlider.js +30 -24
  40. package/lib/module/FullScreenImageSlider.js.map +1 -1
  41. package/lib/module/PageCounter.js +10 -5
  42. package/lib/module/PageCounter.js.map +1 -1
  43. package/lib/module/PinchToZoom.js +12 -7
  44. package/lib/module/PinchToZoom.js.map +1 -1
  45. package/lib/module/SimpleImageSlider.js +31 -23
  46. package/lib/module/SimpleImageSlider.js.map +1 -1
  47. package/lib/module/SimpleImageSliderThemeProvider.js +17 -17
  48. package/lib/module/SimpleImageSliderThemeProvider.js.map +1 -1
  49. package/lib/module/icons/IconX.js +16 -12
  50. package/lib/module/icons/IconX.js.map +1 -1
  51. package/lib/module/index.js +2 -0
  52. package/lib/module/index.js.map +1 -1
  53. package/lib/module/package.json +1 -0
  54. package/lib/module/utils/clamp.js +2 -0
  55. package/lib/module/utils/clamp.js.map +1 -1
  56. package/lib/module/utils/renderProp.js +4 -1
  57. package/lib/module/utils/renderProp.js.map +1 -1
  58. package/lib/typescript/src/BaseSimpleImageSlider.d.ts.map +1 -1
  59. package/lib/typescript/src/FullScreenImageSlider.d.ts +4 -4
  60. package/lib/typescript/src/FullScreenImageSlider.d.ts.map +1 -1
  61. package/lib/typescript/src/SimpleImageSlider.d.ts +15 -3
  62. package/lib/typescript/src/SimpleImageSlider.d.ts.map +1 -1
  63. package/package.json +29 -30
  64. package/src/BaseSimpleImageSlider.tsx +2 -1
  65. package/src/FullScreenImageSlider.tsx +1 -4
  66. package/src/SimpleImageSlider.tsx +10 -0
@@ -34,17 +34,17 @@ declare const FullScreenImageSlider: React.ForwardRefExoticComponent<Omit<BaseSi
34
34
  /**
35
35
  * @description Whether the modal is open or not.
36
36
  */
37
- open?: boolean | undefined;
37
+ open?: boolean;
38
38
  /**
39
39
  * @description Callback that is called when the modal is requested to be closed.
40
40
  */
41
- onRequestClose?: (() => void) | undefined;
41
+ onRequestClose?: () => void;
42
42
  /**
43
43
  * @description Callback that renders an element to be displayed as the description of the current image.
44
44
  * @param item The current item being displayed.
45
45
  * @param index The index of the current item being displayed.
46
46
  */
47
- renderDescription?: ((item: SimpleImageSliderItem, index: number) => ReactNode) | undefined;
47
+ renderDescription?: (item: SimpleImageSliderItem, index: number) => ReactNode;
48
48
  /**
49
49
  * @description Item to be rendered in place of the default close button icon.
50
50
  */
@@ -52,7 +52,7 @@ declare const FullScreenImageSlider: React.ForwardRefExoticComponent<Omit<BaseSi
52
52
  /**
53
53
  * @description Callback that is called when the modal begins to fade out.
54
54
  */
55
- onFadeOut?: (() => void) | undefined;
55
+ onFadeOut?: () => void;
56
56
  } & React.RefAttributes<FlashList<SimpleImageSliderItem>>>;
57
57
  export default FullScreenImageSlider;
58
58
  //# sourceMappingURL=FullScreenImageSlider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FullScreenImageSlider.d.ts","sourceRoot":"","sources":["../../../src/FullScreenImageSlider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAEV,KAAK,SAAS,EAKjB,MAAM,OAAO,CAAC;AAWf,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAA4B,EAAE,KAAK,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAG/F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAmB,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEjE,MAAM,MAAM,0BAA0B,GAAG,IAAI,CAAC,0BAA0B,EAAE,YAAY,CAAC,GAAG;IACtF;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;IAC9E;;OAEG;IACH,eAAe,CAAC,EAAE,UAAU,CAAC;IAC7B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B,CAAC;AAqBF;;GAEG;AACH,QAAA,MAAM,qBAAqB;IA9CvB;;OAEG;;IAEH;;OAEG;4BACoB,IAAI;IAC3B;;;;OAIG;gCACwB,qBAAqB,SAAS,MAAM,KAAK,SAAS;IAC7E;;OAEG;sBACe,UAAU;IAC5B;;OAEG;uBACe,IAAI;0DAqIxB,CAAC;AAEH,eAAe,qBAAqB,CAAC"}
1
+ {"version":3,"file":"FullScreenImageSlider.d.ts","sourceRoot":"","sources":["../../../src/FullScreenImageSlider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAEV,KAAK,SAAS,EAKjB,MAAM,OAAO,CAAC;AAWf,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAA4B,EAAE,KAAK,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAG/F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAmB,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEjE,MAAM,MAAM,0BAA0B,GAAG,IAAI,CAAC,0BAA0B,EAAE,YAAY,CAAC,GAAG;IACtF;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;IAC9E;;OAEG;IACH,eAAe,CAAC,EAAE,UAAU,CAAC;IAC7B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B,CAAC;AAqBF;;GAEG;AACH,QAAA,MAAM,qBAAqB;IA9CvB;;OAEG;WACI,OAAO;IACd;;OAEG;qBACc,MAAM,IAAI;IAC3B;;;;OAIG;wBACiB,CAAC,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS;IAC7E;;OAEG;sBACe,UAAU;IAC5B;;OAEG;gBACS,MAAM,IAAI;0DAkIxB,CAAC;AAEH,eAAe,qBAAqB,CAAC"}
@@ -17,6 +17,12 @@ export type SimpleImageSliderProps = BaseSimpleImageSliderProps & {
17
17
  * @description Passed to the {@link FullScreenImageSlider} component.
18
18
  */
19
19
  FullScreenCloseButtonIcon?: FullScreenImageSliderProps['CloseButtonIcon'];
20
+ /**
21
+ * @description The aspect ratio of the images when full screen.
22
+ *
23
+ * @default {@link FullScreenImageSliderProps.imageAspectRatio}
24
+ */
25
+ fullScreenImageAspectRatio?: number;
20
26
  };
21
27
  /**
22
28
  * @description A simple image slider that displays images in a list and can show a {@link FullScreenImageSlider} on press.
@@ -26,15 +32,21 @@ declare const SimpleImageSlider: React.ForwardRefExoticComponent<BaseSimpleImage
26
32
  * @description Whether the full screen mode is enabled or not. **Caution:** when this is enabled, the `onItemPress` prop will be ignored.
27
33
  * @default false
28
34
  */
29
- fullScreenEnabled?: boolean | undefined;
35
+ fullScreenEnabled?: boolean;
30
36
  /**
31
37
  * @description Passed to the {@link FullScreenImageSlider} component.
32
38
  */
33
- renderFullScreenDescription?: FullScreenImageSliderProps['renderDescription'];
39
+ renderFullScreenDescription?: FullScreenImageSliderProps["renderDescription"];
34
40
  /**
35
41
  * @description Passed to the {@link FullScreenImageSlider} component.
36
42
  */
37
- FullScreenCloseButtonIcon?: FullScreenImageSliderProps['CloseButtonIcon'];
43
+ FullScreenCloseButtonIcon?: FullScreenImageSliderProps["CloseButtonIcon"];
44
+ /**
45
+ * @description The aspect ratio of the images when full screen.
46
+ *
47
+ * @default {@link FullScreenImageSliderProps.imageAspectRatio}
48
+ */
49
+ fullScreenImageAspectRatio?: number;
38
50
  } & React.RefAttributes<FlashList<SimpleImageSliderItem>>>;
39
51
  export default SimpleImageSlider;
40
52
  //# sourceMappingURL=SimpleImageSlider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SimpleImageSlider.d.ts","sourceRoot":"","sources":["../../../src/SimpleImageSlider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoD,MAAM,OAAO,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAA8B,EAAE,KAAK,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACjG,OAA4B,EAAE,KAAK,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAC/F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAE7D,MAAM,MAAM,sBAAsB,GAAG,0BAA0B,GAAG;IAC9D;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;OAEG;IACH,2BAA2B,CAAC,EAAE,0BAA0B,CAAC,mBAAmB,CAAC,CAAC;IAC9E;;OAEG;IACH,yBAAyB,CAAC,EAAE,0BAA0B,CAAC,iBAAiB,CAAC,CAAC;CAC7E,CAAC;AAEF;;GAEG;AACH,QAAA,MAAM,iBAAiB;IAlBnB;;;OAGG;;IAEH;;OAEG;kCAC2B,0BAA0B,CAAC,mBAAmB,CAAC;IAC7E;;OAEG;gCACyB,0BAA0B,CAAC,iBAAiB,CAAC;0DA6E5E,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"SimpleImageSlider.d.ts","sourceRoot":"","sources":["../../../src/SimpleImageSlider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoD,MAAM,OAAO,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAA8B,EAAE,KAAK,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACjG,OAA4B,EAAE,KAAK,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAC/F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAE7D,MAAM,MAAM,sBAAsB,GAAG,0BAA0B,GAAG;IAC9D;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;OAEG;IACH,2BAA2B,CAAC,EAAE,0BAA0B,CAAC,mBAAmB,CAAC,CAAC;IAC9E;;OAEG;IACH,yBAAyB,CAAC,EAAE,0BAA0B,CAAC,iBAAiB,CAAC,CAAC;IAC1E;;;;OAIG;IACH,0BAA0B,CAAC,EAAE,MAAM,CAAC;CACvC,CAAC;AAEF;;GAEG;AACH,QAAA,MAAM,iBAAiB;IAxBnB;;;OAGG;wBACiB,OAAO;IAC3B;;OAEG;kCAC2B,0BAA0B,CAAC,mBAAmB,CAAC;IAC7E;;OAEG;gCACyB,0BAA0B,CAAC,iBAAiB,CAAC;IACzE;;;;OAIG;iCAC0B,MAAM;0DAiFtC,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@one-am/react-native-simple-image-slider",
3
- "version": "0.14.0",
3
+ "version": "0.15.0",
4
4
  "description": "A simple and performant image slider made with FlashList. Includes a full screen gallery component with gesture support.",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -36,8 +36,8 @@
36
36
  },
37
37
  "keywords": [
38
38
  "react-native",
39
- "ios",
40
- "android"
39
+ "image-slider",
40
+ "gallery"
41
41
  ],
42
42
  "repository": {
43
43
  "type": "git",
@@ -53,6 +53,22 @@
53
53
  "registry": "https://registry.npmjs.org/",
54
54
  "access": "public"
55
55
  },
56
+ "dependencies": {
57
+ "merge-refs": "^1.2.2"
58
+ },
59
+ "peerDependencies": {
60
+ "@shopify/flash-list": "*",
61
+ "expo-haptics": "*",
62
+ "expo-image": "*",
63
+ "expo-status-bar": "*",
64
+ "react": "*",
65
+ "react-native": "*",
66
+ "react-native-gesture-handler": "*",
67
+ "react-native-reanimated": "*",
68
+ "react-native-safe-area-context": "*",
69
+ "react-native-svg": "*",
70
+ "styled-components": "*"
71
+ },
56
72
  "devDependencies": {
57
73
  "@babel/runtime": "^7.24.1",
58
74
  "@commitlint/config-conventional": "^17.0.2",
@@ -83,36 +99,22 @@
83
99
  "expo-image": "^1.10.6",
84
100
  "expo-status-bar": "^1.11.1",
85
101
  "jest": "^29.7.0",
86
- "prettier": "^3.2.5",
102
+ "prettier": "^3.4.2",
87
103
  "react": "18.2.0",
88
- "react-native": "0.73.6",
89
- "react-native-builder-bob": "^0.20.0",
90
- "react-native-gesture-handler": "^2.15.0",
91
- "react-native-reanimated": "^3.3.0",
92
- "react-native-safe-area-context": "^4.9.0",
93
- "react-native-svg": "^15.1.0",
104
+ "react-native": "0.74.5",
105
+ "react-native-builder-bob": "^0.35.2",
106
+ "react-native-gesture-handler": "~2.16.1",
107
+ "react-native-reanimated": "~3.10.1",
108
+ "react-native-safe-area-context": "4.10.5",
109
+ "react-native-svg": "15.2.0",
110
+ "react-native-web": "~0.19.6",
94
111
  "release-it": "^15.0.0",
95
- "styled-components": "^6.1.8",
112
+ "styled-components": "^6.1.13",
96
113
  "typescript": "^5.4.2",
97
114
  "typescript-plugin-styled-components": "^3.0.0"
98
115
  },
99
116
  "resolutions": {
100
- "@types/react": "^18.2.44",
101
- "styled-components": "^6"
102
- },
103
- "peerDependencies": {
104
- "@babel/core": "*",
105
- "@babel/runtime": "*",
106
- "expo-haptics": "*",
107
- "expo-image": "*",
108
- "expo-status-bar": "*",
109
- "react": "*",
110
- "react-native": "*",
111
- "react-native-gesture-handler": "*",
112
- "react-native-reanimated": "*",
113
- "react-native-safe-area-context": "*",
114
- "react-native-svg": "*",
115
- "styled-components": "*"
117
+ "styled-components": "^6.1.13"
116
118
  },
117
119
  "workspaces": [
118
120
  "example"
@@ -160,8 +162,5 @@
160
162
  }
161
163
  ]
162
164
  ]
163
- },
164
- "dependencies": {
165
- "merge-refs": "^1.2.2"
166
165
  }
167
166
  }
@@ -236,7 +236,7 @@ const BaseSimpleImageSlider = forwardRef<
236
236
  const [currentItem, setCurrentItem] = useState(0);
237
237
 
238
238
  const slicedData = useMemo(
239
- () => (maxItems !== undefined ? data?.slice(0, maxItems) ?? [] : data ?? []),
239
+ () => (maxItems !== undefined ? (data?.slice(0, maxItems) ?? []) : (data ?? [])),
240
240
  [data, maxItems]
241
241
  );
242
242
 
@@ -323,6 +323,7 @@ const BaseSimpleImageSlider = forwardRef<
323
323
 
324
324
  const list = (
325
325
  <FlashList
326
+ // @ts-expect-error - there's just a small inconsistency with hitSlop typing
326
327
  renderScrollComponent={ScrollView}
327
328
  scrollEnabled={scrollEnabled}
328
329
  disableScrollViewPanResponder={enablePinchToZoom ? !scrollEnabled : false}
@@ -169,10 +169,7 @@ const FullScreenImageSlider = forwardRef<
169
169
 
170
170
  {renderDescription && data[internalIndex] ? (
171
171
  <StyledDescriptionContainer style={styles.descriptionContainer}>
172
- {renderDescription(
173
- data[internalIndex] as SimpleImageSliderItem,
174
- internalIndex
175
- )}
172
+ {renderDescription(data[internalIndex], internalIndex)}
176
173
  </StyledDescriptionContainer>
177
174
  ) : null}
178
175
  </StyledModalContentContainer>
@@ -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}