-
-
Notifications
You must be signed in to change notification settings - Fork 936
Expand file tree
/
Copy pathRNMBXViewportModule.mm
More file actions
72 lines (60 loc) · 2.4 KB
/
RNMBXViewportModule.mm
File metadata and controls
72 lines (60 loc) · 2.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#import <React/RCTBridge.h>
#import <React/RCTUIManager.h>
#import <React/RCTUIManagerUtils.h>
#import "RNMBXViewportModule.h"
#import "RNMBXViewportComponentView.h"
#import "rnmapbox_maps-Swift.pre.h"
@implementation RNMBXViewportModule
RCT_EXPORT_MODULE();
@synthesize viewRegistry_DEPRECATED = _viewRegistry_DEPRECATED;
@synthesize bridge = _bridge;
- (dispatch_queue_t)methodQueue
{
// It seems that due to how UIBlocks work with uiManager, we need to call the methods there
// for the blocks to be dispatched before the batch is completed
return RCTGetUIManagerQueue();
}
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
(const facebook::react::ObjCTurboModule::InitParams &)params
{
return std::make_shared<facebook::react::NativeRNMBXViewportModuleSpecJSI>(params);
}
- (void)withViewport:(nonnull NSNumber*)viewRef block:(void (^)(RNMBXViewport *))block reject:(RCTPromiseRejectBlock)reject methodName:(NSString *)methodName
{
[RNMBXViewResolver withViewRef:viewRef
delegate:self
expectedClass:[RNMBXViewport class]
block:^(UIView *view) {
block((RNMBXViewport *)view);
}
reject:reject
methodName:methodName];
}
RCT_EXPORT_METHOD(getState:(nonnull NSNumber *)viewRef
resolve:(RCTPromiseResolveBlock)resolve
reject:(RCTPromiseRejectBlock)reject)
{
[self withViewport:viewRef block:^(RNMBXViewport *view) {
resolve([view getState]);
} reject:reject methodName:@"getState"];
}
RCT_EXPORT_METHOD(idle:(nonnull NSNumber *)viewRef
resolve:(RCTPromiseResolveBlock)resolve
reject:(RCTPromiseRejectBlock)reject)
{
[self withViewport:viewRef block:^(RNMBXViewport *view) {
[view idle];
resolve(nil);
} reject:reject methodName:@"idle"];
}
RCT_EXPORT_METHOD(transitionTo:(nonnull NSNumber *)viewRef
state: (NSDictionary*)state
transition: (NSDictionary*) transition
resolve:(RCTPromiseResolveBlock)resolve
reject:(RCTPromiseRejectBlock)reject)
{
[self withViewport:viewRef block:^(RNMBXViewport *view) {
[view transitionToState:state transition:transition resolve:resolve];
} reject:reject methodName:@"transitionTo"];
}
@end