Refactor SKComponentLayoutDescriptor

Reviewed By: Andrey-Mishanin

Differential Revision: D20458227

fbshipit-source-id: 1723043d6b217323a1c70a455042b28eaf5218a0
This commit is contained in:
Adam Ernst
2020-03-15 19:39:20 -07:00
committed by Facebook GitHub Bot
parent 1725fd6bf1
commit 19876273a3

View File

@@ -30,8 +30,6 @@
#import "Utils.h" #import "Utils.h"
@implementation SKComponentLayoutDescriptor { @implementation SKComponentLayoutDescriptor {
NSDictionary<NSNumber*, NSString*>* CKFlexboxAlignSelfEnumMap;
NSDictionary<NSNumber*, NSString*>* CKFlexboxPositionTypeEnumMap;
NSArray<SKSubDescriptor*>* _registeredSubdescriptors; NSArray<SKSubDescriptor*>* _registeredSubdescriptors;
} }
@@ -41,27 +39,6 @@
if (!_registeredSubdescriptors) { if (!_registeredSubdescriptors) {
_registeredSubdescriptors = [NSArray new]; _registeredSubdescriptors = [NSArray new];
} }
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
[self initEnumMaps];
});
}
- (void)initEnumMaps {
CKFlexboxAlignSelfEnumMap = @{
@(CKFlexboxAlignSelfAuto) : @"auto",
@(CKFlexboxAlignSelfStart) : @"start",
@(CKFlexboxAlignSelfEnd) : @"end",
@(CKFlexboxAlignSelfCenter) : @"center",
@(CKFlexboxAlignSelfBaseline) : @"baseline",
@(CKFlexboxAlignSelfStretch) : @"stretch",
};
CKFlexboxPositionTypeEnumMap = @{
@(CKFlexboxPositionTypeRelative) : @"relative",
@(CKFlexboxPositionTypeAbsolute) : @"absolute",
};
} }
- (NSString*)identifierForNode:(SKComponentLayoutWrapper*)node { - (NSString*)identifierForNode:(SKComponentLayoutWrapper*)node {
@@ -142,9 +119,9 @@
@"margin" : flexboxRect(child.margin), @"margin" : flexboxRect(child.margin),
@"flexBasis" : relativeDimension(child.flexBasis), @"flexBasis" : relativeDimension(child.flexBasis),
@"padding" : flexboxRect(child.padding), @"padding" : flexboxRect(child.padding),
@"alignSelf" : CKFlexboxAlignSelfEnumMap[@(child.alignSelf)], @"alignSelf" : stringForAlignSelf(child.alignSelf),
@"position" : @{ @"position" : @{
@"type" : CKFlexboxPositionTypeEnumMap[@(child.position.type)], @"type" : stringForFlexboxPositionType(child.position.type),
@"start" : relativeDimension(child.position.start), @"start" : relativeDimension(child.position.start),
@"top" : relativeDimension(child.position.top), @"top" : relativeDimension(child.position.top),
@"end" : relativeDimension(child.position.end), @"end" : relativeDimension(child.position.end),
@@ -231,6 +208,34 @@
.location != NSNotFound; .location != NSNotFound;
} }
static NSString* stringForAlignSelf(CKFlexboxAlignSelf alignSelf) {
switch (alignSelf) {
case CKFlexboxAlignSelfAuto:
return @"auto";
case CKFlexboxAlignSelfStart:
return @"start";
case CKFlexboxAlignSelfEnd:
return @"end";
case CKFlexboxAlignSelfCenter:
return @"center";
case CKFlexboxAlignSelfBaseline:
return @"baseline";
case CKFlexboxAlignSelfStretch:
return @"stretch";
}
return @"unknown";
}
static NSString* stringForFlexboxPositionType(CKFlexboxPositionType type) {
switch (type) {
case CKFlexboxPositionTypeRelative:
return @"relative";
case CKFlexboxPositionTypeAbsolute:
return @"absolute";
}
return @"unknown";
}
@end @end
#endif #endif