iOS/Plugins/FlipperKitLayoutPlugin/FlipperKitLayoutComponentKitSupport/SKComponentRootViewDescriptor.mm (41 lines of code) (raw):

/* * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ #if FB_SONARKIT_ENABLED #import "SKComponentRootViewDescriptor.h" #import <ComponentKit/CKComponentAttachController.h> #import <ComponentKit/CKComponentAttachControllerInternal.h> #import <ComponentKit/CKComponentHostingView.h> #import <ComponentKit/CKComponentHostingViewInternal.h> #import <ComponentKit/CKComponentLayout.h> #import <ComponentKit/CKComponentRootViewInternal.h> #import <FlipperKitLayoutHelpers/SKObject.h> #import <FlipperKitLayoutPlugin/SKDescriptorMapper.h> #import "SKComponentLayoutWrapper.h" @implementation SKComponentRootViewDescriptor - (NSString*)identifierForNode:(CKComponentRootView*)node { return [NSString stringWithFormat:@"%p", node]; } - (NSUInteger)childCountForNode:(CKComponentRootView*)node { const auto state = CKGetAttachStateForView(node); return state == nil ? 0 : 1; } - (id)childForNode:(CKComponentRootView*)node atIndex:(NSUInteger)index { return [SKComponentLayoutWrapper newFromRoot:node parentKey:[NSString stringWithFormat:@"%@.", node.uniqueIdentifier]]; } - (NSArray<SKNamed<NSDictionary*>*>*)dataForNode:(CKComponentRootView*)node { auto const attachState = CKGetAttachStateForView(node); return @[ [SKNamed newWithName:@"Identity" withValue:@{ @"scopeRootIdentifier" : SKObject{@(attachState.scopeIdentifier)} }] ]; } - (void)setHighlighted:(BOOL)highlighted forNode:(CKComponentRootView*)node { SKNodeDescriptor* viewDescriptor = [self descriptorForClass:[UIView class]]; [viewDescriptor setHighlighted:highlighted forNode:node]; } - (void)hitTest:(SKTouch*)touch forNode:(CKComponentRootView*)node { [touch continueWithChildIndex:0 withOffset:(CGPoint){0, 0}]; } @end #endif