@rnmapbox/maps 10.1.0-beta.24 → 10.1.0-beta.26

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.
Files changed (129) hide show
  1. package/android/src/main/java/com/rnmapbox/rnmbx/RNMBXPackage.kt +4 -0
  2. package/android/src/main/java/com/rnmapbox/rnmbx/components/images/RNMBXImagesManager.kt +27 -3
  3. package/android/src/main/java/com/rnmapbox/rnmbx/components/mapview/NativeMapViewModule.kt +1 -1
  4. package/android/src/main/java/com/rnmapbox/rnmbx/components/styles/RNMBXStyleFactory.kt +1184 -109
  5. package/android/src/main/java/com/rnmapbox/rnmbx/components/styles/layers/RNMBXModelLayer.kt +33 -0
  6. package/android/src/main/java/com/rnmapbox/rnmbx/components/styles/layers/RNMBXModelLayerManager.kt +85 -0
  7. package/android/src/main/java/com/rnmapbox/rnmbx/components/styles/model/RNMBXModels.kt +33 -0
  8. package/android/src/main/java/com/rnmapbox/rnmbx/components/styles/model/RNMBXModelsManager.kt +59 -0
  9. package/android/src/main/java/com/rnmapbox/rnmbx/modules/RNMBXOfflineModule.kt +4 -1
  10. package/android/src/main/mapbox-v11-compat/v10/com/rnmapbox/rnmbx/v11compat/OfflineManager.kt +6 -0
  11. package/android/src/main/mapbox-v11-compat/v10/com/rnmapbox/rnmbx/v11compat/StyleFactory.kt +395 -0
  12. package/android/src/main/mapbox-v11-compat/v11/com/rnmapbox/rnmbx/v11compat/OfflineManager.kt +4 -0
  13. package/android/src/main/mapbox-v11-compat/v11/com/rnmapbox/rnmbx/v11compat/StyleFactory.kt +8 -0
  14. package/android/src/main/old-arch/com/facebook/react/viewmanagers/RNMBXModelLayerManagerDelegate.java +65 -0
  15. package/android/src/main/old-arch/com/facebook/react/viewmanagers/RNMBXModelLayerManagerInterface.java +28 -0
  16. package/android/src/main/old-arch/com/facebook/react/viewmanagers/RNMBXModelsManagerDelegate.java +32 -0
  17. package/android/src/main/old-arch/com/facebook/react/viewmanagers/RNMBXModelsManagerInterface.java +17 -0
  18. package/ios/RNMBX/CustomHttpHeaders.swift +2 -9
  19. package/ios/RNMBX/RNMBXModelLayer.swift +59 -0
  20. package/ios/RNMBX/RNMBXModelLayerComponentView.h +15 -0
  21. package/ios/RNMBX/RNMBXModelLayerComponentView.mm +70 -0
  22. package/ios/RNMBX/RNMBXModelLayerViewManager.m +12 -0
  23. package/ios/RNMBX/RNMBXModelLayerViewManager.swift +13 -0
  24. package/ios/RNMBX/RNMBXModels.swift +63 -0
  25. package/ios/RNMBX/RNMBXModelsComponentView.h +17 -0
  26. package/ios/RNMBX/RNMBXModelsComponentView.mm +67 -0
  27. package/ios/RNMBX/RNMBXModelsManager.mm +9 -0
  28. package/ios/RNMBX/RNMBXModelsManager.swift +13 -0
  29. package/ios/RNMBX/RNMBXStyle.swift +786 -1
  30. package/ios/RNMBX/RNMBXStyleValue.swift +34 -3
  31. package/lib/commonjs/Mapbox.js +16 -0
  32. package/lib/commonjs/Mapbox.js.map +1 -1
  33. package/lib/commonjs/components/AbstractLayer.js +1 -1
  34. package/lib/commonjs/components/AbstractLayer.js.map +1 -1
  35. package/lib/commonjs/components/ModelLayer.js +37 -0
  36. package/lib/commonjs/components/ModelLayer.js.map +1 -0
  37. package/lib/commonjs/components/Models.js +43 -0
  38. package/lib/commonjs/components/Models.js.map +1 -0
  39. package/lib/commonjs/specs/RNMBXCircleLayerNativeComponent.js.map +1 -1
  40. package/lib/commonjs/specs/RNMBXFillLayerNativeComponent.js.map +1 -1
  41. package/lib/commonjs/specs/RNMBXHeatmapLayerNativeComponent.js.map +1 -1
  42. package/lib/commonjs/specs/RNMBXLineLayerNativeComponent.js.map +1 -1
  43. package/lib/commonjs/specs/RNMBXModelLayerNativeComponent.js +13 -0
  44. package/lib/commonjs/specs/RNMBXModelLayerNativeComponent.js.map +1 -0
  45. package/lib/commonjs/specs/RNMBXModelsNativeComponent.js +10 -0
  46. package/lib/commonjs/specs/RNMBXModelsNativeComponent.js.map +1 -0
  47. package/lib/commonjs/specs/RNMBXRasterLayerNativeComponent.js.map +1 -1
  48. package/lib/commonjs/specs/RNMBXSymbolLayerNativeComponent.js.map +1 -1
  49. package/lib/commonjs/specs/codeparts/CommonLayerNativeComponentsProps.codepart-ts +11 -10
  50. package/lib/commonjs/utils/MapboxStyles.d.js +5 -0
  51. package/lib/commonjs/utils/MapboxStyles.d.js.map +1 -1
  52. package/lib/commonjs/utils/styleMap.js +67 -2
  53. package/lib/commonjs/utils/styleMap.js.map +1 -1
  54. package/lib/module/Mapbox.js +2 -0
  55. package/lib/module/Mapbox.js.map +1 -1
  56. package/lib/module/components/AbstractLayer.js +1 -1
  57. package/lib/module/components/AbstractLayer.js.map +1 -1
  58. package/lib/module/components/ModelLayer.js +30 -0
  59. package/lib/module/components/ModelLayer.js.map +1 -0
  60. package/lib/module/components/Models.js +36 -0
  61. package/lib/module/components/Models.js.map +1 -0
  62. package/lib/module/specs/RNMBXCircleLayerNativeComponent.js +2 -0
  63. package/lib/module/specs/RNMBXCircleLayerNativeComponent.js.map +1 -1
  64. package/lib/module/specs/RNMBXFillLayerNativeComponent.js +2 -0
  65. package/lib/module/specs/RNMBXFillLayerNativeComponent.js.map +1 -1
  66. package/lib/module/specs/RNMBXHeatmapLayerNativeComponent.js +2 -0
  67. package/lib/module/specs/RNMBXHeatmapLayerNativeComponent.js.map +1 -1
  68. package/lib/module/specs/RNMBXLineLayerNativeComponent.js +2 -0
  69. package/lib/module/specs/RNMBXLineLayerNativeComponent.js.map +1 -1
  70. package/lib/module/specs/RNMBXModelLayerNativeComponent.js +9 -0
  71. package/lib/module/specs/RNMBXModelLayerNativeComponent.js.map +1 -0
  72. package/lib/module/specs/RNMBXModelsNativeComponent.js +3 -0
  73. package/lib/module/specs/RNMBXModelsNativeComponent.js.map +1 -0
  74. package/lib/module/specs/RNMBXRasterLayerNativeComponent.js +2 -0
  75. package/lib/module/specs/RNMBXRasterLayerNativeComponent.js.map +1 -1
  76. package/lib/module/specs/RNMBXSymbolLayerNativeComponent.js +2 -0
  77. package/lib/module/specs/RNMBXSymbolLayerNativeComponent.js.map +1 -1
  78. package/lib/module/specs/RNMBXViewportNativeComponent.js +2 -0
  79. package/lib/module/specs/RNMBXViewportNativeComponent.js.map +1 -1
  80. package/lib/module/specs/codeparts/CommonLayerNativeComponentsProps.codepart-ts +11 -10
  81. package/lib/module/utils/MapboxStyles.d.js +5 -0
  82. package/lib/module/utils/MapboxStyles.d.js.map +1 -1
  83. package/lib/module/utils/styleMap.js +67 -2
  84. package/lib/module/utils/styleMap.js.map +1 -1
  85. package/lib/typescript/src/Mapbox.d.ts +3 -1
  86. package/lib/typescript/src/Mapbox.d.ts.map +1 -1
  87. package/lib/typescript/src/components/AbstractLayer.d.ts +9 -4
  88. package/lib/typescript/src/components/AbstractLayer.d.ts.map +1 -1
  89. package/lib/typescript/src/components/MapView.d.ts +1 -5
  90. package/lib/typescript/src/components/MapView.d.ts.map +1 -1
  91. package/lib/typescript/src/components/ModelLayer.d.ts +77 -0
  92. package/lib/typescript/src/components/ModelLayer.d.ts.map +1 -0
  93. package/lib/typescript/src/components/Models.d.ts +15 -0
  94. package/lib/typescript/src/components/Models.d.ts.map +1 -0
  95. package/lib/typescript/src/components/Viewport.d.ts +1 -1
  96. package/lib/typescript/src/specs/RNMBXCircleLayerNativeComponent.d.ts +12 -10
  97. package/lib/typescript/src/specs/RNMBXCircleLayerNativeComponent.d.ts.map +1 -1
  98. package/lib/typescript/src/specs/RNMBXFillLayerNativeComponent.d.ts +12 -10
  99. package/lib/typescript/src/specs/RNMBXFillLayerNativeComponent.d.ts.map +1 -1
  100. package/lib/typescript/src/specs/RNMBXHeatmapLayerNativeComponent.d.ts +12 -10
  101. package/lib/typescript/src/specs/RNMBXHeatmapLayerNativeComponent.d.ts.map +1 -1
  102. package/lib/typescript/src/specs/RNMBXLineLayerNativeComponent.d.ts +12 -10
  103. package/lib/typescript/src/specs/RNMBXLineLayerNativeComponent.d.ts.map +1 -1
  104. package/lib/typescript/src/specs/RNMBXModelLayerNativeComponent.d.ts +28 -0
  105. package/lib/typescript/src/specs/RNMBXModelLayerNativeComponent.d.ts.map +1 -0
  106. package/lib/typescript/src/specs/RNMBXModelsNativeComponent.d.ts +15 -0
  107. package/lib/typescript/src/specs/RNMBXModelsNativeComponent.d.ts.map +1 -0
  108. package/lib/typescript/src/specs/RNMBXRasterLayerNativeComponent.d.ts +12 -10
  109. package/lib/typescript/src/specs/RNMBXRasterLayerNativeComponent.d.ts.map +1 -1
  110. package/lib/typescript/src/specs/RNMBXSymbolLayerNativeComponent.d.ts +12 -10
  111. package/lib/typescript/src/specs/RNMBXSymbolLayerNativeComponent.d.ts.map +1 -1
  112. package/lib/typescript/src/utils/styleMap.d.ts.map +1 -1
  113. package/package.json +2 -2
  114. package/src/Mapbox.ts +3 -0
  115. package/src/components/AbstractLayer.tsx +11 -5
  116. package/src/components/ModelLayer.tsx +107 -0
  117. package/src/components/Models.tsx +44 -0
  118. package/src/components/Viewport.tsx +1 -1
  119. package/src/specs/RNMBXCircleLayerNativeComponent.ts +15 -12
  120. package/src/specs/RNMBXFillLayerNativeComponent.ts +15 -12
  121. package/src/specs/RNMBXHeatmapLayerNativeComponent.ts +15 -12
  122. package/src/specs/RNMBXLineLayerNativeComponent.ts +15 -12
  123. package/src/specs/RNMBXModelLayerNativeComponent.ts +38 -0
  124. package/src/specs/RNMBXModelsNativeComponent.ts +18 -0
  125. package/src/specs/RNMBXRasterLayerNativeComponent.ts +15 -12
  126. package/src/specs/RNMBXSymbolLayerNativeComponent.ts +15 -12
  127. package/src/specs/codeparts/CommonLayerNativeComponentsProps.codepart-ts +11 -10
  128. package/src/utils/MapboxStyles.d.ts +526 -63
  129. package/src/utils/styleMap.ts +69 -2
@@ -0,0 +1,65 @@
1
+ /**
2
+ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
3
+ *
4
+ * Do not edit this file as changes may cause incorrect behavior and will be lost
5
+ * once the code is regenerated.
6
+ *
7
+ * @generated by codegen project: GeneratePropsJavaDelegate.js
8
+ */
9
+
10
+ package com.facebook.react.viewmanagers;
11
+
12
+ import android.view.View;
13
+ import androidx.annotation.Nullable;
14
+ import com.facebook.react.bridge.DynamicFromObject;
15
+ import com.facebook.react.uimanager.BaseViewManagerDelegate;
16
+ import com.facebook.react.uimanager.BaseViewManagerInterface;
17
+
18
+ public class RNMBXModelLayerManagerDelegate<T extends View, U extends BaseViewManagerInterface<T> & RNMBXModelLayerManagerInterface<T>> extends BaseViewManagerDelegate<T, U> {
19
+ public RNMBXModelLayerManagerDelegate(U viewManager) {
20
+ super(viewManager);
21
+ }
22
+ @Override
23
+ public void setProperty(T view, String propName, @Nullable Object value) {
24
+ switch (propName) {
25
+ case "sourceID":
26
+ mViewManager.setSourceID(view, new DynamicFromObject(value));
27
+ break;
28
+ case "existing":
29
+ mViewManager.setExisting(view, new DynamicFromObject(value));
30
+ break;
31
+ case "filter":
32
+ mViewManager.setFilter(view, new DynamicFromObject(value));
33
+ break;
34
+ case "aboveLayerID":
35
+ mViewManager.setAboveLayerID(view, new DynamicFromObject(value));
36
+ break;
37
+ case "belowLayerID":
38
+ mViewManager.setBelowLayerID(view, new DynamicFromObject(value));
39
+ break;
40
+ case "layerIndex":
41
+ mViewManager.setLayerIndex(view, new DynamicFromObject(value));
42
+ break;
43
+ case "maxZoomLevel":
44
+ mViewManager.setMaxZoomLevel(view, new DynamicFromObject(value));
45
+ break;
46
+ case "minZoomLevel":
47
+ mViewManager.setMinZoomLevel(view, new DynamicFromObject(value));
48
+ break;
49
+ case "sourceLayerID":
50
+ mViewManager.setSourceLayerID(view, new DynamicFromObject(value));
51
+ break;
52
+ case "slot":
53
+ mViewManager.setSlot(view, new DynamicFromObject(value));
54
+ break;
55
+ case "id":
56
+ mViewManager.setId(view, new DynamicFromObject(value));
57
+ break;
58
+ case "reactStyle":
59
+ mViewManager.setReactStyle(view, new DynamicFromObject(value));
60
+ break;
61
+ default:
62
+ super.setProperty(view, propName, value);
63
+ }
64
+ }
65
+ }
@@ -0,0 +1,28 @@
1
+ /**
2
+ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
3
+ *
4
+ * Do not edit this file as changes may cause incorrect behavior and will be lost
5
+ * once the code is regenerated.
6
+ *
7
+ * @generated by codegen project: GeneratePropsJavaInterface.js
8
+ */
9
+
10
+ package com.facebook.react.viewmanagers;
11
+
12
+ import android.view.View;
13
+ import com.facebook.react.bridge.Dynamic;
14
+
15
+ public interface RNMBXModelLayerManagerInterface<T extends View> {
16
+ void setSourceID(T view, Dynamic value);
17
+ void setExisting(T view, Dynamic value);
18
+ void setFilter(T view, Dynamic value);
19
+ void setAboveLayerID(T view, Dynamic value);
20
+ void setBelowLayerID(T view, Dynamic value);
21
+ void setLayerIndex(T view, Dynamic value);
22
+ void setMaxZoomLevel(T view, Dynamic value);
23
+ void setMinZoomLevel(T view, Dynamic value);
24
+ void setSourceLayerID(T view, Dynamic value);
25
+ void setSlot(T view, Dynamic value);
26
+ void setId(T view, Dynamic value);
27
+ void setReactStyle(T view, Dynamic value);
28
+ }
@@ -0,0 +1,32 @@
1
+ /**
2
+ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
3
+ *
4
+ * Do not edit this file as changes may cause incorrect behavior and will be lost
5
+ * once the code is regenerated.
6
+ *
7
+ * @generated by codegen project: GeneratePropsJavaDelegate.js
8
+ */
9
+
10
+ package com.facebook.react.viewmanagers;
11
+
12
+ import android.view.View;
13
+ import androidx.annotation.Nullable;
14
+ import com.facebook.react.bridge.DynamicFromObject;
15
+ import com.facebook.react.uimanager.BaseViewManagerDelegate;
16
+ import com.facebook.react.uimanager.BaseViewManagerInterface;
17
+
18
+ public class RNMBXModelsManagerDelegate<T extends View, U extends BaseViewManagerInterface<T> & RNMBXModelsManagerInterface<T>> extends BaseViewManagerDelegate<T, U> {
19
+ public RNMBXModelsManagerDelegate(U viewManager) {
20
+ super(viewManager);
21
+ }
22
+ @Override
23
+ public void setProperty(T view, String propName, @Nullable Object value) {
24
+ switch (propName) {
25
+ case "models":
26
+ mViewManager.setModels(view, new DynamicFromObject(value));
27
+ break;
28
+ default:
29
+ super.setProperty(view, propName, value);
30
+ }
31
+ }
32
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
3
+ *
4
+ * Do not edit this file as changes may cause incorrect behavior and will be lost
5
+ * once the code is regenerated.
6
+ *
7
+ * @generated by codegen project: GeneratePropsJavaInterface.js
8
+ */
9
+
10
+ package com.facebook.react.viewmanagers;
11
+
12
+ import android.view.View;
13
+ import com.facebook.react.bridge.Dynamic;
14
+
15
+ public interface RNMBXModelsManagerInterface<T extends View> {
16
+ void setModels(T view, Dynamic value);
17
+ }
@@ -46,23 +46,16 @@ class CustomHttpHeaders : HttpServiceInterceptorInterface {
46
46
  return request
47
47
  }
48
48
 
49
+ #if !RNMBX_11
49
50
  func onDownload(forDownload download: DownloadOptions) -> DownloadOptions {
50
51
  customHeaders.forEach {(key,value) in
51
52
  download.request.headers[key] = value
52
53
  }
53
54
  return download
54
55
  }
56
+ #endif
55
57
 
56
58
  func onResponse(for response: HttpResponse) -> HttpResponse {
57
59
  return response
58
60
  }
59
-
60
- #if RNMBX_11
61
- func onUpload(forUpload upload: UploadOptions) -> UploadOptions {
62
- customHeaders.forEach {(key,value) in
63
- upload.headers[key] = value
64
- }
65
- return upload
66
- }
67
- #endif
68
61
  }
@@ -0,0 +1,59 @@
1
+ @_spi(Experimental) import MapboxMaps
2
+
3
+ @objc(RNMBXModelLayer)
4
+ public class RNMBXModelLayer: RNMBXVectorLayer {
5
+ typealias LayerType = ModelLayer
6
+
7
+ override func makeLayer(style: Style) throws -> Layer {
8
+ let vectorSource : VectorSource = try self.layerWithSourceID(in: style)
9
+ #if RNMBX_11
10
+ var layer = LayerType(id: self.id!, source: sourceID!)
11
+ #else
12
+ var layer = LayerType(id: self.id!)
13
+ #endif
14
+ layer.sourceLayer = self.sourceLayerID
15
+ layer.source = sourceID
16
+ return layer
17
+ }
18
+
19
+ override func layerType() -> Layer.Type {
20
+ return LayerType.self
21
+ }
22
+
23
+ override func apply(style : Style) throws {
24
+ try style.updateLayer(withId: id, type: LayerType.self) { (layer : inout ModelLayer) in
25
+ if self.styleLayer != nil {
26
+ self.setOptions(&self.styleLayer!)
27
+ }
28
+ if let styleLayer = self.styleLayer as? ModelLayer {
29
+ layer = styleLayer
30
+ }
31
+ }
32
+ }
33
+
34
+ override func addStyles() {
35
+ if let style : Style = self.style {
36
+ let styler = RNMBXStyle(style: self.style!)
37
+ styler.bridge = self.bridge
38
+
39
+ if var styleLayer = self.styleLayer as? LayerType,
40
+ let reactStyle = reactStyle {
41
+ styler.modelLayer(
42
+ layer: &styleLayer,
43
+ reactStyle: reactStyle,
44
+ oldReactStyle: oldReatStyle,
45
+ applyUpdater: { (updater) in logged("RNMBXModelLayer.updateLayer") {
46
+ try style.updateLayer(withId: self.id, type: LayerType.self) { (layer: inout LayerType) in updater(&layer) }
47
+ }},
48
+ isValid: {
49
+ return self.isAddedToMap()
50
+ })
51
+ self.styleLayer = styleLayer
52
+ }
53
+ }
54
+ }
55
+
56
+ func isAddedToMap() -> Bool {
57
+ return true
58
+ }
59
+ }
@@ -0,0 +1,15 @@
1
+ #ifdef RCT_NEW_ARCH_ENABLED
2
+
3
+ #import <UIKit/UIKit.h>
4
+
5
+ #import <React/RCTUIManager.h>
6
+ #import <React/RCTViewComponentView.h>
7
+
8
+ NS_ASSUME_NONNULL_BEGIN
9
+
10
+ @interface RNMBXModelLayerComponentView : RCTViewComponentView
11
+ @end
12
+
13
+ NS_ASSUME_NONNULL_END
14
+
15
+ #endif // RCT_NEW_ARCH_ENABLED
@@ -0,0 +1,70 @@
1
+ #ifdef RCT_NEW_ARCH_ENABLED
2
+
3
+ #import "RNMBXModelLayerComponentView.h"
4
+ #import "RNMBXFabricHelpers.h"
5
+
6
+ #import <React/RCTConversions.h>
7
+ #import <React/RCTFabricComponentsPlugins.h>
8
+ #import <React/RCTBridge+Private.h>
9
+
10
+ #import <react/renderer/components/rnmapbox_maps_specs/ComponentDescriptors.h>
11
+ #import <react/renderer/components/rnmapbox_maps_specs/EventEmitters.h>
12
+ #import <react/renderer/components/rnmapbox_maps_specs/Props.h>
13
+ #import <react/renderer/components/rnmapbox_maps_specs/RCTComponentViewHelpers.h>
14
+
15
+ using namespace facebook::react;
16
+
17
+ @interface RNMBXModelLayerComponentView () <RCTRNMBXModelLayerViewProtocol>
18
+ @end
19
+
20
+ @implementation RNMBXModelLayerComponentView {
21
+ RNMBXModelLayer *_view;
22
+ }
23
+
24
+ - (instancetype)initWithFrame:(CGRect)frame
25
+ {
26
+ if (self = [super initWithFrame:frame]) {
27
+ static const auto defaultProps = std::make_shared<const RNMBXModelLayerProps>();
28
+ _props = defaultProps;
29
+ [self prepareView];
30
+ }
31
+
32
+ return self;
33
+ }
34
+
35
+ - (void)prepareView
36
+ {
37
+ _view = [[RNMBXModelLayer alloc] init];
38
+ _view.bridge = [RCTBridge currentBridge];
39
+ self.contentView = _view;
40
+ }
41
+
42
+ #pragma mark - RCTComponentViewProtocol
43
+
44
+ + (ComponentDescriptorProvider)componentDescriptorProvider
45
+ {
46
+ return concreteComponentDescriptorProvider<RNMBXModelLayerComponentDescriptor>();
47
+ }
48
+
49
+ - (void)updateProps:(const Props::Shared &)props oldProps:(const Props::Shared &)oldProps
50
+ {
51
+ const auto &newProps = static_cast<const RNMBXModelLayerProps &>(*props);
52
+ RNMBXSetCommonLayerProps(newProps, _view);
53
+
54
+ [super updateProps:props oldProps:oldProps];
55
+ }
56
+
57
+ - (void)prepareForRecycle
58
+ {
59
+ [super prepareForRecycle];
60
+ [self prepareView];
61
+ }
62
+
63
+ @end
64
+
65
+ Class<RCTComponentViewProtocol> RNMBXModelLayerCls(void)
66
+ {
67
+ return RNMBXModelLayerComponentView.class;
68
+ }
69
+
70
+ #endif // RCT_NEW_ARCH_ENABLED
@@ -0,0 +1,12 @@
1
+ #import <React/RCTBridgeModule.h>
2
+ #import <React/RCTViewManager.h>
3
+
4
+ @interface RCT_EXTERN_REMAP_MODULE(RNMBXModelLayer, RNMBXModelLayerViewManager, RCTViewManager)
5
+
6
+ // circle layer props
7
+ RCT_EXPORT_VIEW_PROPERTY(sourceLayerID, NSString)
8
+
9
+ // standard layer props
10
+ #include "CommonLayerProperties.H"
11
+
12
+ @end
@@ -0,0 +1,13 @@
1
+ @objc(RNMBXModelLayerViewManager)
2
+ class RNMBXModelLayerViewManager: RCTViewManager {
3
+ @objc
4
+ override static func requiresMainQueueSetup() -> Bool {
5
+ return true
6
+ }
7
+
8
+ override func view() -> UIView! {
9
+ let layer = RNMBXModelLayer()
10
+ layer.bridge = self.bridge
11
+ return layer
12
+ }
13
+ }
@@ -0,0 +1,63 @@
1
+ @_spi(Experimental) import MapboxMaps
2
+
3
+ @objc(RNMBXModels)
4
+ open class RNMBXModels : UIView, RNMBXMapComponent {
5
+ var modelIdToUrl: [String: String] = [:]
6
+
7
+ @objc(models)
8
+ public var models: NSDictionary {
9
+ set {
10
+ var newModels: [String: String] = [:]
11
+ newValue.forEach { (key, value) in
12
+ if let value = value as? NSDictionary, let key = key as? String {
13
+ if let uri = value["uri"] as? String {
14
+ newModels[key] = uri
15
+ } else if let url = value["url"] as? String {
16
+ newModels[key] = url
17
+ } else {
18
+ Logger.log(level: .error, message: "Unexpected value for model key: \(key) \(value) - no uri or url found")
19
+ }
20
+ }
21
+ }
22
+ self.modelIdToUrl = newModels
23
+ }
24
+ get {
25
+ Logger.error("RNMBXModels.models.getter not implemented")
26
+ return NSDictionary()
27
+ }
28
+ }
29
+
30
+ func setModels(_ models: NSDictionary) {
31
+
32
+ }
33
+
34
+ func addToMap(_ map: RNMBXMapView, style: Style) {
35
+ modelIdToUrl.forEach { (id, uri) in
36
+ logged("Models.addStyleModel") {
37
+ if let link = URL(string: uri), let scheme = link.scheme, let host = link.host,
38
+ let port = link.port {
39
+
40
+ // https://github.com/mapbox/mapbox-maps-ios/issues/2067
41
+ let uriWithoutQuery = "\(scheme)://\(host):\(port)\(link.path)"
42
+
43
+ try style.addStyleModel(modelId: id, modelUri: uriWithoutQuery)
44
+ } else {
45
+ try style.addStyleModel(modelId: id, modelUri: uri)
46
+ }
47
+ }
48
+ }
49
+ }
50
+
51
+ func removeFromMap(_ map: RNMBXMapView, reason: RemovalReason) -> Bool {
52
+ modelIdToUrl.forEach { (id, _) in
53
+ #if RNMBX_11
54
+ try? map._mapView?.mapboxMap.removeStyleModel(modelId: id)
55
+ #endif
56
+ }
57
+ return true
58
+ }
59
+
60
+ func waitForStyleLoad() -> Bool {
61
+ true
62
+ }
63
+ }
@@ -0,0 +1,17 @@
1
+ #ifdef RCT_NEW_ARCH_ENABLED
2
+
3
+ #import <UIKit/UIKit.h>
4
+
5
+ #import <React/RCTUIManager.h>
6
+ #import <React/RCTViewComponentView.h>
7
+
8
+ NS_ASSUME_NONNULL_BEGIN
9
+
10
+
11
+ @interface RNMBXModelsComponentView : RCTViewComponentView
12
+
13
+ @end
14
+
15
+ NS_ASSUME_NONNULL_END
16
+
17
+ #endif // RCT_NEW_ARCH_ENABLED
@@ -0,0 +1,67 @@
1
+ #ifdef RCT_NEW_ARCH_ENABLED
2
+
3
+ #import "RNMBXModelsComponentView.h"
4
+
5
+ #import <React/RCTConversions.h>
6
+ #import <React/RCTFabricComponentsPlugins.h>
7
+
8
+ #import <react/renderer/components/rnmapbox_maps_specs/ComponentDescriptors.h>
9
+ #import <react/renderer/components/rnmapbox_maps_specs/EventEmitters.h>
10
+ #import <react/renderer/components/rnmapbox_maps_specs/Props.h>
11
+ #import <react/renderer/components/rnmapbox_maps_specs/RCTComponentViewHelpers.h>
12
+
13
+ #import "rnmapbox_maps-Swift.pre.h"
14
+
15
+ #import "RCTFollyConvert.h"
16
+ #import "RNMBXFabricPropConvert.h"
17
+
18
+
19
+ // TODO: use generated RNMBXModelsEventEmitter, but need 0.73+ for dynamic support
20
+ using namespace facebook::react;
21
+
22
+ @implementation RNMBXModelsComponentView {
23
+ RNMBXModels *_view;
24
+ }
25
+
26
+ - (instancetype)initWithFrame:(CGRect)frame
27
+ {
28
+ if (self = [super initWithFrame:frame]) {
29
+ static const auto defaultProps = std::make_shared<const RNMBXModelsProps>();
30
+ _props = defaultProps;
31
+ _view = [[RNMBXModels alloc] init];
32
+ [self prepareView];
33
+
34
+ self.contentView = _view;
35
+ }
36
+
37
+ return self;
38
+ }
39
+
40
+ - (void)prepareView
41
+ {
42
+ }
43
+
44
+
45
+ #pragma mark - RCTComponentViewProtocol
46
+
47
+ + (ComponentDescriptorProvider)componentDescriptorProvider
48
+ {
49
+ return concreteComponentDescriptorProvider<RNMBXModelsComponentDescriptor>();
50
+ }
51
+
52
+ - (void)updateProps:(const Props::Shared &)props oldProps:(const Props::Shared &)oldProps
53
+ {
54
+ const auto &oldViewProps = static_cast<const RNMBXModelsProps &>(*oldProps);
55
+ const auto &newViewProps = static_cast<const RNMBXModelsProps &>(*props);
56
+
57
+ RNMBX_OPTIONAL_PROP_NSDictionary(models);
58
+ [super updateProps:props oldProps:oldProps];
59
+ }
60
+ @end
61
+
62
+ Class<RCTComponentViewProtocol> RNMBXModelsCls(void)
63
+ {
64
+ return RNMBXModelsComponentView.class;
65
+ }
66
+
67
+ #endif // RCT_NEW_ARCH_ENABLED
@@ -0,0 +1,9 @@
1
+ #import <React/RCTBridgeModule.h>
2
+ #import <React/RCTViewManager.h>
3
+
4
+ @interface RCT_EXTERN_REMAP_MODULE(RNMBXModels, RNMBXModelsManager, RCTViewManager)
5
+
6
+ RCT_EXPORT_VIEW_PROPERTY(models, NSDictionary)
7
+
8
+ @end
9
+
@@ -0,0 +1,13 @@
1
+ @objc(RNMBXModelsManager)
2
+ public class RNMBXModelsManager : RCTViewManager {
3
+ @objc
4
+ public override static func requiresMainQueueSetup() -> Bool {
5
+ return true
6
+ }
7
+
8
+ public override func view() -> UIView! {
9
+ let layer = RNMBXModels()
10
+ return layer
11
+ }
12
+ }
13
+