65 lines
1.9 KiB
Plaintext
65 lines
1.9 KiB
Plaintext
//
|
|
// Created by Jovanni Lo (@lodev09)
|
|
// Copyright (c) 2024-present. All rights reserved.
|
|
//
|
|
// This source code is licensed under the MIT license found in the
|
|
// LICENSE file in the root directory of this source tree.
|
|
//
|
|
|
|
#ifdef RCT_NEW_ARCH_ENABLED
|
|
|
|
#import "TrueSheetHeaderView.h"
|
|
#import <react/renderer/components/TrueSheetSpec/ComponentDescriptors.h>
|
|
#import <react/renderer/components/TrueSheetSpec/EventEmitters.h>
|
|
#import <react/renderer/components/TrueSheetSpec/Props.h>
|
|
#import <react/renderer/components/TrueSheetSpec/RCTComponentViewHelpers.h>
|
|
#import "utils/LayoutUtil.h"
|
|
|
|
using namespace facebook::react;
|
|
|
|
@implementation TrueSheetHeaderView {
|
|
CGSize _lastSize;
|
|
}
|
|
|
|
+ (ComponentDescriptorProvider)componentDescriptorProvider {
|
|
return concreteComponentDescriptorProvider<TrueSheetHeaderViewComponentDescriptor>();
|
|
}
|
|
|
|
- (instancetype)initWithFrame:(CGRect)frame {
|
|
if (self = [super initWithFrame:frame]) {
|
|
static const auto defaultProps = std::make_shared<const TrueSheetHeaderViewProps>();
|
|
_props = defaultProps;
|
|
|
|
_lastSize = CGSizeZero;
|
|
}
|
|
return self;
|
|
}
|
|
|
|
- (void)updateLayoutMetrics:(const facebook::react::LayoutMetrics &)layoutMetrics
|
|
oldLayoutMetrics:(const facebook::react::LayoutMetrics &)oldLayoutMetrics {
|
|
[super updateLayoutMetrics:layoutMetrics oldLayoutMetrics:oldLayoutMetrics];
|
|
|
|
CGSize newSize = CGSizeMake(layoutMetrics.frame.size.width, layoutMetrics.frame.size.height);
|
|
|
|
// Notify delegate when header size changes
|
|
if (!CGSizeEqualToSize(newSize, _lastSize)) {
|
|
_lastSize = newSize;
|
|
if ([self.delegate respondsToSelector:@selector(headerViewDidChangeSize:)]) {
|
|
[self.delegate headerViewDidChangeSize:newSize];
|
|
}
|
|
}
|
|
}
|
|
|
|
- (void)prepareForRecycle {
|
|
[super prepareForRecycle];
|
|
_lastSize = CGSizeZero;
|
|
}
|
|
|
|
@end
|
|
|
|
Class<RCTComponentViewProtocol> TrueSheetHeaderViewCls(void) {
|
|
return TrueSheetHeaderView.class;
|
|
}
|
|
|
|
#endif
|