Refactor Layout Plugin

Summary:
This diff moves the iOS descriptors and other layout helpers into its own buck target. Earlier everything was part of the FlipperKitLayoutPlugin target. When kcui, tried to add macos descriptors, we realised that FlipperKitLayoutPlugin doesn't have macos platform in it and thus he had to put #if TARGET_OS_SIMULATOR check in iOS descriptors and at some other places.

In order to make the integration easier I decided to split the Layout Plugin in following way.

```
FlipperKitLayoutPlugin
  -> FlipperKitLayoutIOSDescriptors (platform set as IOS)
  -> FlipperKitLayoutHelpers (used in iOS Descriptors and usefule for Macos too)
  -> FlipperKitLayoutMacOSDescriptors(coming soon by kcui)(platform set as MacOS)

```

Reviewed By: kcui

Differential Revision: D27127587

fbshipit-source-id: f108ef81914297e93c886fe53dabf0a4bf11ebc1
This commit is contained in:
Pritesh Nandgaonkar
2021-03-25 15:59:15 -07:00
committed by Facebook GitHub Bot
parent 8c85da5bc8
commit 790f23301e
61 changed files with 133 additions and 80 deletions

View File

@@ -9,8 +9,8 @@
#import "CKCenterLayoutComponent+Sonar.h"
#import <FlipperKitLayoutPlugin/SKNamed.h>
#import <FlipperKitLayoutPlugin/SKObject.h>
#import <FlipperKitLayoutHelpers/SKNamed.h>
#import <FlipperKitLayoutHelpers/SKObject.h>
#import "CKComponent+Sonar.h"

View File

@@ -7,8 +7,8 @@
#import <ComponentKit/CKComponent.h>
#import <FlipperKit/SKMacros.h>
#import <FlipperKitLayoutPlugin/SKNamed.h>
#import <FlipperKitLayoutPlugin/SKNodeDescriptor.h>
#import <FlipperKitLayoutHelpers/SKNamed.h>
#import <FlipperKitLayoutHelpers/SKNodeDescriptor.h>
typedef id (^SKNodeDataChanged)(id value);

View File

@@ -16,8 +16,8 @@
#import <ComponentKit/CKComponentSubclass.h>
#import <ComponentKit/CKComponentViewConfiguration.h>
#import <ComponentKit/CKMutex.h>
#import <FlipperKitLayoutPlugin/SKNamed.h>
#import <FlipperKitLayoutPlugin/SKObject.h>
#import <FlipperKitLayoutHelpers/SKNamed.h>
#import <FlipperKitLayoutHelpers/SKObject.h>
#import <objc/message.h>
#import <objc/runtime.h>

View File

@@ -9,8 +9,8 @@
#import "CKFlexboxComponent+Sonar.h"
#import <FlipperKitLayoutPlugin/SKNamed.h>
#import <FlipperKitLayoutPlugin/SKObject.h>
#import <FlipperKitLayoutHelpers/SKNamed.h>
#import <FlipperKitLayoutHelpers/SKObject.h>
#import "CKComponent+Sonar.h"
#import "Utils.h"

View File

@@ -10,8 +10,8 @@
#import "CKInsetComponent+Sonar.h"
#import <ComponentKit/CKDimension.h>
#import <FlipperKitLayoutPlugin/SKNamed.h>
#import <FlipperKitLayoutPlugin/SKObject.h>
#import <FlipperKitLayoutHelpers/SKNamed.h>
#import <FlipperKitLayoutHelpers/SKObject.h>
#import "CKComponent+Sonar.h"

View File

@@ -9,8 +9,8 @@
#import "CKRatioLayoutComponent+Sonar.h"
#import <FlipperKitLayoutPlugin/SKNamed.h>
#import <FlipperKitLayoutPlugin/SKObject.h>
#import <FlipperKitLayoutHelpers/SKNamed.h>
#import <FlipperKitLayoutHelpers/SKObject.h>
#import "CKComponent+Sonar.h"

View File

@@ -9,8 +9,8 @@
#import "CKStatelessComponent+Sonar.h"
#import <FlipperKitLayoutPlugin/SKNamed.h>
#import <FlipperKitLayoutPlugin/SKObject.h>
#import <FlipperKitLayoutHelpers/SKNamed.h>
#import <FlipperKitLayoutHelpers/SKObject.h>
#import "CKComponent+Sonar.h"

View File

@@ -5,7 +5,7 @@
* LICENSE file in the root directory of this source tree.
*/
#import <FlipperKitLayoutPlugin/SKNodeDescriptor.h>
#import <FlipperKitLayoutHelpers/SKNodeDescriptor.h>
#import "SKSubDescriptor.h"

View File

@@ -24,7 +24,7 @@
#import <ComponentKit/CKInsetComponent.h>
#import <FlipperKitHighlightOverlay/SKHighlightOverlay.h>
#import <FlipperKitLayoutPlugin/SKObject.h>
#import <FlipperKitLayoutHelpers/SKObject.h>
#import <FlipperKitLayoutTextSearchable/FKTextSearchable.h>
#import "CKComponent+Sonar.h"

View File

@@ -5,7 +5,7 @@
* LICENSE file in the root directory of this source tree.
*/
#import <FlipperKitLayoutPlugin/SKNodeDescriptor.h>
#import <FlipperKitLayoutHelpers/SKNodeDescriptor.h>
@class SKComponentMountedView;

View File

@@ -13,7 +13,7 @@
#import <ComponentKit/CKComponentInternal.h>
#import <FlipperKitHighlightOverlay/SKHighlightOverlay.h>
#import <FlipperKitLayoutPlugin/SKObject.h>
#import <FlipperKitLayoutHelpers/SKObject.h>
#import <FlipperKitLayoutTextSearchable/FKTextSearchable.h>
#import "CKComponent+Sonar.h"

View File

@@ -5,7 +5,7 @@
* LICENSE file in the root directory of this source tree.
*/
#import <FlipperKitLayoutPlugin/SKNodeDescriptor.h>
#import <FlipperKitLayoutHelpers/SKNodeDescriptor.h>
@class CKComponentRootView;

View File

@@ -16,8 +16,8 @@
#import <ComponentKit/CKComponentLayout.h>
#import <ComponentKit/CKComponentRootViewInternal.h>
#import <FlipperKitLayoutHelpers/SKObject.h>
#import <FlipperKitLayoutPlugin/SKDescriptorMapper.h>
#import <FlipperKitLayoutPlugin/SKObject.h>
#import "SKComponentLayoutWrapper.h"

View File

@@ -7,14 +7,15 @@
#if FB_SONARKIT_ENABLED
#import "SKDescriptorMapper.h"
#import <Foundation/Foundation.h>
#import <FlipperKit/FlipperPlugin.h>
#import <FlipperKit/SKMacros.h>
#import "SKDescriptorMapper.h"
#import "SKInvalidation.h"
#import "SKTapListener.h"
#import <FlipperKitLayoutHelpers/SKInvalidation.h>
#import <FlipperKitLayoutHelpers/SKTapListener.h>
@interface FlipperKitLayoutPlugin
: NSObject<FlipperPlugin, SKInvalidationDelegate>

View File

@@ -13,12 +13,12 @@
#import <FlipperKit/FlipperConnection.h>
#import <FlipperKit/FlipperResponder.h>
#import <FlipperKit/SKMacros.h>
#import <FlipperKitLayoutHelpers/SKNodeDescriptor.h>
#import <FlipperKitLayoutHelpers/SKSearchResultNode.h>
#import <FlipperKitLayoutHelpers/SKTapListener.h>
#import <FlipperKitLayoutHelpers/SKTapListenerImpl.h>
#import <mutex>
#import "SKDescriptorMapper.h"
#import "SKNodeDescriptor.h"
#import "SKSearchResultNode.h"
#import "SKTapListener.h"
#import "SKTapListenerImpl.h"
NSObject* parseLayoutEditorMessage(NSObject* message);
NSObject* flattenLayoutEditorMessage(NSObject* field);

View File

@@ -5,11 +5,11 @@
* LICENSE file in the root directory of this source tree.
*/
#import <FlipperKitLayoutHelpers/FlipperKitLayoutDescriptorMapperProtocol.h>
#import <FlipperKitLayoutHelpers/SKNodeDescriptor.h>
#import <Foundation/Foundation.h>
@class SKNodeDescriptor;
@interface SKDescriptorMapper : NSObject
@interface SKDescriptorMapper : NSObject<SKDescriptorMapperProtocol>
- (instancetype)initWithDefaults;

View File

@@ -9,11 +9,11 @@
#import "SKDescriptorMapper.h"
#import "SKApplicationDescriptor.h"
#import "SKButtonDescriptor.h"
#import "SKScrollViewDescriptor.h"
#import "SKViewControllerDescriptor.h"
#import "SKViewDescriptor.h"
#import <FlipperKitLayoutIOSDescriptors/SKApplicationDescriptor.h>
#import <FlipperKitLayoutIOSDescriptors/SKButtonDescriptor.h>
#import <FlipperKitLayoutIOSDescriptors/SKScrollViewDescriptor.h>
#import <FlipperKitLayoutIOSDescriptors/SKViewControllerDescriptor.h>
#import <FlipperKitLayoutIOSDescriptors/SKViewDescriptor.h>
@implementation SKDescriptorMapper {
NSMutableDictionary<NSString*, SKNodeDescriptor*>* _descriptors;

View File

@@ -5,7 +5,7 @@
* LICENSE file in the root directory of this source tree.
*/
#import <FlipperKitLayoutPlugin/SKTapListener.h>
#import <FlipperKitLayoutHelpers/SKTapListener.h>
@interface SKTapListenerMock : NSObject<SKTapListener>

View File

@@ -9,9 +9,9 @@
#if FB_SONARKIT_ENABLED
#import <FlipperKitLayoutHelpers/SKNodeDescriptor.h>
#import <FlipperKitLayoutPlugin/FlipperKitLayoutPlugin.h>
#import <FlipperKitLayoutPlugin/SKDescriptorMapper.h>
#import <FlipperKitLayoutPlugin/SKNodeDescriptor.h>
#import <FlipperKitTestUtils/FlipperConnectionMock.h>
#import <FlipperKitTestUtils/FlipperResponderMock.h>

View File

@@ -5,7 +5,7 @@
* LICENSE file in the root directory of this source tree.
*/
#import <FlipperKitLayoutPlugin/SKNodeDescriptor.h>
#import <FlipperKitLayoutHelpers/SKNodeDescriptor.h>
#import "TestNode.h"

View File

@@ -0,0 +1,22 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#import <Foundation/Foundation.h>
@class SKNodeDescriptor;
@protocol SKDescriptorMapperProtocol<NSObject>
- (instancetype)initWithDefaults;
- (SKNodeDescriptor*)descriptorForClass:(Class)cls;
- (void)registerDescriptor:(SKNodeDescriptor*)descriptor forClass:(Class)cls;
- (NSArray<SKNodeDescriptor*>*)allDescriptors;
@end

View File

@@ -7,7 +7,7 @@
#import <UIKit/UIKit.h>
#import "SKDescriptorMapper.h"
#import <FlipperKitLayoutHelpers/FlipperKitLayoutDescriptorMapperProtocol.h>
#import "SKNamed.h"
#import "SKTouch.h"
@@ -30,7 +30,7 @@ typedef void (^SKNodeUpdateData)(id value);
Initializes the node-descriptor with a SKDescriptorMapper which contains
mappings between Class -> SKNodeDescriptor<Class>.
*/
- (instancetype)initWithDescriptorMapper:(SKDescriptorMapper*)mapper;
- (instancetype)initWithDescriptorMapper:(id<SKDescriptorMapperProtocol>)mapper;
/**
Gets the node-descriptor registered for a specific class.

View File

@@ -11,13 +11,14 @@
#import <FlipperKitLayoutTextSearchable/FKTextSearchable.h>
@implementation SKNodeDescriptor {
SKDescriptorMapper* _mapper;
id<SKDescriptorMapperProtocol> _mapper;
}
- (void)setUp {
}
- (instancetype)initWithDescriptorMapper:(SKDescriptorMapper*)mapper {
- (instancetype)initWithDescriptorMapper:
(id<SKDescriptorMapperProtocol>)mapper {
if (self = [super init]) {
_mapper = mapper;
}

View File

@@ -5,10 +5,9 @@
* LICENSE file in the root directory of this source tree.
*/
#import <FlipperKitLayoutHelpers/FlipperKitLayoutDescriptorMapperProtocol.h>
#import <UIKit/UIKit.h>
#import "SKDescriptorMapper.h"
typedef void (^SKTouchFinishDelegate)(id<NSObject> currentNode);
typedef void (^SKProcessFinishDelegate)(NSDictionary* tree);
@@ -16,7 +15,7 @@ typedef void (^SKProcessFinishDelegate)(NSDictionary* tree);
- (instancetype)initWithTouchPoint:(CGPoint)touchPoint
withRootNode:(id<NSObject>)node
withDescriptorMapper:(SKDescriptorMapper*)mapper
withDescriptorMapper:(id<SKDescriptorMapperProtocol>)mapper
finishWithBlock:(SKTouchFinishDelegate)d;
- (void)continueWithChildIndex:(NSUInteger)childIndex

View File

@@ -15,7 +15,7 @@
CGPoint _currentTouchPoint;
SKDescriptorMapper* _descriptorMapper;
id<SKDescriptorMapperProtocol> _descriptorMapper;
NSMutableArray<id<NSObject>>* _nodeStack;
NSMutableArray<NSMutableDictionary*>* _treeStack;
@@ -23,7 +23,7 @@
- (instancetype)initWithTouchPoint:(CGPoint)touchPoint
withRootNode:(id<NSObject>)node
withDescriptorMapper:(SKDescriptorMapper*)mapper
withDescriptorMapper:(id<SKDescriptorMapperProtocol>)mapper
finishWithBlock:(SKTouchFinishDelegate)finishBlock {
if (self = [super init]) {
_onFinish = finishBlock;

View File

@@ -7,7 +7,9 @@
#import <UIKit/UIKit.h>
#import "SKNodeDescriptor.h"
#import <FlipperKitLayoutHelpers/SKNodeDescriptor.h>
@class SKDescriptorMapper;
@interface SKApplicationDescriptor : SKNodeDescriptor<UIApplication*>

View File

@@ -9,9 +9,8 @@
#import "SKApplicationDescriptor.h"
#import <FlipperKitLayoutHelpers/SKHiddenWindow.h>
#import <objc/runtime.h>
#import "SKDescriptorMapper.h"
#import "SKHiddenWindow.h"
@implementation SKApplicationDescriptor

View File

@@ -7,9 +7,10 @@
#import <UIKit/UIKit.h>
#import "SKNodeDescriptor.h"
#import <FlipperKitLayoutHelpers/SKNodeDescriptor.h>
@class UIButton;
@class SKDescriptorMapper;
@interface SKButtonDescriptor : SKNodeDescriptor<UIButton*>

View File

@@ -9,9 +9,8 @@
#import "SKButtonDescriptor.h"
#import "SKDescriptorMapper.h"
#import "SKObject.h"
#import "UIColor+SKSonarValueCoder.h"
#import <FlipperKitLayoutHelpers/SKObject.h>
#import <FlipperKitLayoutHelpers/UIColor+SKSonarValueCoder.h>
@implementation SKButtonDescriptor

View File

@@ -7,7 +7,9 @@
#import <UIKit/UIKit.h>
#import "SKNodeDescriptor.h"
#import <FlipperKitLayoutHelpers/SKNodeDescriptor.h>
@class SKDescriptorMapper;
@interface SKScrollViewDescriptor : SKNodeDescriptor<UIScrollView*>

View File

@@ -9,8 +9,6 @@
#import "SKScrollViewDescriptor.h"
#import "SKDescriptorMapper.h"
@implementation SKScrollViewDescriptor
- (NSString*)identifierForNode:(UIScrollView*)node {

View File

@@ -9,7 +9,9 @@
#import <UIKit/UIKit.h>
#import "SKNodeDescriptor.h"
#import <FlipperKitLayoutHelpers/SKNodeDescriptor.h>
@class SKDescriptorMapper;
@interface SKViewControllerDescriptor : SKNodeDescriptor<UIViewController*>

View File

@@ -9,8 +9,6 @@
#import "SKViewControllerDescriptor.h"
#import "SKDescriptorMapper.h"
@implementation SKViewControllerDescriptor
- (NSString*)identifierForNode:(UIViewController*)node {

View File

@@ -9,7 +9,9 @@
#import <UIKit/UIKit.h>
#import "SKNodeDescriptor.h"
#import <FlipperKitLayoutHelpers/SKNodeDescriptor.h>
@class SKDescriptorMapper;
@interface SKViewDescriptor : SKNodeDescriptor<UIView*>

View File

@@ -10,13 +10,13 @@
#import "SKViewDescriptor.h"
#import <FlipperKitHighlightOverlay/SKHighlightOverlay.h>
#import <FlipperKitLayoutHelpers/FlipperKitLayoutDescriptorMapperProtocol.h>
#import <FlipperKitLayoutHelpers/SKHiddenWindow.h>
#import <FlipperKitLayoutHelpers/SKNamed.h>
#import <FlipperKitLayoutHelpers/SKObject.h>
#import <FlipperKitLayoutHelpers/SKYogaKitHelper.h>
#import <FlipperKitLayoutHelpers/UIColor+SKSonarValueCoder.h>
#import <YogaKit/UIView+Yoga.h>
#import "SKDescriptorMapper.h"
#import "SKHiddenWindow.h"
#import "SKNamed.h"
#import "SKObject.h"
#import "SKYogaKitHelper.h"
#import "UIColor+SKSonarValueCoder.h"
@implementation SKViewDescriptor
@@ -30,7 +30,8 @@ static NSDictionary* YGOverflowEnumMap = nil;
static NSDictionary* YGDisplayEnumMap = nil;
static NSDictionary* YGUnitEnumMap = nil;
- (instancetype)initWithDescriptorMapper:(SKDescriptorMapper*)mapper {
- (instancetype)initWithDescriptorMapper:
(id<SKDescriptorMapperProtocol>)mapper {
if (self = [super initWithDescriptorMapper:mapper]) {
initEnumDictionaries();
}