react-native-nitro-image-pipeline 1.6.0 → 1.7.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 +88 -13
- package/android/src/main/java/com/margelo/nitro/nitroimagepipeline/HybridNitroImagePipeline.kt +51 -20
- package/android/src/main/java/com/margelo/nitro/nitroimagepipeline/PipelineImageLoader.kt +47 -8
- package/android/src/main/java/com/margelo/nitro/nitroimagepipeline/transform/FitGeometry.kt +104 -0
- package/android/src/main/java/com/margelo/nitro/nitroimagepipeline/transform/PipelineRoundedCornersTransformation.kt +103 -0
- package/android/src/main/java/com/margelo/nitro/nitroimagepipeline/transform/ResizeTransformation.kt +69 -16
- package/ios/FitResizeProcessor.swift +127 -0
- package/ios/HybridNitroImagePipeline.swift +41 -15
- package/ios/PipelineImageLoader.swift +107 -17
- package/lib/commonjs/NativePipelineImage.js +18 -3
- package/lib/commonjs/NativePipelineImage.js.map +1 -1
- package/lib/commonjs/PipelineImage.js +13 -1
- package/lib/commonjs/PipelineImage.js.map +1 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/resizeForStyle.js +3 -1
- package/lib/commonjs/resizeForStyle.js.map +1 -1
- package/lib/commonjs/useImage.js +6 -2
- package/lib/commonjs/useImage.js.map +1 -1
- package/lib/commonjs/usePipelineImageLoader.js +107 -9
- package/lib/commonjs/usePipelineImageLoader.js.map +1 -1
- package/lib/module/NativePipelineImage.js +18 -3
- package/lib/module/NativePipelineImage.js.map +1 -1
- package/lib/module/PipelineImage.js +13 -1
- package/lib/module/PipelineImage.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/resizeForStyle.js +3 -1
- package/lib/module/resizeForStyle.js.map +1 -1
- package/lib/module/useImage.js +6 -2
- package/lib/module/useImage.js.map +1 -1
- package/lib/module/usePipelineImageLoader.js +108 -10
- package/lib/module/usePipelineImageLoader.js.map +1 -1
- package/lib/typescript/src/NativePipelineImage.d.ts +44 -3
- package/lib/typescript/src/NativePipelineImage.d.ts.map +1 -1
- package/lib/typescript/src/PipelineImage.d.ts +28 -1
- package/lib/typescript/src/PipelineImage.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +1 -1
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/resizeForStyle.d.ts +3 -1
- package/lib/typescript/src/resizeForStyle.d.ts.map +1 -1
- package/lib/typescript/src/specs/nitro-image-toolkit.nitro.d.ts +83 -8
- package/lib/typescript/src/specs/nitro-image-toolkit.nitro.d.ts.map +1 -1
- package/lib/typescript/src/useImage.d.ts +3 -2
- package/lib/typescript/src/useImage.d.ts.map +1 -1
- package/lib/typescript/src/usePipelineImageLoader.d.ts +3 -1
- package/lib/typescript/src/usePipelineImageLoader.d.ts.map +1 -1
- package/nitrogen/generated/android/NitroImagePipelineOnLoad.cpp +4 -0
- package/nitrogen/generated/android/c++/JFunc_void_double_double.hpp +75 -0
- package/nitrogen/generated/android/c++/JFunc_void_std__string.hpp +76 -0
- package/nitrogen/generated/android/c++/JHybridNitroImagePipelineSpec.cpp +8 -0
- package/nitrogen/generated/android/c++/JOptions.hpp +2 -0
- package/nitrogen/generated/android/c++/JResizeFit.hpp +64 -0
- package/nitrogen/generated/android/c++/JResizeOptions.hpp +14 -4
- package/nitrogen/generated/android/c++/JViewOptions.hpp +42 -3
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroimagepipeline/Func_void_double_double.kt +78 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroimagepipeline/Func_void_std__string.kt +78 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroimagepipeline/ResizeFit.kt +25 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroimagepipeline/ResizeOptions.kt +14 -4
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroimagepipeline/ViewOptions.kt +29 -5
- package/nitrogen/generated/ios/NitroImagePipeline-Swift-Cxx-Bridge.cpp +16 -0
- package/nitrogen/generated/ios/NitroImagePipeline-Swift-Cxx-Bridge.hpp +107 -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/Func_void_double_double.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_std__string.swift +46 -0
- package/nitrogen/generated/ios/swift/ResizeFit.swift +48 -0
- package/nitrogen/generated/ios/swift/ResizeOptions.swift +31 -2
- package/nitrogen/generated/ios/swift/ViewOptions.swift +82 -1
- package/nitrogen/generated/shared/c++/ResizeFit.hpp +84 -0
- package/nitrogen/generated/shared/c++/ResizeOptions.hpp +14 -4
- package/nitrogen/generated/shared/c++/ViewOptions.hpp +24 -3
- package/package.json +1 -1
- package/src/NativePipelineImage.tsx +67 -3
- package/src/PipelineImage.tsx +39 -1
- package/src/index.ts +1 -0
- package/src/resizeForStyle.ts +3 -1
- package/src/specs/nitro-image-toolkit.nitro.ts +84 -8
- package/src/useImage.ts +13 -3
- package/src/usePipelineImageLoader.ts +115 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_reactNative","_reactNativeNitroImage","_resizeForStyle","_useImage","_jsxRuntime","sameSize","a","b","width","height","scaleRadius","cornerRadius","scale","topLeft","topRight","bottomLeft","bottomRight","PipelineImage","exports","forwardRef","url","blur","cache","onLoad","onError","style","onLayout","viewProps","ref","PixelRatio","get","styleSize","resizeForStyle","layoutSize","setLayoutSize","useState","undefined","resize","effectiveCornerRadius","cornerRadiusForStyle","image","error","useImage","enabled","onLoadRef","useRef","onErrorRef","useEffect","current","handleLayout","event","nativeEvent","layout","next","resizeForLayout","prev","jsx","NativeNitroImage","displayName"],"sourceRoot":"../../src","sources":["PipelineImage.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAOA,IAAAC,YAAA,GAAAD,OAAA;AAKA,IAAAE,sBAAA,GAAAF,OAAA;AAEA,IAAAG,eAAA,GAAAH,OAAA;
|
|
1
|
+
{"version":3,"names":["_react","require","_reactNative","_reactNativeNitroImage","_resizeForStyle","_useImage","_jsxRuntime","sameSize","a","b","width","height","scaleRadius","cornerRadius","scale","topLeft","topRight","bottomLeft","bottomRight","PipelineImage","exports","forwardRef","url","blur","cache","fit","allowUpscale","onLoad","onError","style","onLayout","resizeMode","viewProps","ref","PixelRatio","get","styleSize","resizeForStyle","layoutSize","setLayoutSize","useState","undefined","size","effectiveFit","resize","effectiveCornerRadius","cornerRadiusForStyle","image","error","useImage","enabled","onLoadRef","useRef","onErrorRef","useEffect","current","handleLayout","event","nativeEvent","layout","next","resizeForLayout","prev","jsx","NativeNitroImage","displayName"],"sourceRoot":"../../src","sources":["PipelineImage.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_NativePipelineImage","require","_NitroImagePipeline","_PipelineImage","_resolveImageSource","_resizeForStyle","_useImage","_usePipelineImageLoader"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,oBAAA,GAAAC,OAAA;AAKA,IAAAC,mBAAA,GAAAD,OAAA;AACA,IAAAE,cAAA,GAAAF,OAAA;AAKA,IAAAG,mBAAA,GAAAH,OAAA;AAKA,IAAAI,eAAA,GAAAJ,OAAA;
|
|
1
|
+
{"version":3,"names":["_NativePipelineImage","require","_NitroImagePipeline","_PipelineImage","_resolveImageSource","_resizeForStyle","_useImage","_usePipelineImageLoader"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,oBAAA,GAAAC,OAAA;AAKA,IAAAC,mBAAA,GAAAD,OAAA;AACA,IAAAE,cAAA,GAAAF,OAAA;AAKA,IAAAG,mBAAA,GAAAH,OAAA;AAKA,IAAAI,eAAA,GAAAJ,OAAA;AAaA,IAAAK,SAAA,GAAAL,OAAA;AACA,IAAAM,uBAAA,GAAAN,OAAA","ignoreList":[]}
|
|
@@ -10,7 +10,9 @@ var _reactNative = require("react-native");
|
|
|
10
10
|
/**
|
|
11
11
|
* Converts a layout size in points (dp) to the pipeline's `resize` option in
|
|
12
12
|
* whole bitmap pixels using `PixelRatio.getPixelSizeForLayoutSize`. Returns
|
|
13
|
-
* `undefined` unless both values are positive numbers.
|
|
13
|
+
* `undefined` unless both values are positive numbers. Spread a `fit` into
|
|
14
|
+
* the result for the other resize modes — under `contain` and `center` the
|
|
15
|
+
* size is the box the bitmap fits in, not necessarily its final size.
|
|
14
16
|
*/
|
|
15
17
|
function resizeForLayout(width, height) {
|
|
16
18
|
if (typeof width !== 'number' || typeof height !== 'number') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","resizeForLayout","width","height","undefined","pixelWidth","PixelRatio","getPixelSizeForLayoutSize","pixelHeight","resizeForStyle","style","flat","StyleSheet","flatten","cornerRadiusForStyle","base","borderRadius","topLeft","borderTopLeftRadius","topRight","borderTopRightRadius","bottomLeft","borderBottomLeftRadius","bottomRight","borderBottomRightRadius"],"sourceRoot":"../../src","sources":["resizeForStyle.ts"],"mappings":";;;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAYA;AACA;AACA;AACA;AACA;AACO,SAASC,eAAeA,CAC7BC,KAAc,EACdC,MAAe,EACY;EAC3B,IAAI,OAAOD,KAAK,KAAK,QAAQ,IAAI,OAAOC,MAAM,KAAK,QAAQ,EAAE;IAC3D,OAAOC,SAAS;EAClB;EACA,MAAMC,UAAU,GAAGC,uBAAU,CAACC,yBAAyB,CAACL,KAAK,CAAC;EAC9D,MAAMM,WAAW,GAAGF,uBAAU,CAACC,yBAAyB,CAACJ,MAAM,CAAC;EAChE,OAAOE,UAAU,GAAG,CAAC,IAAIG,WAAW,GAAG,CAAC,GACpC;IAAEN,KAAK,EAAEG,UAAU;IAAEF,MAAM,EAAEK;EAAY,CAAC,GAC1CJ,SAAS;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASK,cAAcA,CAC5BC,KAA2B,EACA;EAC3B,MAAMC,IAAI,GAAGC,uBAAU,CAACC,OAAO,CAACH,KAAK,CAAC;EACtC,OAAOT,eAAe,CAACU,IAAI,EAAET,KAAK,EAAES,IAAI,EAAER,MAAM,CAAC;AACnD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASW,oBAAoBA,CAClCJ,KAA2B,EACO;EAClC,MAAMC,IAAI,GAAGC,uBAAU,CAACC,OAAO,CAACH,KAAK,CAAC;EACtC,MAAMK,IAAI,GACR,OAAOJ,IAAI,EAAEK,YAAY,KAAK,QAAQ,GAAGL,IAAI,CAACK,YAAY,GAAGZ,SAAS;EACxE,MAAMa,OAAO,GACX,OAAON,IAAI,EAAEO,mBAAmB,KAAK,QAAQ,GACzCP,IAAI,CAACO,mBAAmB,GACxBd,SAAS;EACf,MAAMe,QAAQ,GACZ,OAAOR,IAAI,EAAES,oBAAoB,KAAK,QAAQ,GAC1CT,IAAI,CAACS,oBAAoB,GACzBhB,SAAS;EACf,MAAMiB,UAAU,GACd,OAAOV,IAAI,EAAEW,sBAAsB,KAAK,QAAQ,GAC5CX,IAAI,CAACW,sBAAsB,GAC3BlB,SAAS;EACf,MAAMmB,WAAW,GACf,OAAOZ,IAAI,EAAEa,uBAAuB,KAAK,QAAQ,GAC7Cb,IAAI,CAACa,uBAAuB,GAC5BpB,SAAS;EAEf,IACEa,OAAO,KAAKb,SAAS,IACrBe,QAAQ,KAAKf,SAAS,IACtBiB,UAAU,KAAKjB,SAAS,IACxBmB,WAAW,KAAKnB,SAAS,EACzB;IACA,OAAOW,IAAI;EACb;EAEA,OAAO;IACLE,OAAO,EAAEA,OAAO,IAAIF,IAAI;IACxBI,QAAQ,EAAEA,QAAQ,IAAIJ,IAAI;IAC1BM,UAAU,EAAEA,UAAU,IAAIN,IAAI;IAC9BQ,WAAW,EAAEA,WAAW,IAAIR;EAC9B,CAAC;AACH","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_reactNative","require","resizeForLayout","width","height","undefined","pixelWidth","PixelRatio","getPixelSizeForLayoutSize","pixelHeight","resizeForStyle","style","flat","StyleSheet","flatten","cornerRadiusForStyle","base","borderRadius","topLeft","borderTopLeftRadius","topRight","borderTopRightRadius","bottomLeft","borderBottomLeftRadius","bottomRight","borderBottomRightRadius"],"sourceRoot":"../../src","sources":["resizeForStyle.ts"],"mappings":";;;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAYA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,eAAeA,CAC7BC,KAAc,EACdC,MAAe,EACY;EAC3B,IAAI,OAAOD,KAAK,KAAK,QAAQ,IAAI,OAAOC,MAAM,KAAK,QAAQ,EAAE;IAC3D,OAAOC,SAAS;EAClB;EACA,MAAMC,UAAU,GAAGC,uBAAU,CAACC,yBAAyB,CAACL,KAAK,CAAC;EAC9D,MAAMM,WAAW,GAAGF,uBAAU,CAACC,yBAAyB,CAACJ,MAAM,CAAC;EAChE,OAAOE,UAAU,GAAG,CAAC,IAAIG,WAAW,GAAG,CAAC,GACpC;IAAEN,KAAK,EAAEG,UAAU;IAAEF,MAAM,EAAEK;EAAY,CAAC,GAC1CJ,SAAS;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASK,cAAcA,CAC5BC,KAA2B,EACA;EAC3B,MAAMC,IAAI,GAAGC,uBAAU,CAACC,OAAO,CAACH,KAAK,CAAC;EACtC,OAAOT,eAAe,CAACU,IAAI,EAAET,KAAK,EAAES,IAAI,EAAER,MAAM,CAAC;AACnD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASW,oBAAoBA,CAClCJ,KAA2B,EACO;EAClC,MAAMC,IAAI,GAAGC,uBAAU,CAACC,OAAO,CAACH,KAAK,CAAC;EACtC,MAAMK,IAAI,GACR,OAAOJ,IAAI,EAAEK,YAAY,KAAK,QAAQ,GAAGL,IAAI,CAACK,YAAY,GAAGZ,SAAS;EACxE,MAAMa,OAAO,GACX,OAAON,IAAI,EAAEO,mBAAmB,KAAK,QAAQ,GACzCP,IAAI,CAACO,mBAAmB,GACxBd,SAAS;EACf,MAAMe,QAAQ,GACZ,OAAOR,IAAI,EAAES,oBAAoB,KAAK,QAAQ,GAC1CT,IAAI,CAACS,oBAAoB,GACzBhB,SAAS;EACf,MAAMiB,UAAU,GACd,OAAOV,IAAI,EAAEW,sBAAsB,KAAK,QAAQ,GAC5CX,IAAI,CAACW,sBAAsB,GAC3BlB,SAAS;EACf,MAAMmB,WAAW,GACf,OAAOZ,IAAI,EAAEa,uBAAuB,KAAK,QAAQ,GAC7Cb,IAAI,CAACa,uBAAuB,GAC5BpB,SAAS;EAEf,IACEa,OAAO,KAAKb,SAAS,IACrBe,QAAQ,KAAKf,SAAS,IACtBiB,UAAU,KAAKjB,SAAS,IACxBmB,WAAW,KAAKnB,SAAS,EACzB;IACA,OAAOW,IAAI;EACb;EAEA,OAAO;IACLE,OAAO,EAAEA,OAAO,IAAIF,IAAI;IACxBI,QAAQ,EAAEA,QAAQ,IAAIJ,IAAI;IAC1BM,UAAU,EAAEA,UAAU,IAAIN,IAAI;IAC9BQ,WAAW,EAAEA,WAAW,IAAIR;EAC9B,CAAC;AACH","ignoreList":[]}
|
package/lib/commonjs/useImage.js
CHANGED
|
@@ -42,6 +42,8 @@ function useImage({
|
|
|
42
42
|
} = isUniformRadius ? {} : cornerRadius;
|
|
43
43
|
const resizeWidth = resize?.width ?? 0;
|
|
44
44
|
const resizeHeight = resize?.height ?? 0;
|
|
45
|
+
const resizeFit = resize?.fit;
|
|
46
|
+
const resizeAllowUpscale = resize?.allowUpscale;
|
|
45
47
|
(0, _react.useEffect)(() => {
|
|
46
48
|
let cancelled = false;
|
|
47
49
|
// Only reset to the loading state when the URL changes; for same-URL
|
|
@@ -69,7 +71,9 @@ function useImage({
|
|
|
69
71
|
},
|
|
70
72
|
resize: resizeWidth > 0 && resizeHeight > 0 ? {
|
|
71
73
|
width: resizeWidth,
|
|
72
|
-
height: resizeHeight
|
|
74
|
+
height: resizeHeight,
|
|
75
|
+
fit: resizeFit,
|
|
76
|
+
allowUpscale: resizeAllowUpscale
|
|
73
77
|
} : undefined,
|
|
74
78
|
cache
|
|
75
79
|
});
|
|
@@ -93,7 +97,7 @@ function useImage({
|
|
|
93
97
|
return () => {
|
|
94
98
|
cancelled = true;
|
|
95
99
|
};
|
|
96
|
-
}, [url, blur, isUniformRadius, uniformRadius, topLeft, topRight, bottomLeft, bottomRight, resizeWidth, resizeHeight, cache, enabled]);
|
|
100
|
+
}, [url, blur, isUniformRadius, uniformRadius, topLeft, topRight, bottomLeft, bottomRight, resizeWidth, resizeHeight, resizeFit, resizeAllowUpscale, cache, enabled]);
|
|
97
101
|
return image;
|
|
98
102
|
}
|
|
99
103
|
//# sourceMappingURL=useImage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_NitroImagePipeline","_resolveImageSource","useImage","url","blur","cornerRadius","resize","cache","enabled","image","setImage","useState","undefined","error","loadedUrlRef","useRef","isUniformRadius","uniformRadius","topLeft","topRight","bottomLeft","bottomRight","resizeWidth","width","resizeHeight","height","useEffect","cancelled","current","result","NitroImagePipeline","loadImage","resolveImageUrl","e","Error"],"sourceRoot":"../../src","sources":["useImage.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAGA,IAAAC,mBAAA,GAAAD,OAAA;AACA,IAAAE,mBAAA,GAAAF,OAAA;AAwBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASG,QAAQA,CAAC;EACvBC,GAAG;EACHC,IAAI,GAAG,CAAC;EACRC,YAAY,GAAG,CAAC;EAChBC,MAAM;EACNC,KAAK;EACLC,OAAO,GAAG;
|
|
1
|
+
{"version":3,"names":["_react","require","_NitroImagePipeline","_resolveImageSource","useImage","url","blur","cornerRadius","resize","cache","enabled","image","setImage","useState","undefined","error","loadedUrlRef","useRef","isUniformRadius","uniformRadius","topLeft","topRight","bottomLeft","bottomRight","resizeWidth","width","resizeHeight","height","resizeFit","fit","resizeAllowUpscale","allowUpscale","useEffect","cancelled","current","result","NitroImagePipeline","loadImage","resolveImageUrl","e","Error"],"sourceRoot":"../../src","sources":["useImage.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -7,6 +7,31 @@ exports.usePipelineImageLoader = usePipelineImageLoader;
|
|
|
7
7
|
var _react = require("react");
|
|
8
8
|
var _NitroImagePipeline = require("./NitroImagePipeline");
|
|
9
9
|
var _resolveImageSource = require("./resolveImageSource");
|
|
10
|
+
// Identifies a loader in the callbacks below without them capturing it. A
|
|
11
|
+
// callback the native loader owns that captured the loader back would be a
|
|
12
|
+
// cycle across the language boundary — neither side collectable, and the JS
|
|
13
|
+
// runtime left to take it apart at teardown.
|
|
14
|
+
let nextLoaderToken = 0;
|
|
15
|
+
/**
|
|
16
|
+
* The callbacks handed to a native loader. Built out here, where the scope
|
|
17
|
+
* holds nothing but the token and the two refs, so the loader can't end up
|
|
18
|
+
* captured by a callback it owns.
|
|
19
|
+
*/
|
|
20
|
+
function makeReporters(token, activeToken, callbacks) {
|
|
21
|
+
return {
|
|
22
|
+
onLoad: (width, height) => {
|
|
23
|
+
if (activeToken.current === token) {
|
|
24
|
+
callbacks.current.onLoad?.(width, height);
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
onError: message => {
|
|
28
|
+
if (activeToken.current === token) {
|
|
29
|
+
callbacks.current.onError?.(message);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
|
|
10
35
|
/**
|
|
11
36
|
* Creates (and memoizes) an {@linkcode ImageLoader} for `source` — a URL
|
|
12
37
|
* string or a `require()`d asset, see {@linkcode ImageSource} — to pass to
|
|
@@ -17,7 +42,9 @@ var _resolveImageSource = require("./resolveImageSource");
|
|
|
17
42
|
*
|
|
18
43
|
* `blur`/`cornerRadius` are in **points** (unlike `useImage`, where they are
|
|
19
44
|
* bitmap pixels); the screen scale is applied natively. Inline object
|
|
20
|
-
* literals are fine — options are compared by value, not identity
|
|
45
|
+
* literals are fine — options are compared by value, not identity, and the
|
|
46
|
+
* `onLoad`/`onError` callbacks are read through a ref, so inline arrows don't
|
|
47
|
+
* recreate the loader either.
|
|
21
48
|
*/
|
|
22
49
|
function usePipelineImageLoader(source, options) {
|
|
23
50
|
// Split the options into primitives (like useImage does) so an inline
|
|
@@ -37,7 +64,42 @@ function usePipelineImageLoader(source, options) {
|
|
|
37
64
|
} = isUniformRadius || cornerRadius === undefined ? {} : cornerRadius;
|
|
38
65
|
const resizeWidth = options?.resize?.width;
|
|
39
66
|
const resizeHeight = options?.resize?.height;
|
|
40
|
-
|
|
67
|
+
const resizeFit = options?.resize?.fit;
|
|
68
|
+
const resizeAllowUpscale = options?.resize?.allowUpscale;
|
|
69
|
+
const fit = options?.fit;
|
|
70
|
+
const allowUpscale = options?.allowUpscale;
|
|
71
|
+
const onLoad = options?.onLoad;
|
|
72
|
+
const onError = options?.onError;
|
|
73
|
+
// Only *whether* a callback is set can change the loader: what the native
|
|
74
|
+
// side gets is a wrapper that reads the latest callbacks from a ref (like
|
|
75
|
+
// PipelineImage does). So an inline arrow — a new identity every render —
|
|
76
|
+
// doesn't recreate the loader and re-trigger the native load.
|
|
77
|
+
const hasOnLoad = onLoad !== undefined;
|
|
78
|
+
const hasOnError = onError !== undefined;
|
|
79
|
+
const callbacks = (0, _react.useRef)({
|
|
80
|
+
onLoad,
|
|
81
|
+
onError
|
|
82
|
+
});
|
|
83
|
+
// A layout effect, not a passive one: passive effects are flushed in a later
|
|
84
|
+
// task, so a load reported between the commit and that flush would read the
|
|
85
|
+
// previous render's callbacks — a callback added alongside a new loader
|
|
86
|
+
// could miss its only event. This runs in the same task as the commit, and
|
|
87
|
+
// the view can't reach the loader before the commit installs it, so the ref
|
|
88
|
+
// is always current by the time native calls back. (Assigning it during
|
|
89
|
+
// render instead would mutate on renders React throws away.)
|
|
90
|
+
(0, _react.useLayoutEffect)(() => {
|
|
91
|
+
callbacks.current = {
|
|
92
|
+
onLoad,
|
|
93
|
+
onError
|
|
94
|
+
};
|
|
95
|
+
});
|
|
96
|
+
// The token of the loader the view is currently on. Swapping loaders (a
|
|
97
|
+
// changed url or options) never drops the old one — the view just stops
|
|
98
|
+
// referring to it — so a load it already had in flight can still report.
|
|
99
|
+
// Without this check the wrappers, which read the latest callbacks, would
|
|
100
|
+
// hand the previous image's size to the current `onLoad`.
|
|
101
|
+
const activeToken = (0, _react.useRef)(-1);
|
|
102
|
+
const memoized = (0, _react.useMemo)(() => {
|
|
41
103
|
// Runs during render, so an unregistered `require()` id must not throw:
|
|
42
104
|
// it becomes a URL the native loader fails on at load time instead.
|
|
43
105
|
const url = (0, _resolveImageSource.resolveImageUrlOrFallback)(source);
|
|
@@ -47,28 +109,64 @@ function usePipelineImageLoader(source, options) {
|
|
|
47
109
|
bottomLeft,
|
|
48
110
|
bottomRight
|
|
49
111
|
} : undefined;
|
|
112
|
+
// What is loaded — the callbacks are deliberately not part of it, so two
|
|
113
|
+
// loaders that differ only in them are the same image.
|
|
50
114
|
const stableOptions = {
|
|
51
115
|
blur,
|
|
52
116
|
cache,
|
|
53
117
|
cornerRadius: cornerRadiusOption,
|
|
54
118
|
resize: resizeWidth !== undefined && resizeHeight !== undefined ? {
|
|
55
119
|
width: resizeWidth,
|
|
56
|
-
height: resizeHeight
|
|
57
|
-
|
|
120
|
+
height: resizeHeight,
|
|
121
|
+
fit: resizeFit,
|
|
122
|
+
allowUpscale: resizeAllowUpscale
|
|
123
|
+
} : undefined,
|
|
124
|
+
fit,
|
|
125
|
+
allowUpscale
|
|
58
126
|
};
|
|
59
|
-
const
|
|
127
|
+
const token = nextLoaderToken++;
|
|
128
|
+
// The reporters read the refs, but only when the native side calls them —
|
|
129
|
+
// the rule can't see that they aren't called here.
|
|
130
|
+
// oxlint-disable-next-line react/refs
|
|
131
|
+
const reporters = makeReporters(token, activeToken, callbacks);
|
|
132
|
+
const loader = _NitroImagePipeline.NitroImagePipeline.createImageLoader(url, {
|
|
133
|
+
...stableOptions,
|
|
134
|
+
// Passed only when the caller wants them: without a callback nothing
|
|
135
|
+
// ever crosses into JS, which is the point of the native path.
|
|
136
|
+
onLoad: hasOnLoad ? reporters.onLoad : undefined,
|
|
137
|
+
onError: hasOnError ? reporters.onError : undefined
|
|
138
|
+
});
|
|
60
139
|
// `NativeNitroImage` needs a way to tell two loader instances apart when
|
|
61
140
|
// diffing its `image` prop; tag the loader with what it will load (the
|
|
62
|
-
// same convention react-native-nitro-image's own loaders use).
|
|
141
|
+
// same convention react-native-nitro-image's own loaders use). Toggling a
|
|
142
|
+
// callback on or off makes a different loader, so the tag has to say so —
|
|
143
|
+
// otherwise the view keeps the old one installed. Their identities stay
|
|
144
|
+
// out of it: those don't change what is loaded, or which loader this is.
|
|
63
145
|
Object.defineProperty(loader, '__source', {
|
|
64
146
|
enumerable: true,
|
|
65
147
|
configurable: true,
|
|
66
148
|
value: {
|
|
67
149
|
url,
|
|
68
|
-
options: stableOptions
|
|
150
|
+
options: stableOptions,
|
|
151
|
+
callbacks: {
|
|
152
|
+
onLoad: hasOnLoad,
|
|
153
|
+
onError: hasOnError
|
|
154
|
+
}
|
|
69
155
|
}
|
|
70
156
|
});
|
|
71
|
-
return
|
|
72
|
-
|
|
157
|
+
return {
|
|
158
|
+
loader,
|
|
159
|
+
token
|
|
160
|
+
};
|
|
161
|
+
}, [source, blur, cache, isUniformRadius, uniformRadius, hasCornerObject, topLeft, topRight, bottomLeft, bottomRight, resizeWidth, resizeHeight, resizeFit, resizeAllowUpscale, fit, allowUpscale, hasOnLoad, hasOnError,
|
|
162
|
+
// Stable ref objects; listed to satisfy the exhaustive-deps rules.
|
|
163
|
+
activeToken, callbacks]);
|
|
164
|
+
|
|
165
|
+
// Same reasoning as the callbacks ref: a layout effect is current before the
|
|
166
|
+
// view — which the commit has only just handed this loader — can report.
|
|
167
|
+
(0, _react.useLayoutEffect)(() => {
|
|
168
|
+
activeToken.current = memoized.token;
|
|
169
|
+
}, [memoized, activeToken]);
|
|
170
|
+
return memoized.loader;
|
|
73
171
|
}
|
|
74
172
|
//# sourceMappingURL=usePipelineImageLoader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_NitroImagePipeline","_resolveImageSource","usePipelineImageLoader","source","options","blur","cache","cornerRadius","isUniformRadius","uniformRadius","hasCornerObject","undefined","topLeft","topRight","bottomLeft","bottomRight","resizeWidth","resize","
|
|
1
|
+
{"version":3,"names":["_react","require","_NitroImagePipeline","_resolveImageSource","nextLoaderToken","makeReporters","token","activeToken","callbacks","onLoad","width","height","current","onError","message","usePipelineImageLoader","source","options","blur","cache","cornerRadius","isUniformRadius","uniformRadius","hasCornerObject","undefined","topLeft","topRight","bottomLeft","bottomRight","resizeWidth","resize","resizeHeight","resizeFit","fit","resizeAllowUpscale","allowUpscale","hasOnLoad","hasOnError","useRef","useLayoutEffect","memoized","useMemo","url","resolveImageUrlOrFallback","cornerRadiusOption","stableOptions","reporters","loader","NitroImagePipeline","createImageLoader","Object","defineProperty","enumerable","configurable","value"],"sourceRoot":"../../src","sources":["usePipelineImageLoader.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAGA,IAAAC,mBAAA,GAAAD,OAAA;AACA,IAAAE,mBAAA,GAAAF,OAAA;AASA;AACA;AACA;AACA;AACA,IAAIG,eAAe,GAAG,CAAC;AAIvB;AACA;AACA;AACA;AACA;AACA,SAASC,aAAaA,CACpBC,KAAa,EACbC,WAA8B,EAC9BC,SAA+B,EACV;EACrB,OAAO;IACLC,MAAM,EAAEA,CAACC,KAAK,EAAEC,MAAM,KAAK;MACzB,IAAIJ,WAAW,CAACK,OAAO,KAAKN,KAAK,EAAE;QACjCE,SAAS,CAACI,OAAO,CAACH,MAAM,GAAGC,KAAK,EAAEC,MAAM,CAAC;MAC3C;IACF,CAAC;IACDE,OAAO,EAAGC,OAAO,IAAK;MACpB,IAAIP,WAAW,CAACK,OAAO,KAAKN,KAAK,EAAE;QACjCE,SAAS,CAACI,OAAO,CAACC,OAAO,GAAGC,OAAO,CAAC;MACtC;IACF;EACF,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,sBAAsBA,CACpCC,MAAmB,EACnBC,OAAqB,EACR;EACb;EACA;EACA;EACA,MAAMC,IAAI,GAAGD,OAAO,EAAEC,IAAI;EAC1B,MAAMC,KAAK,GAAGF,OAAO,EAAEE,KAAK;EAC5B,MAAMC,YAAY,GAAGH,OAAO,EAAEG,YAAY;EAC1C,MAAMC,eAAe,GAAG,OAAOD,YAAY,KAAK,QAAQ;EACxD,MAAME,aAAa,GAAGD,eAAe,GAAGD,YAAY,GAAG,CAAC;EACxD,MAAMG,eAAe,GAAG,CAACF,eAAe,IAAID,YAAY,KAAKI,SAAS;EACtE,MAAM;IACJC,OAAO,GAAG,CAAC;IACXC,QAAQ,GAAG,CAAC;IACZC,UAAU,GAAG,CAAC;IACdC,WAAW,GAAG;EAChB,CAAC,GAAGP,eAAe,IAAID,YAAY,KAAKI,SAAS,GAAG,CAAC,CAAC,GAAGJ,YAAY;EACrE,MAAMS,WAAW,GAAGZ,OAAO,EAAEa,MAAM,EAAEpB,KAAK;EAC1C,MAAMqB,YAAY,GAAGd,OAAO,EAAEa,MAAM,EAAEnB,MAAM;EAC5C,MAAMqB,SAAS,GAAGf,OAAO,EAAEa,MAAM,EAAEG,GAAG;EACtC,MAAMC,kBAAkB,GAAGjB,OAAO,EAAEa,MAAM,EAAEK,YAAY;EACxD,MAAMF,GAAG,GAAGhB,OAAO,EAAEgB,GAAG;EACxB,MAAME,YAAY,GAAGlB,OAAO,EAAEkB,YAAY;EAC1C,MAAM1B,MAAM,GAAGQ,OAAO,EAAER,MAAM;EAC9B,MAAMI,OAAO,GAAGI,OAAO,EAAEJ,OAAO;EAChC;EACA;EACA;EACA;EACA,MAAMuB,SAAS,GAAG3B,MAAM,KAAKe,SAAS;EACtC,MAAMa,UAAU,GAAGxB,OAAO,KAAKW,SAAS;EACxC,MAAMhB,SAAS,GAAG,IAAA8B,aAAM,EAAC;IAAE7B,MAAM;IAAEI;EAAQ,CAAC,CAAC;EAC7C;EACA;EACA;EACA;EACA;EACA;EACA;EACA,IAAA0B,sBAAe,EAAC,MAAM;IACpB/B,SAAS,CAACI,OAAO,GAAG;MAAEH,MAAM;MAAEI;IAAQ,CAAC;EACzC,CAAC,CAAC;EACF;EACA;EACA;EACA;EACA;EACA,MAAMN,WAAW,GAAG,IAAA+B,aAAM,EAAC,CAAC,CAAC,CAAC;EAE9B,MAAME,QAAQ,GAAG,IAAAC,cAAO,EAAC,MAAM;IAC7B;IACA;IACA,MAAMC,GAAG,GAAG,IAAAC,6CAAyB,EAAC3B,MAAM,CAAC;IAC7C,MAAM4B,kBAAoD,GAAGvB,eAAe,GACxEC,aAAa,GACbC,eAAe,GACb;MAAEE,OAAO;MAAEC,QAAQ;MAAEC,UAAU;MAAEC;IAAY,CAAC,GAC9CJ,SAAS;IACf;IACA;IACA,MAAMqB,aAA0B,GAAG;MACjC3B,IAAI;MACJC,KAAK;MACLC,YAAY,EAAEwB,kBAAkB;MAChCd,MAAM,EACJD,WAAW,KAAKL,SAAS,IAAIO,YAAY,KAAKP,SAAS,GACnD;QACEd,KAAK,EAAEmB,WAAW;QAClBlB,MAAM,EAAEoB,YAAY;QACpBE,GAAG,EAAED,SAAS;QACdG,YAAY,EAAED;MAChB,CAAC,GACDV,SAAS;MACfS,GAAG;MACHE;IACF,CAAC;IACD,MAAM7B,KAAK,GAAGF,eAAe,EAAE;IAC/B;IACA;IACA;IACA,MAAM0C,SAAS,GAAGzC,aAAa,CAACC,KAAK,EAAEC,WAAW,EAAEC,SAAS,CAAC;IAC9D,MAAMuC,MAAM,GAAGC,sCAAkB,CAACC,iBAAiB,CAACP,GAAG,EAAE;MACvD,GAAGG,aAAa;MAChB;MACA;MACApC,MAAM,EAAE2B,SAAS,GAAGU,SAAS,CAACrC,MAAM,GAAGe,SAAS;MAChDX,OAAO,EAAEwB,UAAU,GAAGS,SAAS,CAACjC,OAAO,GAAGW;IAC5C,CAAC,CAAC;IACF;IACA;IACA;IACA;IACA;IACA;IACA0B,MAAM,CAACC,cAAc,CAACJ,MAAM,EAAE,UAAU,EAAE;MACxCK,UAAU,EAAE,IAAI;MAChBC,YAAY,EAAE,IAAI;MAClBC,KAAK,EAAE;QACLZ,GAAG;QACHzB,OAAO,EAAE4B,aAAa;QACtBrC,SAAS,EAAE;UAAEC,MAAM,EAAE2B,SAAS;UAAEvB,OAAO,EAAEwB;QAAW;MACtD;IACF,CAAC,CAAC;IACF,OAAO;MAAEU,MAAM;MAAEzC;IAAM,CAAC;EAC1B,CAAC,EAAE,CACDU,MAAM,EACNE,IAAI,EACJC,KAAK,EACLE,eAAe,EACfC,aAAa,EACbC,eAAe,EACfE,OAAO,EACPC,QAAQ,EACRC,UAAU,EACVC,WAAW,EACXC,WAAW,EACXE,YAAY,EACZC,SAAS,EACTE,kBAAkB,EAClBD,GAAG,EACHE,YAAY,EACZC,SAAS,EACTC,UAAU;EACV;EACA9B,WAAW,EACXC,SAAS,CACV,CAAC;;EAEF;EACA;EACA,IAAA+B,sBAAe,EAAC,MAAM;IACpBhC,WAAW,CAACK,OAAO,GAAG4B,QAAQ,CAAClC,KAAK;EACtC,CAAC,EAAE,CAACkC,QAAQ,EAAEjC,WAAW,CAAC,CAAC;EAE3B,OAAOiC,QAAQ,CAACO,MAAM;AACxB","ignoreList":[]}
|
|
@@ -21,8 +21,9 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
21
21
|
* the same pipeline and caches as `useImage`/`preLoadImage`.
|
|
22
22
|
*
|
|
23
23
|
* Compared to `PipelineImage`:
|
|
24
|
-
* -
|
|
25
|
-
* JS
|
|
24
|
+
* - `onLoad` reports the bitmap's pixel size rather than the `Image` itself,
|
|
25
|
+
* which never crosses into JS, and can fire more than once for a view. Use
|
|
26
|
+
* `PipelineImage` (or `useImage`) when you need the `Image`.
|
|
26
27
|
* - The bitmap is loaded once at the size the view first has; if the view is
|
|
27
28
|
* resized later, the bitmap scales with it instead of reloading.
|
|
28
29
|
* @example
|
|
@@ -40,16 +41,29 @@ export const NativePipelineImage = /*#__PURE__*/forwardRef(function NativePipeli
|
|
|
40
41
|
cornerRadius,
|
|
41
42
|
cache,
|
|
42
43
|
resize,
|
|
44
|
+
fit,
|
|
45
|
+
allowUpscale,
|
|
46
|
+
onLoad,
|
|
47
|
+
onError,
|
|
43
48
|
style,
|
|
49
|
+
resizeMode,
|
|
44
50
|
...viewProps
|
|
45
51
|
}, ref) {
|
|
46
52
|
// Same precedence as PipelineImage: an explicit prop wins over style.
|
|
47
53
|
const effectiveCornerRadius = cornerRadius ?? cornerRadiusForStyle(style);
|
|
54
|
+
// Inline arrows are fine here — the hook keeps the callbacks in a ref, so a
|
|
55
|
+
// new identity doesn't recreate the loader (which would reload the image).
|
|
48
56
|
const loader = usePipelineImageLoader(url, {
|
|
49
57
|
blur,
|
|
50
58
|
cornerRadius: effectiveCornerRadius,
|
|
51
59
|
cache,
|
|
52
|
-
resize
|
|
60
|
+
resize,
|
|
61
|
+
// Same four values as the view's resizeMode; an explicit `fit` decouples
|
|
62
|
+
// them.
|
|
63
|
+
fit: fit ?? resizeMode,
|
|
64
|
+
allowUpscale,
|
|
65
|
+
onLoad,
|
|
66
|
+
onError
|
|
53
67
|
});
|
|
54
68
|
return /*#__PURE__*/_jsx(NativeNitroImage
|
|
55
69
|
// Before the spread so a caller-provided recyclingKey wins.
|
|
@@ -58,6 +72,7 @@ export const NativePipelineImage = /*#__PURE__*/forwardRef(function NativePipeli
|
|
|
58
72
|
...viewProps,
|
|
59
73
|
ref: ref,
|
|
60
74
|
style: style,
|
|
75
|
+
resizeMode: resizeMode,
|
|
61
76
|
image: loader
|
|
62
77
|
});
|
|
63
78
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["forwardRef","NativeNitroImage","cornerRadiusForStyle","recyclingKeyFor","usePipelineImageLoader","jsx","_jsx","NativePipelineImage","url","blur","cornerRadius","cache","resize","style","viewProps","ref","effectiveCornerRadius","loader","recyclingKey","image","displayName"],"sourceRoot":"../../src","sources":["NativePipelineImage.tsx"],"mappings":";;AAAA,SAA4BA,UAAU,QAAQ,OAAO;AAErD,SAASC,gBAAgB,QAAQ,0BAA0B;AAE3D,SAASC,oBAAoB,QAAQ,kBAAkB;AACvD,SAA2BC,eAAe,QAAQ,sBAAsB;
|
|
1
|
+
{"version":3,"names":["forwardRef","NativeNitroImage","cornerRadiusForStyle","recyclingKeyFor","usePipelineImageLoader","jsx","_jsx","NativePipelineImage","url","blur","cornerRadius","cache","resize","fit","allowUpscale","onLoad","onError","style","resizeMode","viewProps","ref","effectiveCornerRadius","loader","recyclingKey","image","displayName"],"sourceRoot":"../../src","sources":["NativePipelineImage.tsx"],"mappings":";;AAAA,SAA4BA,UAAU,QAAQ,OAAO;AAErD,SAASC,gBAAgB,QAAQ,0BAA0B;AAE3D,SAASC,oBAAoB,QAAQ,kBAAkB;AACvD,SAA2BC,eAAe,QAAQ,sBAAsB;AAOxE,SAASC,sBAAsB,QAAQ,0BAA0B;;AAKjE;AACA;AACA;AACA;AACA;AAJA,SAAAC,GAAA,IAAAC,IAAA;AA+EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,mBAAmB,gBAAGP,UAAU,CAG3C,SAASO,mBAAmBA,CAC5B;EACEC,GAAG;EACHC,IAAI;EACJC,YAAY;EACZC,KAAK;EACLC,MAAM;EACNC,GAAG;EACHC,YAAY;EACZC,MAAM;EACNC,OAAO;EACPC,KAAK;EACLC,UAAU;EACV,GAAGC;AACL,CAAC,EACDC,GAAG,EACH;EACA;EACA,MAAMC,qBAAqB,GAAGX,YAAY,IAAIR,oBAAoB,CAACe,KAAK,CAAC;EACzE;EACA;EACA,MAAMK,MAAM,GAAGlB,sBAAsB,CAACI,GAAG,EAAE;IACzCC,IAAI;IACJC,YAAY,EAAEW,qBAAqB;IACnCV,KAAK;IACLC,MAAM;IACN;IACA;IACAC,GAAG,EAAEA,GAAG,IAAIK,UAAU;IACtBJ,YAAY;IACZC,MAAM;IACNC;EACF,CAAC,CAAC;EAEF,oBACEV,IAAA,CAACL;EACC;EAAA;IACAsB,YAAY,EAAEpB,eAAe,CAACK,GAAG,CAAE;IAAA,GAC/BW,SAAS;IACbC,GAAG,EAAEA,GAAI;IACTH,KAAK,EAAEA,KAAM;IACbC,UAAU,EAAEA,UAAW;IACvBM,KAAK,EAAEF;EAAO,CACf,CAAC;AAEN,CAAC,CAAC;;AAEF;AACA;AACAf,mBAAmB,CAACkB,WAAW,GAAG,qBAAqB","ignoreList":[]}
|
|
@@ -57,10 +57,13 @@ export const PipelineImage = /*#__PURE__*/forwardRef(function PipelineImage({
|
|
|
57
57
|
blur = 0,
|
|
58
58
|
cornerRadius,
|
|
59
59
|
cache,
|
|
60
|
+
fit,
|
|
61
|
+
allowUpscale,
|
|
60
62
|
onLoad,
|
|
61
63
|
onError,
|
|
62
64
|
style,
|
|
63
65
|
onLayout,
|
|
66
|
+
resizeMode,
|
|
64
67
|
...viewProps
|
|
65
68
|
}, ref) {
|
|
66
69
|
const scale = PixelRatio.get();
|
|
@@ -68,7 +71,15 @@ export const PipelineImage = /*#__PURE__*/forwardRef(function PipelineImage({
|
|
|
68
71
|
const [layoutSize, setLayoutSize] = useState(undefined);
|
|
69
72
|
// A numeric style is what the caller declared, so it wins and starts the
|
|
70
73
|
// request a frame earlier; the measured layout is the fallback.
|
|
71
|
-
const
|
|
74
|
+
const size = styleSize ?? layoutSize;
|
|
75
|
+
// The view's resizeMode and the bitmap's fit are the same four values;
|
|
76
|
+
// an explicit `fit` decouples them.
|
|
77
|
+
const effectiveFit = fit ?? resizeMode;
|
|
78
|
+
const resize = size ? {
|
|
79
|
+
...size,
|
|
80
|
+
fit: effectiveFit,
|
|
81
|
+
allowUpscale
|
|
82
|
+
} : undefined;
|
|
72
83
|
// Same precedence: an explicit prop wins over what style implies.
|
|
73
84
|
const effectiveCornerRadius = cornerRadius ?? cornerRadiusForStyle(style) ?? 0;
|
|
74
85
|
const {
|
|
@@ -111,6 +122,7 @@ export const PipelineImage = /*#__PURE__*/forwardRef(function PipelineImage({
|
|
|
111
122
|
...viewProps,
|
|
112
123
|
ref: ref,
|
|
113
124
|
style: style,
|
|
125
|
+
resizeMode: resizeMode,
|
|
114
126
|
onLayout: handleLayout,
|
|
115
127
|
image: image
|
|
116
128
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["forwardRef","useEffect","useRef","useState","PixelRatio","NativeNitroImage","cornerRadiusForStyle","resizeForLayout","resizeForStyle","useImage","jsx","_jsx","sameSize","a","b","width","height","scaleRadius","cornerRadius","scale","topLeft","topRight","bottomLeft","bottomRight","PipelineImage","url","blur","cache","onLoad","onError","style","onLayout","viewProps","ref","get","styleSize","layoutSize","setLayoutSize","undefined","resize","effectiveCornerRadius","image","error","enabled","onLoadRef","onErrorRef","current","handleLayout","event","nativeEvent","layout","next","prev","displayName"],"sourceRoot":"../../src","sources":["PipelineImage.tsx"],"mappings":";;AAAA,SAEEA,UAAU,EACVC,SAAS,EACTC,MAAM,EACNC,QAAQ,QACH,OAAO;AACd,SAGEC,UAAU,QACL,cAAc;AACrB,SAAqBC,gBAAgB,QAAQ,0BAA0B;AAEvE,SACEC,oBAAoB,EACpBC,eAAe,EACfC,cAAc,QACT,kBAAkB;
|
|
1
|
+
{"version":3,"names":["forwardRef","useEffect","useRef","useState","PixelRatio","NativeNitroImage","cornerRadiusForStyle","resizeForLayout","resizeForStyle","useImage","jsx","_jsx","sameSize","a","b","width","height","scaleRadius","cornerRadius","scale","topLeft","topRight","bottomLeft","bottomRight","PipelineImage","url","blur","cache","fit","allowUpscale","onLoad","onError","style","onLayout","resizeMode","viewProps","ref","get","styleSize","layoutSize","setLayoutSize","undefined","size","effectiveFit","resize","effectiveCornerRadius","image","error","enabled","onLoadRef","onErrorRef","current","handleLayout","event","nativeEvent","layout","next","prev","displayName"],"sourceRoot":"../../src","sources":["PipelineImage.tsx"],"mappings":"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","ignoreList":[]}
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativePipelineImage","NitroImagePipeline","PipelineImage","resolveImageUrl","UNREGISTERED_ASSET_URL","cornerRadiusForStyle","resizeForLayout","resizeForStyle","useImage","usePipelineImageLoader"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,SACEA,mBAAmB,QAGd,uBAAuB;AAC9B,SAASC,kBAAkB,QAAQ,sBAAsB;AACzD,SACEC,aAAa,QAGR,iBAAiB;AACxB,SAEEC,eAAe,EACfC,sBAAsB,QACjB,sBAAsB;AAC7B,SACEC,oBAAoB,EACpBC,eAAe,EACfC,cAAc,QACT,kBAAkB;
|
|
1
|
+
{"version":3,"names":["NativePipelineImage","NitroImagePipeline","PipelineImage","resolveImageUrl","UNREGISTERED_ASSET_URL","cornerRadiusForStyle","resizeForLayout","resizeForStyle","useImage","usePipelineImageLoader"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,SACEA,mBAAmB,QAGd,uBAAuB;AAC9B,SAASC,kBAAkB,QAAQ,sBAAsB;AACzD,SACEC,aAAa,QAGR,iBAAiB;AACxB,SAEEC,eAAe,EACfC,sBAAsB,QACjB,sBAAsB;AAC7B,SACEC,oBAAoB,EACpBC,eAAe,EACfC,cAAc,QACT,kBAAkB;AASzB,SAASC,QAAQ,QAAQ,YAAY;AACrC,SAASC,sBAAsB,QAAQ,0BAA0B","ignoreList":[]}
|
|
@@ -4,7 +4,9 @@ import { PixelRatio, StyleSheet } from 'react-native';
|
|
|
4
4
|
/**
|
|
5
5
|
* Converts a layout size in points (dp) to the pipeline's `resize` option in
|
|
6
6
|
* whole bitmap pixels using `PixelRatio.getPixelSizeForLayoutSize`. Returns
|
|
7
|
-
* `undefined` unless both values are positive numbers.
|
|
7
|
+
* `undefined` unless both values are positive numbers. Spread a `fit` into
|
|
8
|
+
* the result for the other resize modes — under `contain` and `center` the
|
|
9
|
+
* size is the box the bitmap fits in, not necessarily its final size.
|
|
8
10
|
*/
|
|
9
11
|
export function resizeForLayout(width, height) {
|
|
10
12
|
if (typeof width !== 'number' || typeof height !== 'number') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["PixelRatio","StyleSheet","resizeForLayout","width","height","undefined","pixelWidth","getPixelSizeForLayoutSize","pixelHeight","resizeForStyle","style","flat","flatten","cornerRadiusForStyle","base","borderRadius","topLeft","borderTopLeftRadius","topRight","borderTopRightRadius","bottomLeft","borderBottomLeftRadius","bottomRight","borderBottomRightRadius"],"sourceRoot":"../../src","sources":["resizeForStyle.ts"],"mappings":";;AAAA,SACEA,UAAU,EAEVC,UAAU,QAEL,cAAc;AAOrB;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,eAAeA,CAC7BC,KAAc,EACdC,MAAe,EACY;EAC3B,IAAI,OAAOD,KAAK,KAAK,QAAQ,IAAI,OAAOC,MAAM,KAAK,QAAQ,EAAE;IAC3D,OAAOC,SAAS;EAClB;EACA,MAAMC,UAAU,GAAGN,UAAU,CAACO,yBAAyB,CAACJ,KAAK,CAAC;EAC9D,MAAMK,WAAW,GAAGR,UAAU,CAACO,yBAAyB,CAACH,MAAM,CAAC;EAChE,OAAOE,UAAU,GAAG,CAAC,IAAIE,WAAW,GAAG,CAAC,GACpC;IAAEL,KAAK,EAAEG,UAAU;IAAEF,MAAM,EAAEI;EAAY,CAAC,GAC1CH,SAAS;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASI,cAAcA,CAC5BC,KAA2B,EACA;EAC3B,MAAMC,IAAI,GAAGV,UAAU,CAACW,OAAO,CAACF,KAAK,CAAC;EACtC,OAAOR,eAAe,CAACS,IAAI,EAAER,KAAK,EAAEQ,IAAI,EAAEP,MAAM,CAAC;AACnD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASS,oBAAoBA,CAClCH,KAA2B,EACO;EAClC,MAAMC,IAAI,GAAGV,UAAU,CAACW,OAAO,CAACF,KAAK,CAAC;EACtC,MAAMI,IAAI,GACR,OAAOH,IAAI,EAAEI,YAAY,KAAK,QAAQ,GAAGJ,IAAI,CAACI,YAAY,GAAGV,SAAS;EACxE,MAAMW,OAAO,GACX,OAAOL,IAAI,EAAEM,mBAAmB,KAAK,QAAQ,GACzCN,IAAI,CAACM,mBAAmB,GACxBZ,SAAS;EACf,MAAMa,QAAQ,GACZ,OAAOP,IAAI,EAAEQ,oBAAoB,KAAK,QAAQ,GAC1CR,IAAI,CAACQ,oBAAoB,GACzBd,SAAS;EACf,MAAMe,UAAU,GACd,OAAOT,IAAI,EAAEU,sBAAsB,KAAK,QAAQ,GAC5CV,IAAI,CAACU,sBAAsB,GAC3BhB,SAAS;EACf,MAAMiB,WAAW,GACf,OAAOX,IAAI,EAAEY,uBAAuB,KAAK,QAAQ,GAC7CZ,IAAI,CAACY,uBAAuB,GAC5BlB,SAAS;EAEf,IACEW,OAAO,KAAKX,SAAS,IACrBa,QAAQ,KAAKb,SAAS,IACtBe,UAAU,KAAKf,SAAS,IACxBiB,WAAW,KAAKjB,SAAS,EACzB;IACA,OAAOS,IAAI;EACb;EAEA,OAAO;IACLE,OAAO,EAAEA,OAAO,IAAIF,IAAI;IACxBI,QAAQ,EAAEA,QAAQ,IAAIJ,IAAI;IAC1BM,UAAU,EAAEA,UAAU,IAAIN,IAAI;IAC9BQ,WAAW,EAAEA,WAAW,IAAIR;EAC9B,CAAC;AACH","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["PixelRatio","StyleSheet","resizeForLayout","width","height","undefined","pixelWidth","getPixelSizeForLayoutSize","pixelHeight","resizeForStyle","style","flat","flatten","cornerRadiusForStyle","base","borderRadius","topLeft","borderTopLeftRadius","topRight","borderTopRightRadius","bottomLeft","borderBottomLeftRadius","bottomRight","borderBottomRightRadius"],"sourceRoot":"../../src","sources":["resizeForStyle.ts"],"mappings":";;AAAA,SACEA,UAAU,EAEVC,UAAU,QAEL,cAAc;AAOrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,eAAeA,CAC7BC,KAAc,EACdC,MAAe,EACY;EAC3B,IAAI,OAAOD,KAAK,KAAK,QAAQ,IAAI,OAAOC,MAAM,KAAK,QAAQ,EAAE;IAC3D,OAAOC,SAAS;EAClB;EACA,MAAMC,UAAU,GAAGN,UAAU,CAACO,yBAAyB,CAACJ,KAAK,CAAC;EAC9D,MAAMK,WAAW,GAAGR,UAAU,CAACO,yBAAyB,CAACH,MAAM,CAAC;EAChE,OAAOE,UAAU,GAAG,CAAC,IAAIE,WAAW,GAAG,CAAC,GACpC;IAAEL,KAAK,EAAEG,UAAU;IAAEF,MAAM,EAAEI;EAAY,CAAC,GAC1CH,SAAS;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASI,cAAcA,CAC5BC,KAA2B,EACA;EAC3B,MAAMC,IAAI,GAAGV,UAAU,CAACW,OAAO,CAACF,KAAK,CAAC;EACtC,OAAOR,eAAe,CAACS,IAAI,EAAER,KAAK,EAAEQ,IAAI,EAAEP,MAAM,CAAC;AACnD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASS,oBAAoBA,CAClCH,KAA2B,EACO;EAClC,MAAMC,IAAI,GAAGV,UAAU,CAACW,OAAO,CAACF,KAAK,CAAC;EACtC,MAAMI,IAAI,GACR,OAAOH,IAAI,EAAEI,YAAY,KAAK,QAAQ,GAAGJ,IAAI,CAACI,YAAY,GAAGV,SAAS;EACxE,MAAMW,OAAO,GACX,OAAOL,IAAI,EAAEM,mBAAmB,KAAK,QAAQ,GACzCN,IAAI,CAACM,mBAAmB,GACxBZ,SAAS;EACf,MAAMa,QAAQ,GACZ,OAAOP,IAAI,EAAEQ,oBAAoB,KAAK,QAAQ,GAC1CR,IAAI,CAACQ,oBAAoB,GACzBd,SAAS;EACf,MAAMe,UAAU,GACd,OAAOT,IAAI,EAAEU,sBAAsB,KAAK,QAAQ,GAC5CV,IAAI,CAACU,sBAAsB,GAC3BhB,SAAS;EACf,MAAMiB,WAAW,GACf,OAAOX,IAAI,EAAEY,uBAAuB,KAAK,QAAQ,GAC7CZ,IAAI,CAACY,uBAAuB,GAC5BlB,SAAS;EAEf,IACEW,OAAO,KAAKX,SAAS,IACrBa,QAAQ,KAAKb,SAAS,IACtBe,UAAU,KAAKf,SAAS,IACxBiB,WAAW,KAAKjB,SAAS,EACzB;IACA,OAAOS,IAAI;EACb;EAEA,OAAO;IACLE,OAAO,EAAEA,OAAO,IAAIF,IAAI;IACxBI,QAAQ,EAAEA,QAAQ,IAAIJ,IAAI;IAC1BM,UAAU,EAAEA,UAAU,IAAIN,IAAI;IAC9BQ,WAAW,EAAEA,WAAW,IAAIR;EAC9B,CAAC;AACH","ignoreList":[]}
|
package/lib/module/useImage.js
CHANGED
|
@@ -38,6 +38,8 @@ export function useImage({
|
|
|
38
38
|
} = isUniformRadius ? {} : cornerRadius;
|
|
39
39
|
const resizeWidth = resize?.width ?? 0;
|
|
40
40
|
const resizeHeight = resize?.height ?? 0;
|
|
41
|
+
const resizeFit = resize?.fit;
|
|
42
|
+
const resizeAllowUpscale = resize?.allowUpscale;
|
|
41
43
|
useEffect(() => {
|
|
42
44
|
let cancelled = false;
|
|
43
45
|
// Only reset to the loading state when the URL changes; for same-URL
|
|
@@ -65,7 +67,9 @@ export function useImage({
|
|
|
65
67
|
},
|
|
66
68
|
resize: resizeWidth > 0 && resizeHeight > 0 ? {
|
|
67
69
|
width: resizeWidth,
|
|
68
|
-
height: resizeHeight
|
|
70
|
+
height: resizeHeight,
|
|
71
|
+
fit: resizeFit,
|
|
72
|
+
allowUpscale: resizeAllowUpscale
|
|
69
73
|
} : undefined,
|
|
70
74
|
cache
|
|
71
75
|
});
|
|
@@ -89,7 +93,7 @@ export function useImage({
|
|
|
89
93
|
return () => {
|
|
90
94
|
cancelled = true;
|
|
91
95
|
};
|
|
92
|
-
}, [url, blur, isUniformRadius, uniformRadius, topLeft, topRight, bottomLeft, bottomRight, resizeWidth, resizeHeight, cache, enabled]);
|
|
96
|
+
}, [url, blur, isUniformRadius, uniformRadius, topLeft, topRight, bottomLeft, bottomRight, resizeWidth, resizeHeight, resizeFit, resizeAllowUpscale, cache, enabled]);
|
|
93
97
|
return image;
|
|
94
98
|
}
|
|
95
99
|
//# sourceMappingURL=useImage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","useRef","useState","NitroImagePipeline","resolveImageUrl","useImage","url","blur","cornerRadius","resize","cache","enabled","image","setImage","undefined","error","loadedUrlRef","isUniformRadius","uniformRadius","topLeft","topRight","bottomLeft","bottomRight","resizeWidth","width","resizeHeight","height","cancelled","current","result","loadImage","e","Error"],"sourceRoot":"../../src","sources":["useImage.ts"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAGnD,SAASC,kBAAkB,QAAQ,sBAAsB;AACzD,SAA2BC,eAAe,QAAQ,sBAAsB;AAwBxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,QAAQA,CAAC;EACvBC,GAAG;EACHC,IAAI,GAAG,CAAC;EACRC,YAAY,GAAG,CAAC;EAChBC,MAAM;EACNC,KAAK;EACLC,OAAO,GAAG;
|
|
1
|
+
{"version":3,"names":["useEffect","useRef","useState","NitroImagePipeline","resolveImageUrl","useImage","url","blur","cornerRadius","resize","cache","enabled","image","setImage","undefined","error","loadedUrlRef","isUniformRadius","uniformRadius","topLeft","topRight","bottomLeft","bottomRight","resizeWidth","width","resizeHeight","height","resizeFit","fit","resizeAllowUpscale","allowUpscale","cancelled","current","result","loadImage","e","Error"],"sourceRoot":"../../src","sources":["useImage.ts"],"mappings":"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","ignoreList":[]}
|