@aguacerowx/react-native 0.0.29 → 0.0.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ios/GridRenderLayer.swift +60 -117
- package/ios/GridRenderLayerBridge.swift +0 -1
- package/ios/GridRenderLayerView.m +1 -41
- package/ios/InspectorModule.swift +2 -2
- package/lib/commonjs/ios/GridRenderLayer.swift +60 -117
- package/lib/commonjs/ios/GridRenderLayerBridge.swift +0 -1
- package/lib/commonjs/ios/GridRenderLayerView.m +1 -41
- package/lib/commonjs/ios/InspectorModule.swift +2 -2
- package/lib/commonjs/package.json +1 -1
- package/lib/commonjs/src/GridRenderLayer.js +0 -2
- package/lib/commonjs/src/GridRenderLayer.js.map +1 -1
- package/lib/commonjs/src/WeatherLayerManager.js +125 -77
- package/lib/commonjs/src/WeatherLayerManager.js.map +1 -1
- package/lib/module/ios/GridRenderLayer.swift +60 -117
- package/lib/module/ios/GridRenderLayerBridge.swift +0 -1
- package/lib/module/ios/GridRenderLayerView.m +1 -41
- package/lib/module/ios/InspectorModule.swift +2 -2
- package/lib/module/lib/commonjs/android/build.gradle +108 -0
- package/lib/module/lib/commonjs/ios/AguaceroPackage.m +19 -0
- package/lib/module/lib/commonjs/ios/FragmentUniforms.swift +16 -0
- package/lib/module/lib/commonjs/ios/GridRenderLayer.swift +986 -0
- package/lib/module/lib/commonjs/ios/GridRenderLayerManager.mm +158 -0
- package/lib/module/lib/commonjs/ios/GridRenderLayerView.m +217 -0
- package/lib/module/lib/commonjs/ios/compiled-shaders/Shaders-device.metallib +0 -0
- package/lib/module/lib/commonjs/package.json +1 -1
- package/lib/module/lib/commonjs/src/GridRenderLayer.js +0 -2
- package/lib/module/lib/commonjs/src/GridRenderLayer.js.map +1 -1
- package/lib/module/lib/commonjs/src/WeatherLayerManager.js +125 -77
- package/lib/module/lib/commonjs/src/WeatherLayerManager.js.map +1 -1
- package/lib/module/package.json +1 -1
- package/lib/module/src/GridRenderLayer.js +0 -2
- package/lib/module/src/GridRenderLayer.js.map +1 -1
- package/lib/module/src/WeatherLayerManager.js +125 -77
- package/lib/module/src/WeatherLayerManager.js.map +1 -1
- package/lib/typescript/src/GridRenderLayer.d.ts.map +1 -1
- package/lib/typescript/src/WeatherLayerManager.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/GridRenderLayer.js +0 -2
- package/src/WeatherLayerManager.js +135 -87
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
#import <React/RCTViewManager.h>
|
|
2
|
+
#import <React/RCTUIManager.h>
|
|
3
|
+
#import <React/RCTLog.h>
|
|
4
|
+
#import "GridRenderLayerView.h"
|
|
5
|
+
|
|
6
|
+
// Import Swift bridging header here
|
|
7
|
+
#if __has_include("aguacerowx_react_native-Swift.h")
|
|
8
|
+
#import "aguacerowx_react_native-Swift.h"
|
|
9
|
+
#else
|
|
10
|
+
#import <aguacerowx_react_native/aguacerowx_react_native-Swift.h>
|
|
11
|
+
#endif
|
|
12
|
+
|
|
13
|
+
@interface GridRenderLayerManager : RCTViewManager
|
|
14
|
+
@end
|
|
15
|
+
|
|
16
|
+
@implementation GridRenderLayerManager
|
|
17
|
+
|
|
18
|
+
RCT_EXPORT_MODULE(GridRenderLayer)
|
|
19
|
+
|
|
20
|
+
+ (BOOL)requiresMainQueueSetup {
|
|
21
|
+
return YES;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
- (UIView *)view {
|
|
25
|
+
return [[GridRenderLayerView alloc] init];
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// --- Props ---
|
|
29
|
+
RCT_EXPORT_VIEW_PROPERTY(opacity, float)
|
|
30
|
+
RCT_EXPORT_VIEW_PROPERTY(dataRange, NSArray)
|
|
31
|
+
RCT_EXPORT_VIEW_PROPERTY(smoothing, BOOL)
|
|
32
|
+
RCT_EXPORT_VIEW_PROPERTY(belowID, NSString)
|
|
33
|
+
|
|
34
|
+
// --- Commands ---
|
|
35
|
+
RCT_EXPORT_METHOD(updateGeometry:(nonnull NSNumber *)reactTag
|
|
36
|
+
corners:(NSDictionary *)corners
|
|
37
|
+
gridDef:(NSDictionary *)gridDef)
|
|
38
|
+
{
|
|
39
|
+
// OPTIMIZATION: Dispatch heavy geometry calculations to a high-priority background queue.
|
|
40
|
+
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
|
|
41
|
+
[self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
|
|
42
|
+
GridRenderLayerView *view = (GridRenderLayerView *)viewRegistry[reactTag];
|
|
43
|
+
if ([view isKindOfClass:[GridRenderLayerView class]]) {
|
|
44
|
+
[view.layerInstance updateGeometryWithCorners:corners gridDef:gridDef];
|
|
45
|
+
}
|
|
46
|
+
}];
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
RCT_EXPORT_METHOD(updateDataTexture:(nonnull NSNumber *)reactTag
|
|
52
|
+
data:(NSString *)data
|
|
53
|
+
nx:(nonnull NSNumber *)nx
|
|
54
|
+
ny:(nonnull NSNumber *)ny
|
|
55
|
+
scale:(nonnull NSNumber *)scale
|
|
56
|
+
offset:(nonnull NSNumber *)offset
|
|
57
|
+
missing:(nonnull NSNumber *)missing
|
|
58
|
+
scaleType:(NSString *)scaleType)
|
|
59
|
+
{
|
|
60
|
+
// OPTIMIZATION: Dispatch to a high-priority background queue immediately.
|
|
61
|
+
// This unblocks the main thread and starts the heaviest work (data processing) sooner.
|
|
62
|
+
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
|
|
63
|
+
[self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
|
|
64
|
+
GridRenderLayerView *view = (GridRenderLayerView *)viewRegistry[reactTag];
|
|
65
|
+
if ([view isKindOfClass:[GridRenderLayerView class]]) {
|
|
66
|
+
[view.layerInstance updateDataTextureWithData:data nx:nx ny:ny scale:scale offset:offset missing:missing scaleType:scaleType];
|
|
67
|
+
}
|
|
68
|
+
}];
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
RCT_EXPORT_METHOD(updateColormapTexture:(nonnull NSNumber *)reactTag
|
|
73
|
+
colormapAsBase64:(NSString *)colormapAsBase64)
|
|
74
|
+
{
|
|
75
|
+
// Don't block the main thread - dispatch to background first
|
|
76
|
+
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
|
|
77
|
+
[self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
|
|
78
|
+
GridRenderLayerView *view = (GridRenderLayerView *)viewRegistry[reactTag];
|
|
79
|
+
if ([view isKindOfClass:[GridRenderLayerView class]]) {
|
|
80
|
+
[view.layerInstance updateColormapTextureWithColormapAsBase64:colormapAsBase64];
|
|
81
|
+
}
|
|
82
|
+
}];
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
RCT_EXPORT_METHOD(updateDataParameters:(nonnull NSNumber *)reactTag
|
|
87
|
+
scale:(nonnull NSNumber *)scale
|
|
88
|
+
offset:(nonnull NSNumber *)offset
|
|
89
|
+
missing:(nonnull NSNumber *)missing
|
|
90
|
+
scaleType:(nonnull NSNumber *)scaleType) // ADD THIS
|
|
91
|
+
{
|
|
92
|
+
[self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
|
|
93
|
+
GridRenderLayerView *view = (GridRenderLayerView *)viewRegistry[reactTag];
|
|
94
|
+
if ([view isKindOfClass:[GridRenderLayerView class]]) {
|
|
95
|
+
[view.layerInstance updateDataParametersWithScale:scale offset:offset missing:missing scaleType:scaleType]; // ADD scaleType here
|
|
96
|
+
}
|
|
97
|
+
}];
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
RCT_EXPORT_METHOD(clear:(nonnull NSNumber *)reactTag)
|
|
101
|
+
{
|
|
102
|
+
[self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
|
|
103
|
+
GridRenderLayerView *view = (GridRenderLayerView *)viewRegistry[reactTag];
|
|
104
|
+
if ([view isKindOfClass:[GridRenderLayerView class]]) {
|
|
105
|
+
[view.layerInstance clear];
|
|
106
|
+
}
|
|
107
|
+
}];
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
RCT_EXPORT_METHOD(primeGpuCache:(nonnull NSNumber *)reactTag
|
|
111
|
+
frameInfo:(NSDictionary *)frameInfo)
|
|
112
|
+
{
|
|
113
|
+
// OPTIMIZATION: Dispatch this immediately to a background thread to unblock JS.
|
|
114
|
+
// The Swift implementation will then handle its own concurrency.
|
|
115
|
+
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
|
|
116
|
+
[self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
|
|
117
|
+
GridRenderLayerView *view = (GridRenderLayerView *)viewRegistry[reactTag];
|
|
118
|
+
if ([view isKindOfClass:[GridRenderLayerView class]]) {
|
|
119
|
+
[view.layerInstance primeGpuCacheWithFrameInfo:frameInfo];
|
|
120
|
+
}
|
|
121
|
+
}];
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
RCT_EXPORT_METHOD(setActiveFrame:(nonnull NSNumber *)reactTag
|
|
126
|
+
cacheKey:(NSString *)cacheKey)
|
|
127
|
+
{
|
|
128
|
+
[self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
|
|
129
|
+
GridRenderLayerView *view = (GridRenderLayerView *)viewRegistry[reactTag];
|
|
130
|
+
if ([view isKindOfClass:[GridRenderLayerView class]]) {
|
|
131
|
+
[view.layerInstance setActiveFrameWithCacheKey:cacheKey];
|
|
132
|
+
}
|
|
133
|
+
}];
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
RCT_EXPORT_METHOD(clearGpuCache:(nonnull NSNumber *)reactTag)
|
|
137
|
+
{
|
|
138
|
+
[self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
|
|
139
|
+
GridRenderLayerView *view = (GridRenderLayerView *)viewRegistry[reactTag];
|
|
140
|
+
if ([view isKindOfClass:[GridRenderLayerView class]]) {
|
|
141
|
+
[view.layerInstance clearGpuCache];
|
|
142
|
+
}
|
|
143
|
+
}];
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// ADD THIS METHOD
|
|
147
|
+
RCT_EXPORT_METHOD(setVariable:(nonnull NSNumber *)reactTag
|
|
148
|
+
variable:(NSString *)variable)
|
|
149
|
+
{
|
|
150
|
+
[self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
|
|
151
|
+
GridRenderLayerView *view = (GridRenderLayerView *)viewRegistry[reactTag];
|
|
152
|
+
if ([view isKindOfClass:[GridRenderLayerView class]]) {
|
|
153
|
+
[view setVariable:variable];
|
|
154
|
+
}
|
|
155
|
+
}];
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
@end
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
#import "GridRenderLayerView.h"
|
|
2
|
+
#import <React/RCTLog.h>
|
|
3
|
+
#import <objc/runtime.h>
|
|
4
|
+
|
|
5
|
+
// Import Swift bridging header
|
|
6
|
+
#if __has_include("aguacerowx_react_native-Swift.h")
|
|
7
|
+
#import "aguacerowx_react_native-Swift.h"
|
|
8
|
+
#else
|
|
9
|
+
#import <aguacerowx_react_native/aguacerowx_react_native-Swift.h>
|
|
10
|
+
#endif
|
|
11
|
+
|
|
12
|
+
// Import MapboxMaps to get MapView definition
|
|
13
|
+
@import MapboxMaps;
|
|
14
|
+
|
|
15
|
+
@interface GridRenderLayerView ()
|
|
16
|
+
@property (nonatomic, assign) BOOL isLayerAdded;
|
|
17
|
+
@end
|
|
18
|
+
|
|
19
|
+
@implementation GridRenderLayerView
|
|
20
|
+
- (instancetype)init {
|
|
21
|
+
self = [super init];
|
|
22
|
+
if (self) {
|
|
23
|
+
_layerId = [NSString stringWithFormat:@"weather-layer-%@", [[NSUUID UUID] UUIDString]];
|
|
24
|
+
_layerInstance = [[GridRenderLayer alloc] initWithId:_layerId];
|
|
25
|
+
_isLayerAdded = NO;
|
|
26
|
+
}
|
|
27
|
+
return self;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
#pragma mark - Property Setters
|
|
31
|
+
|
|
32
|
+
- (void)setOpacity:(float)opacity {
|
|
33
|
+
[self.layerInstance setOpacityWithValue:opacity];
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
- (void)setDataRange:(NSArray *)dataRange {
|
|
37
|
+
if (dataRange && dataRange.count == 2) {
|
|
38
|
+
[self.layerInstance setDataRangeWithValue:dataRange];
|
|
39
|
+
} else {
|
|
40
|
+
RCTLogError(@"❌ [GridRenderLayerView] Invalid dataRange: %@", dataRange);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
- (void)setSmoothing:(BOOL)smoothing {
|
|
45
|
+
[self.layerInstance setSmoothingWithValue:smoothing];
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
- (void)setBelowID:(NSString *)belowID {
|
|
49
|
+
_belowID = belowID;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// ADD THIS METHOD
|
|
53
|
+
- (void)setVariable:(NSString *)variable {
|
|
54
|
+
[self.layerInstance setVariableWithVariable:variable];
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
#pragma mark - View Lifecycle
|
|
58
|
+
|
|
59
|
+
- (void)didMoveToWindow {
|
|
60
|
+
[super didMoveToWindow];
|
|
61
|
+
if (self.window && !self.isLayerAdded) {
|
|
62
|
+
[self findMapViewAndAddLayerInView:self.window];
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
- (void)layoutSubviews {
|
|
67
|
+
[super layoutSubviews];
|
|
68
|
+
|
|
69
|
+
static dispatch_once_t onceToken;
|
|
70
|
+
dispatch_once(&onceToken, ^{
|
|
71
|
+
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
|
|
72
|
+
if (!self.isLayerAdded) {
|
|
73
|
+
UIView *searchRoot = self.window ? self.window : self.superview;
|
|
74
|
+
if (searchRoot) {
|
|
75
|
+
[self findMapViewAndAddLayerInView:searchRoot];
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
- (void)findMapViewAndAddLayerInView:(UIView *)view {
|
|
83
|
+
if (!view || self.isLayerAdded) {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
NSString *className = NSStringFromClass([view class]);
|
|
88
|
+
|
|
89
|
+
if ([className isEqualToString:@"RNMBXMapView"]) {
|
|
90
|
+
if (view.subviews.count > 0) {
|
|
91
|
+
UIView *firstSubview = view.subviews[0];
|
|
92
|
+
NSString *subviewClass = NSStringFromClass([firstSubview class]);
|
|
93
|
+
if ([subviewClass containsString:@"MapboxMaps.MapView"] || [subviewClass isEqualToString:@"MapView"]) {
|
|
94
|
+
self.mapView = (MapView *)firstSubview;
|
|
95
|
+
[self waitForStyleLoadAndAddLayer];
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
RCTLogError(@"❌ [GridRenderLayerView] RNMBXMapView found but MapboxMaps.MapView not in expected location");
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
for (UIView *subview in view.subviews) {
|
|
105
|
+
[self findMapViewAndAddLayerInView:subview];
|
|
106
|
+
if (self.isLayerAdded) {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
- (void)waitForStyleLoadAndAddLayer {
|
|
113
|
+
if (!self.mapView) {
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
NSString *targetLayer = self.belowID ?: @"AML_-_terrain";
|
|
118
|
+
|
|
119
|
+
// Check if the target layer already exists
|
|
120
|
+
if ([GridRenderLayerBridge layerExistsIn:self.mapView layerId:targetLayer]) {
|
|
121
|
+
[self addLayerToMap];
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
[self pollForLayerExistence];
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
- (void)pollForLayerExistence {
|
|
129
|
+
if (self.isLayerAdded || !self.mapView) {
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
NSString *targetLayer = self.belowID ?: @"AML_-_terrain";
|
|
134
|
+
|
|
135
|
+
if ([GridRenderLayerBridge layerExistsIn:self.mapView layerId:targetLayer]) {
|
|
136
|
+
[self addLayerToMap];
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// Try again in 100ms
|
|
141
|
+
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
|
|
142
|
+
[self pollForLayerExistence];
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
- (void)addLayerToMap {
|
|
147
|
+
if (!self.mapView || self.isLayerAdded) {
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
id customLayer = [self.layerInstance getHostWrapper];
|
|
152
|
+
|
|
153
|
+
if (!customLayer) {
|
|
154
|
+
RCTLogError(@"❌ [GridRenderLayerView] Failed to get hostWrapper");
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
BOOL success = [GridRenderLayerBridge addCustomLayerTo:self.mapView
|
|
159
|
+
layerHost:customLayer
|
|
160
|
+
layerId:self.layerId
|
|
161
|
+
belowLayerId:self.belowID];
|
|
162
|
+
|
|
163
|
+
if (success) {
|
|
164
|
+
self.isLayerAdded = YES;
|
|
165
|
+
|
|
166
|
+
[[NSNotificationCenter defaultCenter] addObserverForName:@"TriggerMapRepaint"
|
|
167
|
+
object:nil
|
|
168
|
+
queue:[NSOperationQueue mainQueue]
|
|
169
|
+
usingBlock:^(NSNotification *note) {
|
|
170
|
+
if (self.mapView) {
|
|
171
|
+
[GridRenderLayerBridge triggerRepaintOn:self.mapView];
|
|
172
|
+
}
|
|
173
|
+
}];
|
|
174
|
+
} else {
|
|
175
|
+
RCTLogError(@"❌ [GridRenderLayerView] Failed to add layer via Swift bridge");
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
- (void)removeFromSuperview {
|
|
180
|
+
if (self.mapView && self.isLayerAdded) {
|
|
181
|
+
id mapboxMap = [self.mapView valueForKey:@"mapboxMap"];
|
|
182
|
+
id style = [mapboxMap valueForKey:@"style"];
|
|
183
|
+
|
|
184
|
+
SEL removeLayerSelector = NSSelectorFromString(@"removeStyleLayerWithIdentifier:completion:");
|
|
185
|
+
if ([style respondsToSelector:removeLayerSelector]) {
|
|
186
|
+
NSMethodSignature *signature = [style methodSignatureForSelector:removeLayerSelector];
|
|
187
|
+
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature];
|
|
188
|
+
[invocation setTarget:style];
|
|
189
|
+
[invocation setSelector:removeLayerSelector];
|
|
190
|
+
|
|
191
|
+
NSString *layerId = self.layerId;
|
|
192
|
+
[invocation setArgument:&layerId atIndex:2];
|
|
193
|
+
|
|
194
|
+
id nilCompletion = nil;
|
|
195
|
+
[invocation setArgument:&nilCompletion atIndex:3];
|
|
196
|
+
[invocation invoke];
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
[super removeFromSuperview];
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
- (void)dealloc {
|
|
203
|
+
RCTLogInfo(@"🔴 [GridRenderLayerView] dealloc called");
|
|
204
|
+
|
|
205
|
+
// Remove notification observer
|
|
206
|
+
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
|
207
|
+
|
|
208
|
+
// Clear the layer instance
|
|
209
|
+
if (_layerInstance) {
|
|
210
|
+
[_layerInstance clear];
|
|
211
|
+
_layerInstance = nil;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
_mapView = nil;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
@end
|
|
@@ -38,14 +38,12 @@ function _interopRequireWildcard(e, t) {
|
|
|
38
38
|
const NATIVE_COMPONENT_NAME = 'GridRenderLayer';
|
|
39
39
|
if (_reactNative.UIManager.getViewManagerConfig) {
|
|
40
40
|
const allComponents = Object.keys(_reactNative.UIManager).filter(key => !key.startsWith('_') && typeof _reactNative.UIManager[key] !== 'function');
|
|
41
|
-
console.log('📋 Available components:', allComponents.slice(0, 20)); // Show first 20
|
|
42
41
|
}
|
|
43
42
|
const GridRenderLayer = exports.GridRenderLayer = /*#__PURE__*/(0, _react.forwardRef)((props, ref) => {
|
|
44
43
|
const nativeRef = (0, _react.useRef)(null);
|
|
45
44
|
(0, _react.useEffect)(() => {
|
|
46
45
|
if (nativeRef.current) {
|
|
47
46
|
const handle = (0, _reactNative.findNodeHandle)(nativeRef.current);
|
|
48
|
-
console.log('🟢 [GridRenderLayer] Native node handle:', handle);
|
|
49
47
|
}
|
|
50
48
|
return () => {
|
|
51
49
|
console.log('🔴 [GridRenderLayer] Component unmounting');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_GridRenderLayerNativeComponent","_interopRequireDefault","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","NATIVE_COMPONENT_NAME","UIManager","getViewManagerConfig","allComponents","keys","filter","key","startsWith","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_GridRenderLayerNativeComponent","_interopRequireDefault","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","NATIVE_COMPONENT_NAME","UIManager","getViewManagerConfig","allComponents","keys","filter","key","startsWith","GridRenderLayer","exports","forwardRef","props","ref","nativeRef","useRef","useEffect","current","handle","findNodeHandle","console","log","getCommandId","commandName","config","commandId","Commands","error","useImperativeHandle","updateGeometry","corners","gridDef","dispatchViewManagerCommand","warn","setVariable","variableName","updateDataTextureFromFile","filePath","nx","ny","scale","offset","missing","scaleType","Number","updateDataTexture","base64Data","updateColormapTexture","colormapArray","updateDataParameters","setSmoothing","enabled","setNativeProps","smoothing","clear","primeGpuCache","frameInfo","setActiveFrame","cacheKey","clearGpuCache","createElement","opacity","dataRange","belowID","style","styles","overlay","pointerEvents","StyleSheet","create","absoluteFillObject"],"sourceRoot":"../../..","sources":["src/GridRenderLayer.js"],"mappings":"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","ignoreList":[]}
|