mirror of
https://github.com/zoriya/react-native-svg.git
synced 2025-12-05 22:56:11 +00:00
# Summary Fixes #2520 When an element uses `currentColor`, it should look for color in its caller, not in its parent. Example: ```svg <Svg width="100" height="100" viewBox="0 0 100 100" color="red"> <Defs color="blue"> <G color="green"> <Rect id="a" x="0" y="0" width="50" height="50" fill="currentColor"/> </G> </Defs> <G color="pink"> <Use href="#a"/> <!-- #1 --> </G> <Use href="#a" transform="translate(25 25)"/> <!-- #2 --> <G color="green"> <Use href="#a" transform="translate(50 50)"/> <!-- #3 --> </G> </Svg> ``` * `#1` should be **pink** * `#2` should be **red** * `#3` should be **green**  ## Test Plan Example app -> test -> Test2520 ## Compatibility | OS | Implemented | | ------- | :---------: | | iOS | ✅ | | MacOS | ✅ | | Android | ✅ |
47 lines
1.3 KiB
Plaintext
47 lines
1.3 KiB
Plaintext
/**
|
|
* Copyright (c) 2015-present, Horcrux.
|
|
* All rights reserved.
|
|
*
|
|
* This source code is licensed under the MIT-style license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/
|
|
|
|
#import "RNSVGSvgViewManager.h"
|
|
#import "RNSVGSvgView.h"
|
|
|
|
@implementation RNSVGSvgViewManager
|
|
|
|
RCT_EXPORT_MODULE()
|
|
|
|
- (RNSVGPlatformView *)view
|
|
{
|
|
return [RNSVGSvgView new];
|
|
}
|
|
|
|
RCT_EXPORT_VIEW_PROPERTY(bbWidth, RNSVGLength *)
|
|
RCT_EXPORT_VIEW_PROPERTY(bbHeight, RNSVGLength *)
|
|
RCT_EXPORT_VIEW_PROPERTY(minX, CGFloat)
|
|
RCT_EXPORT_VIEW_PROPERTY(minY, CGFloat)
|
|
RCT_EXPORT_VIEW_PROPERTY(vbWidth, CGFloat)
|
|
RCT_EXPORT_VIEW_PROPERTY(vbHeight, CGFloat)
|
|
RCT_EXPORT_VIEW_PROPERTY(align, NSString)
|
|
RCT_EXPORT_VIEW_PROPERTY(meetOrSlice, RNSVGVBMOS)
|
|
RCT_EXPORT_VIEW_PROPERTY(color, UIColor)
|
|
RCT_CUSTOM_VIEW_PROPERTY(hitSlop, UIEdgeInsets, RNSVGSvgView)
|
|
{
|
|
if ([view respondsToSelector:@selector(setHitTestEdgeInsets:)]) {
|
|
if (json) {
|
|
UIEdgeInsets hitSlopInsets = [RCTConvert UIEdgeInsets:json];
|
|
[view setHitTestEdgeInsets:UIEdgeInsetsMake(
|
|
-hitSlopInsets.top,
|
|
-hitSlopInsets.left,
|
|
-hitSlopInsets.bottom,
|
|
-hitSlopInsets.right)];
|
|
} else {
|
|
view.hitTestEdgeInsets = defaultView.hitTestEdgeInsets;
|
|
}
|
|
}
|
|
}
|
|
|
|
@end
|