react-native-nitro-image-pipeline 1.0.0 → 1.1.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.
- package/README.md +8 -2
- package/android/src/main/java/com/margelo/nitro/nitroimagepipeline/HybridNitroImagePipeline.kt +15 -2
- package/ios/HybridNitroImagePipeline.swift +12 -2
- package/ios/RoundedCornersProcessor.swift +118 -0
- package/lib/commonjs/index.js +18 -2
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/index.js +18 -2
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/src/index.d.ts +8 -3
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/specs/nitro-image-toolkit.nitro.d.ts +18 -1
- package/lib/typescript/src/specs/nitro-image-toolkit.nitro.d.ts.map +1 -1
- package/nitrogen/generated/android/NitroImagePipeline+autolinking.cmake +1 -0
- package/nitrogen/generated/android/c++/JCornerRadii.hpp +69 -0
- package/nitrogen/generated/android/c++/JHybridNitroImagePipelineSpec.cpp +6 -0
- package/nitrogen/generated/android/c++/JOptions.hpp +9 -5
- package/nitrogen/generated/android/c++/JVariant_Double_CornerRadii.cpp +26 -0
- package/nitrogen/generated/android/c++/JVariant_Double_CornerRadii.hpp +70 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroimagepipeline/CornerRadii.kt +66 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroimagepipeline/Options.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroimagepipeline/Variant_Double_CornerRadii.kt +62 -0
- package/nitrogen/generated/ios/NitroImagePipeline-Swift-Cxx-Bridge.hpp +48 -0
- package/nitrogen/generated/ios/NitroImagePipeline-Swift-Cxx-Umbrella.hpp +4 -0
- package/nitrogen/generated/ios/c++/HybridNitroImagePipelineSpecSwift.hpp +4 -0
- package/nitrogen/generated/ios/swift/CornerRadii.swift +96 -0
- package/nitrogen/generated/ios/swift/Options.swift +27 -8
- package/nitrogen/generated/ios/swift/Variant_Double_CornerRadii.swift +30 -0
- package/nitrogen/generated/shared/c++/CornerRadii.hpp +95 -0
- package/nitrogen/generated/shared/c++/Options.hpp +9 -5
- package/package.json +1 -1
- package/src/index.ts +33 -4
- package/src/specs/nitro-image-toolkit.nitro.ts +20 -1
package/src/index.ts
CHANGED
|
@@ -4,11 +4,12 @@ import { NitroModules } from 'react-native-nitro-modules';
|
|
|
4
4
|
|
|
5
5
|
import type {
|
|
6
6
|
CacheOption,
|
|
7
|
+
CornerRadii,
|
|
7
8
|
NitroImagePipeline as NitroImagePipelineSpec,
|
|
8
9
|
Options,
|
|
9
10
|
} from './specs/nitro-image-toolkit.nitro';
|
|
10
11
|
|
|
11
|
-
export type { CacheOption, Options };
|
|
12
|
+
export type { CacheOption, CornerRadii, Options };
|
|
12
13
|
|
|
13
14
|
export const NitroImagePipeline =
|
|
14
15
|
NitroModules.createHybridObject<NitroImagePipelineSpec>('NitroImagePipeline');
|
|
@@ -51,7 +52,12 @@ export function useImage({
|
|
|
51
52
|
* React Native's `blurRadius`.
|
|
52
53
|
*/
|
|
53
54
|
blur?: number;
|
|
54
|
-
|
|
55
|
+
/**
|
|
56
|
+
* Corner radius in points, baked into the loaded bitmap. Pass a single
|
|
57
|
+
* number for uniform rounding, or per-corner radii (inline object literals
|
|
58
|
+
* are fine — the hook compares the radii by value, not identity).
|
|
59
|
+
*/
|
|
60
|
+
cornerRadius?: number | CornerRadii;
|
|
55
61
|
cache?: CacheOption;
|
|
56
62
|
}): Result {
|
|
57
63
|
const [image, setImage] = useState<Result>({
|
|
@@ -60,6 +66,17 @@ export function useImage({
|
|
|
60
66
|
});
|
|
61
67
|
const loadedUrlRef = useRef(url);
|
|
62
68
|
|
|
69
|
+
// Split the option into primitives so an inline `{ topLeft: 24, ... }`
|
|
70
|
+
// literal (new identity every render) doesn't re-trigger the effect.
|
|
71
|
+
const isUniformRadius = typeof cornerRadius === 'number';
|
|
72
|
+
const uniformRadius = isUniformRadius ? cornerRadius : 0;
|
|
73
|
+
const {
|
|
74
|
+
topLeft = 0,
|
|
75
|
+
topRight = 0,
|
|
76
|
+
bottomLeft = 0,
|
|
77
|
+
bottomRight = 0,
|
|
78
|
+
} = isUniformRadius ? {} : cornerRadius;
|
|
79
|
+
|
|
63
80
|
useEffect(() => {
|
|
64
81
|
let cancelled = false;
|
|
65
82
|
// Only reset to the loading state when the URL changes; for same-URL
|
|
@@ -74,7 +91,9 @@ export function useImage({
|
|
|
74
91
|
try {
|
|
75
92
|
const result = await NitroImagePipeline.loadImage(url, {
|
|
76
93
|
blur,
|
|
77
|
-
cornerRadius
|
|
94
|
+
cornerRadius: isUniformRadius
|
|
95
|
+
? uniformRadius
|
|
96
|
+
: { topLeft, topRight, bottomLeft, bottomRight },
|
|
78
97
|
cache,
|
|
79
98
|
});
|
|
80
99
|
|
|
@@ -92,7 +111,17 @@ export function useImage({
|
|
|
92
111
|
return () => {
|
|
93
112
|
cancelled = true;
|
|
94
113
|
};
|
|
95
|
-
}, [
|
|
114
|
+
}, [
|
|
115
|
+
url,
|
|
116
|
+
blur,
|
|
117
|
+
isUniformRadius,
|
|
118
|
+
uniformRadius,
|
|
119
|
+
topLeft,
|
|
120
|
+
topRight,
|
|
121
|
+
bottomLeft,
|
|
122
|
+
bottomRight,
|
|
123
|
+
cache,
|
|
124
|
+
]);
|
|
96
125
|
|
|
97
126
|
return image;
|
|
98
127
|
}
|
|
@@ -2,6 +2,17 @@ import type { Image } from 'react-native-nitro-image';
|
|
|
2
2
|
import type { HybridObject } from 'react-native-nitro-modules';
|
|
3
3
|
|
|
4
4
|
export type CacheOption = 'memory' | 'disk' | 'none';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Independent corner radii in points. Omitted corners stay square.
|
|
8
|
+
*/
|
|
9
|
+
export interface CornerRadii {
|
|
10
|
+
topLeft?: number;
|
|
11
|
+
topRight?: number;
|
|
12
|
+
bottomLeft?: number;
|
|
13
|
+
bottomRight?: number;
|
|
14
|
+
}
|
|
15
|
+
|
|
5
16
|
export type Options = {
|
|
6
17
|
/**
|
|
7
18
|
* Gaussian blur strength, given as the standard deviation (sigma) of the
|
|
@@ -14,7 +25,15 @@ export type Options = {
|
|
|
14
25
|
*/
|
|
15
26
|
blur?: number;
|
|
16
27
|
cache?: CacheOption;
|
|
17
|
-
|
|
28
|
+
/**
|
|
29
|
+
* Corner radius in points, baked into the loaded bitmap. Pass a single
|
|
30
|
+
* number to round all four corners uniformly, or a {@linkcode CornerRadii}
|
|
31
|
+
* object to round each corner independently (e.g. a "ticket" shape with
|
|
32
|
+
* larger bottom corners).
|
|
33
|
+
*
|
|
34
|
+
* @default 0 (square corners)
|
|
35
|
+
*/
|
|
36
|
+
cornerRadius?: number | CornerRadii;
|
|
18
37
|
};
|
|
19
38
|
|
|
20
39
|
export interface NitroImagePipeline extends HybridObject<{
|