ComponentKit/Core/Trigger/CKTrigger.mm (19 lines of code) (raw):
// (c) Facebook, Inc. and its affiliates. Confidential and proprietary.
#import <RenderCore/RCAssert.h>
#import <ComponentKit/CKComponentScopeHandle.h>
#import <ComponentKit/CKTreeNode.h>
#import <ComponentKit/CKTrigger.h>
static auto _scopedResponderAndKey(id<CKComponentProtocol> component, NSString *context) -> CKTriggerScopedResponderAndKey {
auto const handle = component.treeNode.scopeHandle;
auto const scopedResponder = handle.scopedResponder;
auto const responderKey = [scopedResponder keyForHandle:handle];
RCCAssertWithCategory(
component != nil && handle != nil && scopedResponder != nil,
context,
@"Binding a trigger but something is nil (component %@, handle: %@, scopedResponder: %@)",
component,
handle,
scopedResponder);
return {scopedResponder, responderKey};
}
CKTriggerScopedResponderAndKey::CKTriggerScopedResponderAndKey(CKScopedResponder *responder, CKScopedResponderKey key) : responder(responder), key(key) {}
CKTriggerScopedResponderAndKey::CKTriggerScopedResponderAndKey(id<CKComponentProtocol> component, NSString *context) : CKTriggerScopedResponderAndKey(_scopedResponderAndKey(component, context)) {}