@onekeyfe/react-native-image 3.0.155 → 3.0.157-alpha.248
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 +3 -0
- package/android/src/main/java/com/margelo/nitro/onekeyimage/OneKeyImage.kt +356 -22
- package/android/src/main/java/com/margelo/nitro/onekeyimage/OneKeyImageCache.kt +34 -4
- package/android/src/main/java/com/margelo/nitro/onekeyimage/OneKeyImageMemoryVariants.kt +119 -0
- package/android/src/main/java/com/margelo/nitro/onekeyimage/OneKeyImageReusableView.kt +2 -0
- package/android/src/test/java/com/margelo/nitro/onekeyimage/OneKeyImageMemoryVariantsTest.kt +149 -0
- package/android/src/test/java/com/margelo/nitro/onekeyimage/OneKeyImageRequestSignatureTest.kt +14 -1
- package/ios/OneKeyImage.swift +273 -43
- package/ios/OneKeyImageCache.swift +40 -3
- package/ios/OneKeyImageMemoryVariants.swift +137 -0
- package/ios/OneKeyImageRequestContext.swift +51 -9
- package/ios/tests/OneKeyImageInfrastructureTests.swift +255 -18
- package/lib/module/index.js +26 -3
- package/lib/nitrogen/generated/android/c++/JHybridOneKeyImageSpec.cpp +18 -0
- package/lib/nitrogen/generated/android/c++/JHybridOneKeyImageSpec.hpp +4 -0
- package/lib/nitrogen/generated/android/c++/views/JHybridOneKeyImageStateUpdater.cpp +10 -0
- package/lib/nitrogen/generated/android/kotlin/com/margelo/nitro/onekeyimage/HybridOneKeyImageSpec.kt +12 -0
- package/lib/nitrogen/generated/ios/c++/HybridOneKeyImageSpecSwift.hpp +14 -0
- package/lib/nitrogen/generated/ios/c++/views/HybridOneKeyImageComponent.mm +12 -0
- package/lib/nitrogen/generated/ios/swift/HybridOneKeyImageSpec.swift +2 -0
- package/lib/nitrogen/generated/ios/swift/HybridOneKeyImageSpec_cxx.swift +48 -0
- package/lib/nitrogen/generated/shared/c++/HybridOneKeyImageSpec.cpp +4 -0
- package/lib/nitrogen/generated/shared/c++/HybridOneKeyImageSpec.hpp +4 -0
- package/lib/nitrogen/generated/shared/c++/views/HybridOneKeyImageComponent.cpp +4 -0
- package/lib/nitrogen/generated/shared/c++/views/HybridOneKeyImageComponent.hpp +6 -0
- package/lib/nitrogen/generated/shared/json/OneKeyImageConfig.json +2 -0
- package/lib/typescript/src/OneKeyImage.nitro.d.ts +8 -0
- package/lib/typescript/src/index.d.ts +1 -1
- package/nitrogen/generated/android/c++/JHybridOneKeyImageSpec.cpp +18 -0
- package/nitrogen/generated/android/c++/JHybridOneKeyImageSpec.hpp +4 -0
- package/nitrogen/generated/android/c++/views/JHybridOneKeyImageStateUpdater.cpp +10 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/onekeyimage/HybridOneKeyImageSpec.kt +12 -0
- package/nitrogen/generated/ios/c++/HybridOneKeyImageSpecSwift.hpp +14 -0
- package/nitrogen/generated/ios/c++/views/HybridOneKeyImageComponent.mm +12 -0
- package/nitrogen/generated/ios/swift/HybridOneKeyImageSpec.swift +2 -0
- package/nitrogen/generated/ios/swift/HybridOneKeyImageSpec_cxx.swift +48 -0
- package/nitrogen/generated/shared/c++/HybridOneKeyImageSpec.cpp +4 -0
- package/nitrogen/generated/shared/c++/HybridOneKeyImageSpec.hpp +4 -0
- package/nitrogen/generated/shared/c++/views/HybridOneKeyImageComponent.cpp +4 -0
- package/nitrogen/generated/shared/c++/views/HybridOneKeyImageComponent.hpp +6 -0
- package/nitrogen/generated/shared/json/OneKeyImageConfig.json +2 -0
- package/package.json +2 -2
- package/src/OneKeyImage.nitro.ts +8 -0
- package/src/index.tsx +25 -1
package/src/index.tsx
CHANGED
|
@@ -153,7 +153,9 @@ export function OneKeyImage({
|
|
|
153
153
|
autoplay,
|
|
154
154
|
recyclingKey,
|
|
155
155
|
optimizeTos = true,
|
|
156
|
+
round = false,
|
|
156
157
|
resizeWidth,
|
|
158
|
+
resizeHeight,
|
|
157
159
|
overscan = 1.1,
|
|
158
160
|
loadingStrategy = OneKeyImageLoadingStrategy.STATIC,
|
|
159
161
|
placeholderColor,
|
|
@@ -175,7 +177,7 @@ export function OneKeyImage({
|
|
|
175
177
|
normalized?.headers ?? {}
|
|
176
178
|
)}|${resolvedCachePolicy}|${recyclingKey ?? ''}|${contentFit}|${
|
|
177
179
|
optimizeTos ? '1' : '0'
|
|
178
|
-
}|${resizeWidth ?? ''}|${overscan}`;
|
|
180
|
+
}|${resizeWidth ?? ''}|${resizeHeight ?? ''}|${overscan}`;
|
|
179
181
|
const hasSource = normalized != null;
|
|
180
182
|
const hasOverlay = placeholder != null || fallback != null;
|
|
181
183
|
type LoadState = {
|
|
@@ -353,6 +355,7 @@ export function OneKeyImage({
|
|
|
353
355
|
borderEndStartRadius: flattenedStyle.borderEndStartRadius,
|
|
354
356
|
borderEndEndRadius: flattenedStyle.borderEndEndRadius,
|
|
355
357
|
zIndex: 1,
|
|
358
|
+
...(round ? ROUND_CLIP : null),
|
|
356
359
|
}
|
|
357
360
|
: undefined;
|
|
358
361
|
|
|
@@ -370,7 +373,9 @@ export function OneKeyImage({
|
|
|
370
373
|
autoplay: autoplay ?? Platform.OS !== 'android',
|
|
371
374
|
recyclingKey,
|
|
372
375
|
optimizeTos,
|
|
376
|
+
round,
|
|
373
377
|
resizeWidth,
|
|
378
|
+
resizeHeight,
|
|
374
379
|
overscan,
|
|
375
380
|
loadingStrategy:
|
|
376
381
|
placeholder == null ? loadingStrategy : OneKeyImageLoadingStrategy.NONE,
|
|
@@ -385,6 +390,7 @@ export function OneKeyImage({
|
|
|
385
390
|
style,
|
|
386
391
|
styles.overlayContainer,
|
|
387
392
|
hasRoundedCorners ? styles.borderlessContainer : undefined,
|
|
393
|
+
round ? ROUND_CLIP : undefined,
|
|
388
394
|
]}
|
|
389
395
|
collapsable={false}
|
|
390
396
|
>
|
|
@@ -440,6 +446,24 @@ export const OneKeyImageCache = {
|
|
|
440
446
|
clearAll: () => nativeCache.clearAll(),
|
|
441
447
|
};
|
|
442
448
|
|
|
449
|
+
// `round` clips the native view to a circle: an oval path on Android
|
|
450
|
+
// (`OneKeyImage.kt` `addOval`), a `min(width, height) / 2` corner radius on iOS
|
|
451
|
+
// (`OneKeyImage.swift` `updateRoundMask`). The overlay container has to clip the
|
|
452
|
+
// same way, or a custom placeholder or fallback is painted square over a round
|
|
453
|
+
// image. A percentage radius says that without measuring the view, and covers
|
|
454
|
+
// every per-corner radius the caller's own style may have set.
|
|
455
|
+
const ROUND_CLIP = {
|
|
456
|
+
borderRadius: '50%',
|
|
457
|
+
borderTopLeftRadius: '50%',
|
|
458
|
+
borderTopRightRadius: '50%',
|
|
459
|
+
borderBottomLeftRadius: '50%',
|
|
460
|
+
borderBottomRightRadius: '50%',
|
|
461
|
+
borderStartStartRadius: '50%',
|
|
462
|
+
borderStartEndRadius: '50%',
|
|
463
|
+
borderEndStartRadius: '50%',
|
|
464
|
+
borderEndEndRadius: '50%',
|
|
465
|
+
} as const;
|
|
466
|
+
|
|
443
467
|
const styles = StyleSheet.create({
|
|
444
468
|
overlayContainer: {
|
|
445
469
|
overflow: 'hidden',
|