@rnmapbox/maps 10.1.41-rc.2 → 10.1.41
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/android/build.gradle +121 -4
- package/ios/RNMBX/RNMBXLocationModuleV11.swift +4 -4
- package/lib/commonjs/utils/index.js +12 -1
- package/lib/commonjs/utils/index.js.map +1 -1
- package/lib/module/utils/index.js +12 -1
- package/lib/module/utils/index.js.map +1 -1
- package/lib/typescript/src/utils/index.d.ts +3 -3
- package/lib/typescript/src/utils/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/utils/index.ts +16 -6
package/android/build.gradle
CHANGED
|
@@ -78,13 +78,130 @@ android {
|
|
|
78
78
|
}
|
|
79
79
|
java.srcDirs += 'src/main/rn-compat/rn75'
|
|
80
80
|
|
|
81
|
+
// Adapted from react-native-screens for consistency
|
|
82
|
+
// https://github.com/software-mansion/react-native-screens/blob/main/android/build.gradle
|
|
83
|
+
def resolveReactNativeDirectory = {
|
|
84
|
+
// 1. User-defined path
|
|
85
|
+
def userDefinedRnDirPath = safeExtGet("REACT_NATIVE_NODE_MODULES_DIR", null)
|
|
86
|
+
if (userDefinedRnDirPath != null) {
|
|
87
|
+
return file(userDefinedRnDirPath)
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// 2. Standard monorepo location
|
|
91
|
+
def standardRnDirFile = file("$rootDir/../node_modules/react-native/")
|
|
92
|
+
if (standardRnDirFile.exists()) {
|
|
93
|
+
return standardRnDirFile
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// 3. Legacy location
|
|
97
|
+
def legacyRnDirFile = file("$projectDir/../node_modules/react-native/")
|
|
98
|
+
if (legacyRnDirFile.exists()) {
|
|
99
|
+
return legacyRnDirFile
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// 4. Try Node resolution as fallback
|
|
103
|
+
try {
|
|
104
|
+
def maybeRnPackagePath = providers.exec {
|
|
105
|
+
workingDir(rootDir)
|
|
106
|
+
commandLine("node", "--print", "require.resolve('react-native/package.json')")
|
|
107
|
+
}.standardOutput.asText.get().trim()
|
|
108
|
+
|
|
109
|
+
if (maybeRnPackagePath != null && !maybeRnPackagePath.isBlank()) {
|
|
110
|
+
def maybeRnPackageFile = file(maybeRnPackagePath)
|
|
111
|
+
if (maybeRnPackageFile.exists()) {
|
|
112
|
+
return maybeRnPackageFile.parentFile
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
} catch (Exception e) {
|
|
116
|
+
logger.debug("@rnmapbox/maps: Node resolution for react-native failed: ${e.message}")
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
return null
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
def detectReactNativeVersion = {
|
|
123
|
+
def rnDir = resolveReactNativeDirectory()
|
|
124
|
+
if (rnDir == null) {
|
|
125
|
+
return null
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// Try gradle.properties first (like react-native-screens)
|
|
129
|
+
def gradlePropertiesFile = file("$rnDir/ReactAndroid/gradle.properties")
|
|
130
|
+
if (gradlePropertiesFile.exists()) {
|
|
131
|
+
try {
|
|
132
|
+
def reactProperties = new Properties()
|
|
133
|
+
gradlePropertiesFile.withInputStream { reactProperties.load(it) }
|
|
134
|
+
def version = reactProperties.getProperty("VERSION_NAME")
|
|
135
|
+
if (version != null) {
|
|
136
|
+
return version
|
|
137
|
+
}
|
|
138
|
+
} catch (Exception e) {
|
|
139
|
+
logger.debug("@rnmapbox/maps: Failed to read gradle.properties: ${e.message}")
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
// Fallback to package.json
|
|
144
|
+
def packageJsonFile = file("$rnDir/package.json")
|
|
145
|
+
if (packageJsonFile.exists()) {
|
|
146
|
+
try {
|
|
147
|
+
def packageJson = new groovy.json.JsonSlurper().parseText(packageJsonFile.text)
|
|
148
|
+
return packageJson.version
|
|
149
|
+
} catch (Exception e) {
|
|
150
|
+
logger.debug("@rnmapbox/maps: Failed to read package.json: ${e.message}")
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
return null
|
|
155
|
+
}
|
|
156
|
+
|
|
81
157
|
// Add lifecycle compatibility source sets
|
|
82
|
-
//
|
|
83
|
-
|
|
84
|
-
|
|
158
|
+
// Priority order:
|
|
159
|
+
// 1. User-defined override (RNMapboxMapsLifecycleCompat)
|
|
160
|
+
// 2. React Native version detection (0.78+ uses new API)
|
|
161
|
+
// 3. Conservative default (v25 for better compatibility)
|
|
162
|
+
|
|
163
|
+
def lifecycleCompat = safeExtGet("RNMapboxMapsLifecycleCompat", null)
|
|
164
|
+
|
|
165
|
+
if (lifecycleCompat == "v25" || lifecycleCompat == "old") {
|
|
166
|
+
logger.info("@rnmapbox/maps: Using v25 lifecycle compatibility (ViewTreeLifecycleOwner.set) - user override")
|
|
167
|
+
java.srcDirs += 'src/main/lifecycle-compat/v25'
|
|
168
|
+
} else if (lifecycleCompat == "v26" || lifecycleCompat == "new") {
|
|
169
|
+
logger.info("@rnmapbox/maps: Using v26 lifecycle compatibility (setViewTreeLifecycleOwner) - user override")
|
|
85
170
|
java.srcDirs += 'src/main/lifecycle-compat/v26'
|
|
86
171
|
} else {
|
|
87
|
-
|
|
172
|
+
// Auto-detect based on React Native version
|
|
173
|
+
def rnVersion = null
|
|
174
|
+
try {
|
|
175
|
+
rnVersion = detectReactNativeVersion()
|
|
176
|
+
} catch (Exception e) {
|
|
177
|
+
logger.debug("@rnmapbox/maps: Failed to detect React Native version: ${e.message}")
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
if (rnVersion != null) {
|
|
181
|
+
try {
|
|
182
|
+
def versionParts = rnVersion.split("\\.")
|
|
183
|
+
def majorVersion = versionParts[0].toInteger()
|
|
184
|
+
def minorVersion = versionParts[1].toInteger()
|
|
185
|
+
|
|
186
|
+
// React Native < 0.78 needs the old lifecycle API
|
|
187
|
+
if (majorVersion == 0 && minorVersion < 78) {
|
|
188
|
+
logger.info("@rnmapbox/maps: Detected React Native ${rnVersion} - using v25 lifecycle compatibility (old API)")
|
|
189
|
+
java.srcDirs += 'src/main/lifecycle-compat/v25'
|
|
190
|
+
} else {
|
|
191
|
+
logger.info("@rnmapbox/maps: Detected React Native ${rnVersion} - using v26 lifecycle compatibility (new API)")
|
|
192
|
+
java.srcDirs += 'src/main/lifecycle-compat/v26'
|
|
193
|
+
}
|
|
194
|
+
} catch (Exception e) {
|
|
195
|
+
logger.warn("@rnmapbox/maps: Failed to parse React Native version '${rnVersion}', defaulting to v26 compatibility")
|
|
196
|
+
java.srcDirs += 'src/main/lifecycle-compat/v26'
|
|
197
|
+
}
|
|
198
|
+
} else {
|
|
199
|
+
// Cannot detect RN version, default to new API (v26) for future compatibility
|
|
200
|
+
def targetSdk = safeExtGet("targetSdkVersion", 28)
|
|
201
|
+
logger.info("@rnmapbox/maps: Unable to detect React Native version, using v26 lifecycle compatibility (new API, targetSdk=${targetSdk})")
|
|
202
|
+
logger.info("@rnmapbox/maps: If you encounter issues with RN < 0.78, set RNMapboxMapsLifecycleCompat='v25' in your app's android/build.gradle ext block")
|
|
203
|
+
java.srcDirs += 'src/main/lifecycle-compat/v26'
|
|
204
|
+
}
|
|
88
205
|
}
|
|
89
206
|
|
|
90
207
|
if (safeExtGet("RNMapboxMapsUseV11", false)) {
|
|
@@ -11,8 +11,8 @@ class RNMBXLocation: NSObject {
|
|
|
11
11
|
|
|
12
12
|
var timestamp: Date? = nil
|
|
13
13
|
|
|
14
|
-
func toJSON() -> [String:Any
|
|
15
|
-
var coords: [String:Any
|
|
14
|
+
func toJSON() -> [String:Any] {
|
|
15
|
+
var coords: [String:Any] = [:]
|
|
16
16
|
|
|
17
17
|
if let location = location {
|
|
18
18
|
coords = coords.merging([
|
|
@@ -251,11 +251,11 @@ class RNMBXLocationModule: RCTEventEmitter {
|
|
|
251
251
|
throttler.cancel()
|
|
252
252
|
}
|
|
253
253
|
|
|
254
|
-
@objc func getLastKnownLocation() ->
|
|
254
|
+
@objc func getLastKnownLocation() -> [String: Any]? {
|
|
255
255
|
let last = RNMBXLocation()
|
|
256
256
|
last.heading = _locationProvider.latestHeading
|
|
257
257
|
last.location = _locationProvider.getLastObservedLocation()
|
|
258
|
-
return last
|
|
258
|
+
return last.toJSON()
|
|
259
259
|
}
|
|
260
260
|
|
|
261
261
|
@objc
|
|
@@ -68,7 +68,18 @@ function cloneReactChildrenWithProps(children, propsToAdd = {}) {
|
|
|
68
68
|
foundChildren = children;
|
|
69
69
|
}
|
|
70
70
|
const filteredChildren = foundChildren.filter(child => !!child); // filter out falsy children, since some can be null
|
|
71
|
-
return _react.default.Children.map(filteredChildren, child =>
|
|
71
|
+
return _react.default.Children.map(filteredChildren, child => {
|
|
72
|
+
if (! /*#__PURE__*/_react.default.isValidElement(child)) {
|
|
73
|
+
return child;
|
|
74
|
+
}
|
|
75
|
+
if (child.type === _react.default.Fragment) {
|
|
76
|
+
// If the child is a Fragment, return it without adding props
|
|
77
|
+
return child;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// Otherwise, clone and add props
|
|
81
|
+
return /*#__PURE__*/_react.default.cloneElement(child, propsToAdd);
|
|
82
|
+
});
|
|
72
83
|
}
|
|
73
84
|
function resolveImagePath(imageRef) {
|
|
74
85
|
const res = _reactNative.Image.resolveAssetSource(imageRef);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","e","__esModule","default","isAndroid","Platform","OS","existenceChange","cur","next","isFunction","fn","isNumber","num","Number","isNaN","isUndefined","obj","isString","str","isBoolean","bool","isPrimitive","value","runNativeMethod","turboModule","name","nativeRef","args","handle","findNodeHandle","Error","module","cloneReactChildrenWithProps","children","propsToAdd","foundChildren","Array","isArray","filteredChildren","filter","child","React","Children","map","cloneElement","resolveImagePath","imageRef","res","Image","resolveAssetSource","uri","toJSONString","json","JSON","stringify"],"sourceRoot":"../../../src","sources":["utils/index.ts"],"mappings":";;;;;;;;;;;;;;;;;AACA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAMsB,SAAAD,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AARtB;;AAUO,SAASG,SAASA,CAAA,EAAY;EACnC,OAAOC,qBAAQ,CAACC,EAAE,KAAK,SAAS;AAClC;AAEO,SAASC,eAAeA,CAACC,GAAY,EAAEC,IAAa,EAAW;EACpE,IAAI,CAACD,GAAG,IAAI,CAACC,IAAI,EAAE;IACjB,OAAO,KAAK;EACd;EACA,OAAQ,CAACD,GAAG,IAAIC,IAAI,IAAMD,GAAG,IAAI,CAACC,IAAK;AACzC;AAEO,SAASC,UAAUA,CAACC,EAAW,EAAiB;EACrD,OAAO,OAAOA,EAAE,KAAK,UAAU;AACjC;AAEO,SAASC,QAAQA,CAACC,GAAY,EAAiB;EACpD,OAAO,OAAOA,GAAG,KAAK,QAAQ,IAAI,CAACC,MAAM,CAACC,KAAK,CAACF,GAAG,CAAC;AACtD;AAEO,SAASG,WAAWA,CAACC,GAAY,EAAoB;EAC1D,OAAO,OAAOA,GAAG,KAAK,WAAW;AACnC;AAEO,SAASC,QAAQA,CAACC,GAAY,EAAiB;EACpD,OAAO,OAAOA,GAAG,KAAK,QAAQ;AAChC;AAEO,SAASC,SAASA,CAACC,IAAa,EAAmB;EACxD,OAAO,OAAOA,IAAI,KAAK,SAAS;AAClC;AAEO,SAASC,WAAWA,CACzBC,KAAc,EACsB;EACpC,OAAOL,QAAQ,CAACK,KAAK,CAAC,IAAIX,QAAQ,CAACW,KAAK,CAAC,IAAIH,SAAS,CAACG,KAAK,CAAC;AAC/D;AAUO,SAASC,eAAeA,CAC7BC,WAAwB,EACxBC,IAAY,EACZC,SAAc,EACdC,IAAiB,EACI;EACrB,MAAMC,MAAM,GAAG,IAAAC,2BAAc,EAACH,SAAS,CAAC;EACxC,IAAI,CAACE,MAAM,EAAE;IACX,MAAM,IAAIE,KAAK,CAAC,wCAAwCC,MAAM,IAAIN,IAAI,EAAE,CAAC;EAC3E;;EAEA;EACA;EACA,OAAOD,WAAW,CAACC,IAAI,CAAC,CAACG,MAAM,EAAE,GAAGD,IAAI,CAAC;AAC3C;AAEO,SAASK,2BAA2BA,CACzCC,
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","e","__esModule","default","isAndroid","Platform","OS","existenceChange","cur","next","isFunction","fn","isNumber","num","Number","isNaN","isUndefined","obj","isString","str","isBoolean","bool","isPrimitive","value","runNativeMethod","turboModule","name","nativeRef","args","handle","findNodeHandle","Error","module","cloneReactChildrenWithProps","children","propsToAdd","foundChildren","Array","isArray","filteredChildren","filter","child","React","Children","map","isValidElement","type","Fragment","cloneElement","resolveImagePath","imageRef","res","Image","resolveAssetSource","uri","toJSONString","json","JSON","stringify"],"sourceRoot":"../../../src","sources":["utils/index.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -51,7 +51,18 @@ export function cloneReactChildrenWithProps(children, propsToAdd = {}) {
|
|
|
51
51
|
foundChildren = children;
|
|
52
52
|
}
|
|
53
53
|
const filteredChildren = foundChildren.filter(child => !!child); // filter out falsy children, since some can be null
|
|
54
|
-
return React.Children.map(filteredChildren, child =>
|
|
54
|
+
return React.Children.map(filteredChildren, child => {
|
|
55
|
+
if (! /*#__PURE__*/React.isValidElement(child)) {
|
|
56
|
+
return child;
|
|
57
|
+
}
|
|
58
|
+
if (child.type === React.Fragment) {
|
|
59
|
+
// If the child is a Fragment, return it without adding props
|
|
60
|
+
return child;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// Otherwise, clone and add props
|
|
64
|
+
return /*#__PURE__*/React.cloneElement(child, propsToAdd);
|
|
65
|
+
});
|
|
55
66
|
}
|
|
56
67
|
export function resolveImagePath(imageRef) {
|
|
57
68
|
const res = Image.resolveAssetSource(imageRef);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","findNodeHandle","Platform","Image","isAndroid","OS","existenceChange","cur","next","isFunction","fn","isNumber","num","Number","isNaN","isUndefined","obj","isString","str","isBoolean","bool","isPrimitive","value","runNativeMethod","turboModule","name","nativeRef","args","handle","Error","module","cloneReactChildrenWithProps","children","propsToAdd","foundChildren","Array","isArray","filteredChildren","filter","child","Children","map","cloneElement","resolveImagePath","imageRef","res","resolveAssetSource","uri","toJSONString","json","JSON","stringify"],"sourceRoot":"../../../src","sources":["utils/index.ts"],"mappings":";;AAAA;AACA,OAAOA,KAAK,
|
|
1
|
+
{"version":3,"names":["React","findNodeHandle","Platform","Image","isAndroid","OS","existenceChange","cur","next","isFunction","fn","isNumber","num","Number","isNaN","isUndefined","obj","isString","str","isBoolean","bool","isPrimitive","value","runNativeMethod","turboModule","name","nativeRef","args","handle","Error","module","cloneReactChildrenWithProps","children","propsToAdd","foundChildren","Array","isArray","filteredChildren","filter","child","Children","map","isValidElement","type","Fragment","cloneElement","resolveImagePath","imageRef","res","resolveAssetSource","uri","toJSONString","json","JSON","stringify"],"sourceRoot":"../../../src","sources":["utils/index.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { ReactNode } from 'react';
|
|
2
2
|
import { ImageSourcePropType, TurboModule } from 'react-native';
|
|
3
3
|
export declare function isAndroid(): boolean;
|
|
4
4
|
export declare function existenceChange(cur: boolean, next: boolean): boolean;
|
|
@@ -12,9 +12,9 @@ export type NativeArg = string | number | boolean | null | {
|
|
|
12
12
|
[k: string]: NativeArg;
|
|
13
13
|
} | NativeArg[];
|
|
14
14
|
export declare function runNativeMethod<ReturnType = NativeArg>(turboModule: TurboModule, name: string, nativeRef: any, args: NativeArg[]): Promise<ReturnType>;
|
|
15
|
-
export declare function cloneReactChildrenWithProps(children:
|
|
15
|
+
export declare function cloneReactChildrenWithProps(children: ReactNode, propsToAdd?: {
|
|
16
16
|
[key: string]: string;
|
|
17
|
-
}): any;
|
|
17
|
+
}): (string | number | bigint | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined>)[] | null;
|
|
18
18
|
export declare function resolveImagePath(imageRef: ImageSourcePropType): string;
|
|
19
19
|
export declare function toJSONString(json?: any): string;
|
|
20
20
|
export type OrnamentPositonProp = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAIL,mBAAmB,EACnB,WAAW,EACZ,MAAM,cAAc,CAAC;AAEtB,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAKpE;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,OAAO,GAAG,EAAE,IAAI,OAAO,CAErD;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,MAAM,CAEpD;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,SAAS,CAE1D;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,MAAM,CAEpD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,OAAO,CAExD;AAED,wBAAgB,WAAW,CACzB,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,MAAM,GAAG,MAAM,GAAG,OAAO,CAEpC;AAED,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GAC1B,SAAS,EAAE,CAAC;AAEhB,wBAAgB,eAAe,CAAC,UAAU,GAAG,SAAS,EACpD,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,GAAG,EACd,IAAI,EAAE,SAAS,EAAE,GAChB,OAAO,CAAC,UAAU,CAAC,CASrB;AAED,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,SAAS,EACnB,UAAU,GAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAO,sUA4B3C;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,MAAM,CAGtE;AAED,wBAAgB,YAAY,CAAC,IAAI,GAAE,GAAQ,UAE1C;AAED,MAAM,MAAM,mBAAmB,GAC3B;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC7B;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC"}
|
package/package.json
CHANGED
package/src/utils/index.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import React from 'react';
|
|
2
|
+
import React, { ReactNode } from 'react';
|
|
3
3
|
import {
|
|
4
4
|
findNodeHandle,
|
|
5
5
|
Platform,
|
|
@@ -70,14 +70,14 @@ export function runNativeMethod<ReturnType = NativeArg>(
|
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
export function cloneReactChildrenWithProps(
|
|
73
|
-
children:
|
|
73
|
+
children: ReactNode,
|
|
74
74
|
propsToAdd: { [key: string]: string } = {},
|
|
75
75
|
) {
|
|
76
76
|
if (!children) {
|
|
77
77
|
return null;
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
-
let foundChildren = null;
|
|
80
|
+
let foundChildren: typeof children[] | null = null;
|
|
81
81
|
|
|
82
82
|
if (!Array.isArray(children)) {
|
|
83
83
|
foundChildren = [children];
|
|
@@ -86,9 +86,19 @@ export function cloneReactChildrenWithProps(
|
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
const filteredChildren = foundChildren.filter((child) => !!child); // filter out falsy children, since some can be null
|
|
89
|
-
return React.Children.map(filteredChildren, (child) =>
|
|
90
|
-
React.
|
|
91
|
-
|
|
89
|
+
return React.Children.map(filteredChildren, (child) => {
|
|
90
|
+
if (!React.isValidElement(child)) {
|
|
91
|
+
return child;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
if (child.type === React.Fragment) {
|
|
95
|
+
// If the child is a Fragment, return it without adding props
|
|
96
|
+
return child;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// Otherwise, clone and add props
|
|
100
|
+
return React.cloneElement(child, propsToAdd);
|
|
101
|
+
});
|
|
92
102
|
}
|
|
93
103
|
|
|
94
104
|
export function resolveImagePath(imageRef: ImageSourcePropType): string {
|