@react-navigation/native 8.0.0-alpha.1 → 8.0.0-alpha.3

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 (125) hide show
  1. package/android/build/.transforms/586a73aab4c351d3f13dc604ca6964e8/transformed/classes/classes_dex/classes.dex +0 -0
  2. package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/facebook/fbreact/specs/NativeMaterialSymbolModuleSpec.dex +0 -0
  3. package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/facebook/react/viewmanagers/ReactNavigationMaterialSymbolViewManagerDelegate.dex +0 -0
  4. package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/facebook/react/viewmanagers/ReactNavigationMaterialSymbolViewManagerInterface.dex +0 -0
  5. package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/org/reactnavigation/MaterialSymbolModule$Companion.dex +0 -0
  6. package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/org/reactnavigation/MaterialSymbolModule$getImageSource$1.dex +0 -0
  7. package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/org/reactnavigation/MaterialSymbolModule.dex +0 -0
  8. package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/org/reactnavigation/MaterialSymbolTypeface.dex +0 -0
  9. package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/org/reactnavigation/MaterialSymbolView.dex +0 -0
  10. package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/org/reactnavigation/ReactNavigationPackage.dex +0 -0
  11. package/android/build/generated/source/codegen/java/com/facebook/fbreact/specs/NativeMaterialSymbolModuleSpec.java +1 -1
  12. package/android/build/generated/source/codegen/java/com/facebook/react/viewmanagers/ReactNavigationMaterialSymbolViewManagerDelegate.java +3 -0
  13. package/android/build/generated/source/codegen/java/com/facebook/react/viewmanagers/ReactNavigationMaterialSymbolViewManagerInterface.java +1 -0
  14. package/android/build/generated/source/codegen/jni/ReactNavigationSpec-generated.cpp +2 -2
  15. package/android/build/generated/source/codegen/jni/react/renderer/components/ReactNavigationSpec/Props.cpp +5 -0
  16. package/android/build/generated/source/codegen/jni/react/renderer/components/ReactNavigationSpec/Props.h +58 -0
  17. package/android/build/generated/source/codegen/jni/react/renderer/components/ReactNavigationSpec/ReactNavigationSpecJSI-generated.cpp +4 -3
  18. package/android/build/generated/source/codegen/jni/react/renderer/components/ReactNavigationSpec/ReactNavigationSpecJSI.h +5 -5
  19. package/android/build/generated/source/codegen/schema.json +1 -1
  20. package/android/build/intermediates/{react-navigation/fonts/MaterialSymbolsOutlined.ttf → assets/debug/mergeDebugAssets/fonts/MaterialSymbolsOutlined_400.ttf} +0 -0
  21. package/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar +0 -0
  22. package/android/build/intermediates/incremental/mergeDebugAssets/merger.xml +1 -1
  23. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/facebook/fbreact/specs/NativeMaterialSymbolModuleSpec.class +0 -0
  24. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/facebook/react/viewmanagers/ReactNavigationMaterialSymbolViewManagerDelegate.class +0 -0
  25. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/facebook/react/viewmanagers/ReactNavigationMaterialSymbolViewManagerInterface.class +0 -0
  26. package/android/build/intermediates/{assets/debug/mergeDebugAssets/fonts/MaterialSymbolsOutlined.ttf → react-navigation/fonts/MaterialSymbolsOutlined_400.ttf} +0 -0
  27. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/facebook/fbreact/specs/NativeMaterialSymbolModuleSpec.class +0 -0
  28. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/facebook/react/viewmanagers/ReactNavigationMaterialSymbolViewManagerDelegate.class +0 -0
  29. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/facebook/react/viewmanagers/ReactNavigationMaterialSymbolViewManagerInterface.class +0 -0
  30. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/org/reactnavigation/MaterialSymbolModule$Companion.class +0 -0
  31. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/org/reactnavigation/{MaterialSymbolModule$getImageSource$future$1$1$1.class → MaterialSymbolModule$getImageSource$1.class} +0 -0
  32. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/org/reactnavigation/MaterialSymbolModule.class +0 -0
  33. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/org/reactnavigation/MaterialSymbolTypeface.class +0 -0
  34. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/org/reactnavigation/MaterialSymbolView.class +0 -0
  35. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/org/reactnavigation/ReactNavigationPackage.class +0 -0
  36. package/android/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar +0 -0
  37. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab +0 -0
  38. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at +0 -0
  39. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab +0 -0
  40. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at +0 -0
  41. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab +0 -0
  42. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at +0 -0
  43. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab +0 -0
  44. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream +0 -0
  45. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream.len +0 -0
  46. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.len +0 -0
  47. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.values.at +0 -0
  48. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i +0 -0
  49. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab +0 -0
  50. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream +0 -0
  51. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len +0 -0
  52. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at +0 -0
  53. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i +0 -0
  54. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab +0 -0
  55. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at +0 -0
  56. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab +0 -0
  57. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at +0 -0
  58. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab +0 -0
  59. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream +0 -0
  60. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len +0 -0
  61. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i +0 -0
  62. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab +0 -0
  63. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at +0 -0
  64. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab +1 -1
  65. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab +0 -0
  66. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at +0 -0
  67. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab +0 -0
  68. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream +0 -0
  69. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len +0 -0
  70. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len +0 -0
  71. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at +0 -0
  72. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i +0 -0
  73. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab +0 -0
  74. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream +0 -0
  75. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len +0 -0
  76. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len +0 -0
  77. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at +0 -0
  78. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i +0 -0
  79. package/android/build/kotlin/compileDebugKotlin/cacheable/last-build.bin +0 -0
  80. package/android/build/kotlin/compileDebugKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin +0 -0
  81. package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
  82. package/android/build/tmp/kotlin-classes/debug/org/reactnavigation/MaterialSymbolModule$Companion.class +0 -0
  83. package/android/build/tmp/kotlin-classes/debug/org/reactnavigation/{MaterialSymbolModule$getImageSource$future$1$1$1.class → MaterialSymbolModule$getImageSource$1.class} +0 -0
  84. package/android/build/tmp/kotlin-classes/debug/org/reactnavigation/MaterialSymbolModule.class +0 -0
  85. package/android/build/tmp/kotlin-classes/debug/org/reactnavigation/MaterialSymbolTypeface.class +0 -0
  86. package/android/build/tmp/kotlin-classes/debug/org/reactnavigation/MaterialSymbolView.class +0 -0
  87. package/android/build/tmp/kotlin-classes/debug/org/reactnavigation/ReactNavigationPackage.class +0 -0
  88. package/android/build.gradle +16 -9
  89. package/android/src/main/java/org/reactnavigation/MaterialSymbolModule.kt +33 -54
  90. package/android/src/main/java/org/reactnavigation/MaterialSymbolTypeface.kt +11 -7
  91. package/android/src/main/java/org/reactnavigation/MaterialSymbolView.kt +15 -3
  92. package/android/src/main/java/org/reactnavigation/ReactNavigationPackage.kt +11 -14
  93. package/assets/fonts/{MaterialSymbolsOutlined.ttf → MaterialSymbolsOutlined_400.ttf} +0 -0
  94. package/lib/module/native/MaterialSymbol.android.js +10 -6
  95. package/lib/module/native/MaterialSymbol.android.js.map +1 -1
  96. package/lib/module/native/MaterialSymbolData.js +1 -3
  97. package/lib/module/native/MaterialSymbolData.js.map +1 -1
  98. package/lib/module/native/MaterialSymbolViewNativeComponent.ts +4 -0
  99. package/lib/module/native/NativeMaterialSymbolModule.js.map +1 -1
  100. package/lib/typescript/src/native/MaterialSymbol.android.d.ts +2 -2
  101. package/lib/typescript/src/native/MaterialSymbol.android.d.ts.map +1 -1
  102. package/lib/typescript/src/native/MaterialSymbolData.d.ts +1 -3
  103. package/lib/typescript/src/native/MaterialSymbolData.d.ts.map +1 -1
  104. package/lib/typescript/src/native/MaterialSymbolViewNativeComponent.d.ts +1 -0
  105. package/lib/typescript/src/native/MaterialSymbolViewNativeComponent.d.ts.map +1 -1
  106. package/lib/typescript/src/native/NativeMaterialSymbolModule.d.ts +1 -1
  107. package/lib/typescript/src/native/NativeMaterialSymbolModule.d.ts.map +1 -1
  108. package/lib/typescript/src/native/types.d.ts +0 -8
  109. package/lib/typescript/src/native/types.d.ts.map +1 -1
  110. package/package.json +11 -7
  111. package/src/native/MaterialSymbol.android.tsx +13 -5
  112. package/src/native/MaterialSymbolData.tsx +1 -3
  113. package/src/native/MaterialSymbolViewNativeComponent.ts +4 -0
  114. package/src/native/NativeMaterialSymbolModule.ts +1 -0
  115. package/src/native/types.tsx +0 -8
  116. package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/org/reactnavigation/MaterialSymbolModule$getImageSource$future$1$1$1.dex +0 -0
  117. package/android/build/intermediates/assets/debug/mergeDebugAssets/fonts/MaterialSymbolsRounded.ttf +0 -0
  118. package/android/build/intermediates/assets/debug/mergeDebugAssets/fonts/MaterialSymbolsSharp.ttf +0 -0
  119. package/android/build/intermediates/react-navigation/fonts/MaterialSymbolsRounded.ttf +0 -0
  120. package/android/build/intermediates/react-navigation/fonts/MaterialSymbolsSharp.ttf +0 -0
  121. package/android/gradle.properties +0 -5
  122. package/assets/fonts/MaterialSymbolsRounded.codepoints +0 -4102
  123. package/assets/fonts/MaterialSymbolsRounded.ttf +0 -0
  124. package/assets/fonts/MaterialSymbolsSharp.codepoints +0 -4102
  125. package/assets/fonts/MaterialSymbolsSharp.ttf +0 -0
@@ -34,5 +34,5 @@ public abstract class NativeMaterialSymbolModuleSpec extends ReactContextBaseJav
34
34
 
35
35
  @ReactMethod(isBlockingSynchronousMethod = true)
36
36
  @DoNotStrip
37
- public abstract String getImageSource(String name, String variant, double size, ReadableMap color, String hash);
37
+ public abstract String getImageSource(String name, String variant, double size, double weight, ReadableMap color, String hash);
38
38
  }
@@ -29,6 +29,9 @@ public class ReactNavigationMaterialSymbolViewManagerDelegate<T extends View, U
29
29
  case "variant":
30
30
  mViewManager.setVariant(view, value == null ? null : (String) value);
31
31
  break;
32
+ case "weight":
33
+ mViewManager.setWeight(view, value == null ? 400 : ((Double) value).intValue());
34
+ break;
32
35
  case "size":
33
36
  mViewManager.setSize(view, value == null ? Float.NaN : ((Double) value).floatValue());
34
37
  break;
@@ -16,6 +16,7 @@ import com.facebook.react.uimanager.ViewManagerWithGeneratedInterface;
16
16
  public interface ReactNavigationMaterialSymbolViewManagerInterface<T extends View> extends ViewManagerWithGeneratedInterface {
17
17
  void setName(T view, @Nullable String value);
18
18
  void setVariant(T view, @Nullable String value);
19
+ void setWeight(T view, @Nullable Integer value);
19
20
  void setSize(T view, float value);
20
21
  void setColor(T view, @Nullable Integer value);
21
22
  }
@@ -14,12 +14,12 @@ namespace facebook::react {
14
14
 
15
15
  static facebook::jsi::Value __hostFunction_NativeMaterialSymbolModuleSpecJSI_getImageSource(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
16
16
  static jmethodID cachedMethodId = nullptr;
17
- return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, StringKind, "getImageSource", "(Ljava/lang/String;Ljava/lang/String;DLcom/facebook/react/bridge/ReadableMap;Ljava/lang/String;)Ljava/lang/String;", args, count, cachedMethodId);
17
+ return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, StringKind, "getImageSource", "(Ljava/lang/String;Ljava/lang/String;DDLcom/facebook/react/bridge/ReadableMap;Ljava/lang/String;)Ljava/lang/String;", args, count, cachedMethodId);
18
18
  }
19
19
 
20
20
  NativeMaterialSymbolModuleSpecJSI::NativeMaterialSymbolModuleSpecJSI(const JavaTurboModule::InitParams &params)
21
21
  : JavaTurboModule(params) {
22
- methodMap_["getImageSource"] = MethodMetadata {5, __hostFunction_NativeMaterialSymbolModuleSpecJSI_getImageSource};
22
+ methodMap_["getImageSource"] = MethodMetadata {6, __hostFunction_NativeMaterialSymbolModuleSpecJSI_getImageSource};
23
23
  }
24
24
 
25
25
  std::shared_ptr<TurboModule> ReactNavigationSpec_ModuleProvider(const std::string &moduleName, const JavaTurboModule::InitParams &params) {
@@ -21,6 +21,7 @@ ReactNavigationMaterialSymbolViewProps::ReactNavigationMaterialSymbolViewProps(
21
21
 
22
22
  name(convertRawProp(context, rawProps, "name", sourceProps.name, {})),
23
23
  variant(convertRawProp(context, rawProps, "variant", sourceProps.variant, {})),
24
+ weight(convertRawProp(context, rawProps, "weight", sourceProps.weight, {ReactNavigationMaterialSymbolViewWeight::Weight400})),
24
25
  size(convertRawProp(context, rawProps, "size", sourceProps.size, {0.0})),
25
26
  color(convertRawProp(context, rawProps, "color", sourceProps.color, {})) {}
26
27
 
@@ -48,6 +49,10 @@ folly::dynamic ReactNavigationMaterialSymbolViewProps::getDiffProps(
48
49
  result["variant"] = variant;
49
50
  }
50
51
 
52
+ if (weight != oldProps->weight) {
53
+ result["weight"] = toDynamic(weight);
54
+ }
55
+
51
56
  if ((size != oldProps->size) && !(std::isnan(size) && std::isnan(oldProps->size))) {
52
57
  result["size"] = size;
53
58
  }
@@ -15,6 +15,63 @@
15
15
 
16
16
  namespace facebook::react {
17
17
 
18
+ enum class ReactNavigationMaterialSymbolViewWeight { Weight100 = 100, Weight200 = 200, Weight300 = 300, Weight400 = 400, Weight500 = 500, Weight600 = 600, Weight700 = 700 };
19
+
20
+ static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ReactNavigationMaterialSymbolViewWeight &result) {
21
+ assert(value.hasType<int>());
22
+ auto integerValue = (int)value;
23
+ switch (integerValue) {
24
+ case 100:
25
+ result = ReactNavigationMaterialSymbolViewWeight::Weight100;
26
+ return;
27
+ case 200:
28
+ result = ReactNavigationMaterialSymbolViewWeight::Weight200;
29
+ return;
30
+ case 300:
31
+ result = ReactNavigationMaterialSymbolViewWeight::Weight300;
32
+ return;
33
+ case 400:
34
+ result = ReactNavigationMaterialSymbolViewWeight::Weight400;
35
+ return;
36
+ case 500:
37
+ result = ReactNavigationMaterialSymbolViewWeight::Weight500;
38
+ return;
39
+ case 600:
40
+ result = ReactNavigationMaterialSymbolViewWeight::Weight600;
41
+ return;
42
+ case 700:
43
+ result = ReactNavigationMaterialSymbolViewWeight::Weight700;
44
+ return;
45
+ }
46
+ abort();
47
+ }
48
+
49
+ static inline std::string toString(const ReactNavigationMaterialSymbolViewWeight &value) {
50
+ switch (value) {
51
+ case ReactNavigationMaterialSymbolViewWeight::Weight100: return "100";
52
+ case ReactNavigationMaterialSymbolViewWeight::Weight200: return "200";
53
+ case ReactNavigationMaterialSymbolViewWeight::Weight300: return "300";
54
+ case ReactNavigationMaterialSymbolViewWeight::Weight400: return "400";
55
+ case ReactNavigationMaterialSymbolViewWeight::Weight500: return "500";
56
+ case ReactNavigationMaterialSymbolViewWeight::Weight600: return "600";
57
+ case ReactNavigationMaterialSymbolViewWeight::Weight700: return "700";
58
+ }
59
+ }
60
+
61
+ #ifdef RN_SERIALIZABLE_STATE
62
+ static inline folly::dynamic toDynamic(const ReactNavigationMaterialSymbolViewWeight &value) {
63
+ switch (value) {
64
+ case ReactNavigationMaterialSymbolViewWeight::Weight100: return 100;
65
+ case ReactNavigationMaterialSymbolViewWeight::Weight200: return 200;
66
+ case ReactNavigationMaterialSymbolViewWeight::Weight300: return 300;
67
+ case ReactNavigationMaterialSymbolViewWeight::Weight400: return 400;
68
+ case ReactNavigationMaterialSymbolViewWeight::Weight500: return 500;
69
+ case ReactNavigationMaterialSymbolViewWeight::Weight600: return 600;
70
+ case ReactNavigationMaterialSymbolViewWeight::Weight700: return 700;
71
+ }
72
+ }
73
+ #endif
74
+
18
75
  class ReactNavigationMaterialSymbolViewProps final : public ViewProps {
19
76
  public:
20
77
  ReactNavigationMaterialSymbolViewProps() = default;
@@ -24,6 +81,7 @@ class ReactNavigationMaterialSymbolViewProps final : public ViewProps {
24
81
 
25
82
  std::string name{};
26
83
  std::string variant{};
84
+ ReactNavigationMaterialSymbolViewWeight weight{ReactNavigationMaterialSymbolViewWeight::Weight400};
27
85
  Float size{0.0};
28
86
  SharedColor color{};
29
87
 
@@ -17,14 +17,15 @@ static jsi::Value __hostFunction_NativeMaterialSymbolModuleCxxSpecJSI_getImageSo
17
17
  count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt),
18
18
  count <= 1 ? throw jsi::JSError(rt, "Expected argument in position 1 to be passed") : args[1].asString(rt),
19
19
  count <= 2 ? throw jsi::JSError(rt, "Expected argument in position 2 to be passed") : args[2].asNumber(),
20
- count <= 3 ? throw jsi::JSError(rt, "Expected argument in position 3 to be passed") : args[3].asObject(rt),
21
- count <= 4 ? throw jsi::JSError(rt, "Expected argument in position 4 to be passed") : args[4].asString(rt)
20
+ count <= 3 ? throw jsi::JSError(rt, "Expected argument in position 3 to be passed") : args[3].asNumber(),
21
+ count <= 4 ? throw jsi::JSError(rt, "Expected argument in position 4 to be passed") : args[4].asObject(rt),
22
+ count <= 5 ? throw jsi::JSError(rt, "Expected argument in position 5 to be passed") : args[5].asString(rt)
22
23
  );
23
24
  }
24
25
 
25
26
  NativeMaterialSymbolModuleCxxSpecJSI::NativeMaterialSymbolModuleCxxSpecJSI(std::shared_ptr<CallInvoker> jsInvoker)
26
27
  : TurboModule("ReactNavigationMaterialSymbolModule", jsInvoker) {
27
- methodMap_["getImageSource"] = MethodMetadata {5, __hostFunction_NativeMaterialSymbolModuleCxxSpecJSI_getImageSource};
28
+ methodMap_["getImageSource"] = MethodMetadata {6, __hostFunction_NativeMaterialSymbolModuleCxxSpecJSI_getImageSource};
28
29
  }
29
30
 
30
31
 
@@ -20,7 +20,7 @@ protected:
20
20
  NativeMaterialSymbolModuleCxxSpecJSI(std::shared_ptr<CallInvoker> jsInvoker);
21
21
 
22
22
  public:
23
- virtual jsi::String getImageSource(jsi::Runtime &rt, jsi::String name, jsi::String variant, double size, jsi::Object color, jsi::String hash) = 0;
23
+ virtual jsi::String getImageSource(jsi::Runtime &rt, jsi::String name, jsi::String variant, double size, double weight, jsi::Object color, jsi::String hash) = 0;
24
24
 
25
25
  };
26
26
 
@@ -51,13 +51,13 @@ private:
51
51
 
52
52
  }
53
53
 
54
- jsi::String getImageSource(jsi::Runtime &rt, jsi::String name, jsi::String variant, double size, jsi::Object color, jsi::String hash) override {
54
+ jsi::String getImageSource(jsi::Runtime &rt, jsi::String name, jsi::String variant, double size, double weight, jsi::Object color, jsi::String hash) override {
55
55
  static_assert(
56
- bridging::getParameterCount(&T::getImageSource) == 6,
57
- "Expected getImageSource(...) to have 6 parameters");
56
+ bridging::getParameterCount(&T::getImageSource) == 7,
57
+ "Expected getImageSource(...) to have 7 parameters");
58
58
 
59
59
  return bridging::callFromJs<jsi::String>(
60
- rt, &T::getImageSource, jsInvoker_, instance_, std::move(name), std::move(variant), std::move(size), std::move(color), std::move(hash));
60
+ rt, &T::getImageSource, jsInvoker_, instance_, std::move(name), std::move(variant), std::move(size), std::move(weight), std::move(color), std::move(hash));
61
61
  }
62
62
 
63
63
  private:
@@ -1 +1 @@
1
- {"libraryName":"","modules":{"ReactNavigationMaterialSymbolView":{"type":"Component","components":{"ReactNavigationMaterialSymbolView":{"extendsProps":[{"type":"ReactNativeBuiltInType","knownTypeName":"ReactNativeCoreViewProps"}],"events":[],"props":[{"name":"name","optional":false,"typeAnnotation":{"type":"StringTypeAnnotation","default":null}},{"name":"variant","optional":false,"typeAnnotation":{"type":"StringTypeAnnotation","default":null}},{"name":"size","optional":false,"typeAnnotation":{"type":"FloatTypeAnnotation","default":0}},{"name":"color","optional":false,"typeAnnotation":{"type":"ReservedPropTypeAnnotation","name":"ColorPrimitive"}}],"commands":[]}}},"NativeMaterialSymbolModule":{"type":"NativeModule","aliasMap":{},"enumMap":{},"spec":{"eventEmitters":[],"methods":[{"name":"getImageSource","optional":false,"typeAnnotation":{"type":"FunctionTypeAnnotation","returnTypeAnnotation":{"type":"StringTypeAnnotation"},"params":[{"name":"name","optional":false,"typeAnnotation":{"type":"StringTypeAnnotation"}},{"name":"variant","optional":false,"typeAnnotation":{"type":"StringTypeAnnotation"}},{"name":"size","optional":false,"typeAnnotation":{"type":"NumberTypeAnnotation"}},{"name":"color","optional":false,"typeAnnotation":{"type":"GenericObjectTypeAnnotation"}},{"name":"hash","optional":false,"typeAnnotation":{"type":"StringTypeAnnotation"}}]}}]},"moduleName":"ReactNavigationMaterialSymbolModule"},"ReactNavigationSFSymbolView":{"type":"Component","components":{"ReactNavigationSFSymbolView":{"extendsProps":[{"type":"ReactNativeBuiltInType","knownTypeName":"ReactNativeCoreViewProps"}],"events":[],"props":[{"name":"name","optional":false,"typeAnnotation":{"type":"StringTypeAnnotation","default":null}},{"name":"size","optional":false,"typeAnnotation":{"type":"FloatTypeAnnotation","default":0}},{"name":"color","optional":false,"typeAnnotation":{"type":"ReservedPropTypeAnnotation","name":"ColorPrimitive"}}],"commands":[]}}}}}
1
+ {"libraryName":"","modules":{"ReactNavigationMaterialSymbolView":{"type":"Component","components":{"ReactNavigationMaterialSymbolView":{"extendsProps":[{"type":"ReactNativeBuiltInType","knownTypeName":"ReactNativeCoreViewProps"}],"events":[],"props":[{"name":"name","optional":false,"typeAnnotation":{"type":"StringTypeAnnotation","default":null}},{"name":"variant","optional":false,"typeAnnotation":{"type":"StringTypeAnnotation","default":null}},{"name":"weight","optional":true,"typeAnnotation":{"type":"Int32EnumTypeAnnotation","default":400,"options":[100,200,300,400,500,600,700]}},{"name":"size","optional":false,"typeAnnotation":{"type":"FloatTypeAnnotation","default":0}},{"name":"color","optional":false,"typeAnnotation":{"type":"ReservedPropTypeAnnotation","name":"ColorPrimitive"}}],"commands":[]}}},"NativeMaterialSymbolModule":{"type":"NativeModule","aliasMap":{},"enumMap":{},"spec":{"eventEmitters":[],"methods":[{"name":"getImageSource","optional":false,"typeAnnotation":{"type":"FunctionTypeAnnotation","returnTypeAnnotation":{"type":"StringTypeAnnotation"},"params":[{"name":"name","optional":false,"typeAnnotation":{"type":"StringTypeAnnotation"}},{"name":"variant","optional":false,"typeAnnotation":{"type":"StringTypeAnnotation"}},{"name":"size","optional":false,"typeAnnotation":{"type":"NumberTypeAnnotation"}},{"name":"weight","optional":false,"typeAnnotation":{"type":"UnionTypeAnnotation","memberType":"NumberTypeAnnotation"}},{"name":"color","optional":false,"typeAnnotation":{"type":"GenericObjectTypeAnnotation"}},{"name":"hash","optional":false,"typeAnnotation":{"type":"StringTypeAnnotation"}}]}}]},"moduleName":"ReactNavigationMaterialSymbolModule"},"ReactNavigationSFSymbolView":{"type":"Component","components":{"ReactNavigationSFSymbolView":{"extendsProps":[{"type":"ReactNativeBuiltInType","knownTypeName":"ReactNativeCoreViewProps"}],"events":[],"props":[{"name":"name","optional":false,"typeAnnotation":{"type":"StringTypeAnnotation","default":null}},{"name":"size","optional":false,"typeAnnotation":{"type":"FloatTypeAnnotation","default":0}},{"name":"color","optional":false,"typeAnnotation":{"type":"ReservedPropTypeAnnotation","name":"ColorPrimitive"}}],"commands":[]}}}}}
@@ -1,2 +1,2 @@
1
1
  <?xml version="1.0" encoding="utf-8"?>
2
- <merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/satya/Developer/Projects/react-navigation/packages/native/android/src/main/assets"/><source path="/Users/satya/Developer/Projects/react-navigation/packages/native/android/build/intermediates/react-navigation"><file name="fonts/MaterialSymbolsRounded.ttf" path="/Users/satya/Developer/Projects/react-navigation/packages/native/android/build/intermediates/react-navigation/fonts/MaterialSymbolsRounded.ttf"/><file name="fonts/MaterialSymbolsOutlined.ttf" path="/Users/satya/Developer/Projects/react-navigation/packages/native/android/build/intermediates/react-navigation/fonts/MaterialSymbolsOutlined.ttf"/><file name="fonts/MaterialSymbolsSharp.ttf" path="/Users/satya/Developer/Projects/react-navigation/packages/native/android/build/intermediates/react-navigation/fonts/MaterialSymbolsSharp.ttf"/></source></dataSet><dataSet config="debug" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/satya/Developer/Projects/react-navigation/packages/native/android/src/debug/assets"/></dataSet><dataSet config="generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/satya/Developer/Projects/react-navigation/packages/native/android/build/intermediates/shader_assets/debug/compileDebugShaders/out"/></dataSet></merger>
2
+ <merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/satya/Developer/Projects/react-navigation/packages/native/android/src/main/assets"/><source path="/Users/satya/Developer/Projects/react-navigation/packages/native/android/build/intermediates/react-navigation"><file name="fonts/MaterialSymbolsOutlined_400.ttf" path="/Users/satya/Developer/Projects/react-navigation/packages/native/android/build/intermediates/react-navigation/fonts/MaterialSymbolsOutlined_400.ttf"/></source></dataSet><dataSet config="debug" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/satya/Developer/Projects/react-navigation/packages/native/android/src/debug/assets"/></dataSet><dataSet config="generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/satya/Developer/Projects/react-navigation/packages/native/android/build/intermediates/shader_assets/debug/compileDebugShaders/out"/></dataSet></merger>
@@ -1,6 +1,17 @@
1
1
  buildscript {
2
- ext.getExtOrDefault = {name ->
3
- return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties['ReactNavigation_' + name]
2
+ ext.ReactNavigation = [
3
+ kotlinVersion: "2.0.21",
4
+ minSdkVersion: 24,
5
+ compileSdkVersion: 36,
6
+ targetSdkVersion: 36
7
+ ]
8
+
9
+ ext.getExtOrDefault = { prop ->
10
+ if (rootProject.ext.has(prop)) {
11
+ return rootProject.ext.get(prop)
12
+ }
13
+
14
+ return ReactNavigation[prop]
4
15
  }
5
16
 
6
17
  repositories {
@@ -21,18 +32,14 @@ apply plugin: "kotlin-android"
21
32
 
22
33
  apply plugin: "com.facebook.react"
23
34
 
24
- def getExtOrIntegerDefault(name) {
25
- return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties["ReactNavigation_" + name]).toInteger()
26
- }
27
-
28
35
  android {
29
36
  namespace "org.reactnavigation"
30
37
 
31
- compileSdkVersion getExtOrIntegerDefault("compileSdkVersion")
38
+ compileSdkVersion getExtOrDefault("compileSdkVersion")
32
39
 
33
40
  defaultConfig {
34
- minSdkVersion getExtOrIntegerDefault("minSdkVersion")
35
- targetSdkVersion getExtOrIntegerDefault("targetSdkVersion")
41
+ minSdkVersion getExtOrDefault("minSdkVersion")
42
+ targetSdkVersion getExtOrDefault("targetSdkVersion")
36
43
  }
37
44
 
38
45
  buildTypes {
@@ -3,6 +3,7 @@ package org.reactnavigation
3
3
  import android.graphics.Bitmap
4
4
  import android.graphics.Canvas
5
5
  import android.graphics.Paint
6
+ import androidx.core.graphics.createBitmap
6
7
  import androidx.core.net.toUri
7
8
  import com.facebook.fbreact.specs.NativeMaterialSymbolModuleSpec
8
9
  import com.facebook.react.bridge.ColorPropConverter
@@ -14,23 +15,19 @@ import kotlinx.coroutines.SupervisorJob
14
15
  import kotlinx.coroutines.launch
15
16
  import java.io.File
16
17
  import java.io.FileOutputStream
17
- import java.util.concurrent.Callable
18
- import java.util.concurrent.ConcurrentHashMap
19
- import java.util.concurrent.Executors
20
- import java.util.concurrent.Future
21
18
  import kotlin.math.roundToInt
22
19
 
23
20
  class MaterialSymbolModule(reactContext: ReactApplicationContext) :
24
21
  NativeMaterialSymbolModuleSpec(reactContext) {
25
22
 
26
23
  companion object {
27
- private val executor = Executors.newCachedThreadPool()
28
- private val futures = ConcurrentHashMap<String, Future<String>>()
24
+ const val NAME = NativeMaterialSymbolModuleSpec.NAME
25
+
29
26
  private val scope = CoroutineScope(Dispatchers.IO + SupervisorJob())
30
27
  }
31
28
 
32
29
  override fun getImageSource(
33
- name: String, variant: String, size: Double, color: ReadableMap, hash: String
30
+ name: String, variant: String, size: Double, weight: Double, color: ReadableMap, hash: String
34
31
  ): String {
35
32
  val colorValue = color.getDynamic("value").let {
36
33
  when (it.type) {
@@ -47,7 +44,7 @@ class MaterialSymbolModule(reactContext: ReactApplicationContext) :
47
44
  val scaledSize = (size * density).roundToInt().coerceAtLeast(1)
48
45
 
49
46
  val cacheDir = File(
50
- reactApplicationContext.cacheDir, "react_navigation/material_symbols/$variant/$hash"
47
+ reactApplicationContext.cacheDir, "react_navigation/material_symbols/$variant-$weight/$hash"
51
48
  )
52
49
 
53
50
  val cacheKey = "${name.hashCode()}_${scaledSize}_$resolvedColor"
@@ -57,55 +54,37 @@ class MaterialSymbolModule(reactContext: ReactApplicationContext) :
57
54
  return cacheFile.toUri().toString()
58
55
  }
59
56
 
60
- val future = futures.computeIfAbsent(cacheKey) {
61
- executor.submit(
62
- Callable {
63
- try {
64
- scope.launch {
65
- cacheDir.parentFile?.listFiles { it.isDirectory && it.name != hash }
66
- ?.forEach { it.deleteRecursively() }
67
- }
68
-
69
- cacheDir.mkdirs()
70
-
71
- val paint = Paint(Paint.ANTI_ALIAS_FLAG).apply {
72
- typeface = MaterialSymbolTypeface.get(reactApplicationContext, variant)
73
- textSize = scaledSize.toFloat()
74
- textAlign = Paint.Align.CENTER
75
-
76
- this.color = resolvedColor
77
- }
78
-
79
- val fontMetrics = paint.fontMetrics
80
- val bitmap = Bitmap.createBitmap(scaledSize, scaledSize, Bitmap.Config.ARGB_8888)
81
-
82
- try {
83
- val canvas = Canvas(bitmap)
84
- val y =
85
- (scaledSize - (fontMetrics.descent - fontMetrics.ascent)) / 2f - fontMetrics.ascent
86
-
87
- canvas.drawText(name, scaledSize / 2f, y, paint)
88
-
89
- FileOutputStream(cacheFile).use {
90
- bitmap.compress(Bitmap.CompressFormat.PNG, 100, it)
91
- }
92
- } finally {
93
- bitmap.recycle()
94
- }
95
-
96
- return@Callable cacheFile.toUri().toString()
97
- } catch (e: Exception) {
98
- futures.remove(cacheKey)
99
-
100
- throw e
101
- }
102
- })
57
+ scope.launch {
58
+ cacheDir.parentFile?.listFiles { it.isDirectory && it.name != hash }
59
+ ?.forEach { it.deleteRecursively() }
60
+ }
61
+
62
+ cacheDir.mkdirs()
63
+
64
+ val paint = Paint(Paint.ANTI_ALIAS_FLAG).apply {
65
+ typeface = MaterialSymbolTypeface.get(reactApplicationContext, variant, weight.toInt())
66
+ textSize = scaledSize.toFloat()
67
+ textAlign = Paint.Align.CENTER
68
+
69
+ this.color = resolvedColor
103
70
  }
104
71
 
72
+ val fontMetrics = paint.fontMetrics
73
+ val bitmap = createBitmap(scaledSize, scaledSize)
74
+
105
75
  try {
106
- return future.get()
107
- } catch (e: Exception) {
108
- throw (e.cause as? Exception) ?: e
76
+ val canvas = Canvas(bitmap)
77
+ val y = (scaledSize - (fontMetrics.descent - fontMetrics.ascent)) / 2f - fontMetrics.ascent
78
+
79
+ canvas.drawText(name, scaledSize / 2f, y, paint)
80
+
81
+ FileOutputStream(cacheFile).use {
82
+ bitmap.compress(Bitmap.CompressFormat.PNG, 100, it)
83
+ }
84
+ } finally {
85
+ bitmap.recycle()
109
86
  }
87
+
88
+ return cacheFile.toUri().toString()
110
89
  }
111
90
  }