1#import "RNDateTimePickerShadowView.h"
2
3@implementation RNDateTimePickerShadowView
4
5- (instancetype)init
6{
7  if (self = [super init]) {
8    YGNodeSetMeasureFunc(self.yogaNode, RNDateTimePickerShadowViewMeasure);
9  }
10  return self;
11}
12
13- (void)setDate:(NSDate *)date {
14  _date = date;
15  YGNodeMarkDirty(self.yogaNode);
16}
17
18- (void)setLocale:(NSLocale *)locale {
19  _locale = locale;
20  YGNodeMarkDirty(self.yogaNode);
21}
22
23- (void)setMode:(UIDatePickerMode)mode {
24  _mode = mode;
25  YGNodeMarkDirty(self.yogaNode);
26}
27
28
29- (void)setDisplayIOS:(UIDatePickerStyle)displayIOS {
30  _displayIOS = displayIOS;
31  YGNodeMarkDirty(self.yogaNode);
32}
33
34static YGSize RNDateTimePickerShadowViewMeasure(YGNodeRef node, float width, YGMeasureMode widthMode, float height, YGMeasureMode heightMode)
35{
36  RNDateTimePickerShadowView *shadowPickerView = (__bridge RNDateTimePickerShadowView *)YGNodeGetContext(node);
37
38  __block CGSize size;
39  dispatch_sync(dispatch_get_main_queue(), ^{
40    [shadowPickerView.picker setDate:shadowPickerView.date];
41    [shadowPickerView.picker setDatePickerMode:shadowPickerView.mode];
42    [shadowPickerView.picker setLocale:shadowPickerView.locale];
43    if (@available(iOS 14.0, *)) {
44      [shadowPickerView.picker setPreferredDatePickerStyle:shadowPickerView.displayIOS];
45    }
46	size = [shadowPickerView.picker sizeThatFits:UILayoutFittingCompressedSize];
47	size.width += 10;
48  });
49
50  return (YGSize){
51    RCTYogaFloatFromCoreGraphicsFloat(size.width),
52    RCTYogaFloatFromCoreGraphicsFloat(size.height)
53  };
54}
55
56@end
57