react-native-unistyles 3.5.2 → 3.5.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 (56) hide show
  1. package/android/src/main/java/com/unistyles/NativePlatform+android.kt +44 -7
  2. package/android/src/main/java/com/unistyles/NativePlatform+insets.kt +1 -1
  3. package/cxx/core/UnistylesRegistry.cpp +5 -5
  4. package/cxx/core/UnistylesRegistry.h +3 -3
  5. package/cxx/hybridObjects/HybridShadowRegistry.cpp +48 -14
  6. package/cxx/hybridObjects/HybridShadowRegistry.h +3 -2
  7. package/cxx/hybridObjects/HybridStyleSheet.cpp +3 -3
  8. package/cxx/parser/Parser.cpp +18 -2
  9. package/cxx/shadowTree/ShadowTreeManager.cpp +5 -5
  10. package/cxx/shadowTree/ShadowTreeManager.h +1 -1
  11. package/ios/NativePlatform+ios.swift +6 -4
  12. package/lib/commonjs/core/useProxifiedUnistyles/useProxifiedUnistyles.js +10 -0
  13. package/lib/commonjs/core/useProxifiedUnistyles/useProxifiedUnistyles.js.map +1 -1
  14. package/lib/commonjs/core/withUnistyles/withUnistyles.native.js +16 -15
  15. package/lib/commonjs/core/withUnistyles/withUnistyles.native.js.map +1 -1
  16. package/lib/commonjs/specs/ShadowRegistry/index.js +66 -73
  17. package/lib/commonjs/specs/ShadowRegistry/index.js.map +1 -1
  18. package/lib/commonjs/web/css/core.js +30 -5
  19. package/lib/commonjs/web/css/core.js.map +1 -1
  20. package/lib/commonjs/web/css/state.js +4 -1
  21. package/lib/commonjs/web/css/state.js.map +1 -1
  22. package/lib/commonjs/web/registry.js +1 -1
  23. package/lib/commonjs/web/registry.js.map +1 -1
  24. package/lib/module/core/useProxifiedUnistyles/useProxifiedUnistyles.js +10 -0
  25. package/lib/module/core/useProxifiedUnistyles/useProxifiedUnistyles.js.map +1 -1
  26. package/lib/module/core/withUnistyles/withUnistyles.native.js +14 -14
  27. package/lib/module/core/withUnistyles/withUnistyles.native.js.map +1 -1
  28. package/lib/module/specs/ShadowRegistry/index.js +66 -73
  29. package/lib/module/specs/ShadowRegistry/index.js.map +1 -1
  30. package/lib/module/web/css/core.js +28 -4
  31. package/lib/module/web/css/core.js.map +1 -1
  32. package/lib/module/web/css/state.js +5 -2
  33. package/lib/module/web/css/state.js.map +1 -1
  34. package/lib/module/web/registry.js +1 -1
  35. package/lib/module/web/registry.js.map +1 -1
  36. package/lib/typescript/src/__tests__/web-child-selector.spec.d.ts +2 -0
  37. package/lib/typescript/src/__tests__/web-child-selector.spec.d.ts.map +1 -0
  38. package/lib/typescript/src/__tests__/web-pointer-events.spec.d.ts +2 -0
  39. package/lib/typescript/src/__tests__/web-pointer-events.spec.d.ts.map +1 -0
  40. package/lib/typescript/src/__tests__/withUnistyles.spec.d.ts +2 -0
  41. package/lib/typescript/src/__tests__/withUnistyles.spec.d.ts.map +1 -0
  42. package/lib/typescript/src/core/useProxifiedUnistyles/useProxifiedUnistyles.d.ts.map +1 -1
  43. package/lib/typescript/src/core/withUnistyles/withUnistyles.native.d.ts +6 -0
  44. package/lib/typescript/src/core/withUnistyles/withUnistyles.native.d.ts.map +1 -1
  45. package/lib/typescript/src/specs/ShadowRegistry/index.d.ts +2 -2
  46. package/lib/typescript/src/specs/ShadowRegistry/index.d.ts.map +1 -1
  47. package/lib/typescript/src/web/css/core.d.ts +1 -0
  48. package/lib/typescript/src/web/css/core.d.ts.map +1 -1
  49. package/lib/typescript/src/web/css/state.d.ts.map +1 -1
  50. package/package.json +1 -1
  51. package/src/core/useProxifiedUnistyles/useProxifiedUnistyles.ts +11 -0
  52. package/src/core/withUnistyles/withUnistyles.native.tsx +22 -25
  53. package/src/specs/ShadowRegistry/index.ts +79 -89
  54. package/src/web/css/core.ts +29 -4
  55. package/src/web/css/state.ts +6 -2
  56. package/src/web/registry.ts +1 -1
@@ -3,11 +3,16 @@ package com.unistyles
3
3
  import android.os.Build
4
4
  import android.content.Context
5
5
  import android.content.res.Configuration
6
+ import android.content.res.Resources
7
+ import android.os.Handler
8
+ import android.os.Looper
6
9
  import android.util.DisplayMetrics
7
10
  import android.view.View
8
11
  import android.view.WindowManager
9
12
  import androidx.annotation.Keep
13
+ import androidx.core.content.OnConfigurationChangedProvider
10
14
  import androidx.core.text.TextUtilsCompat
15
+ import androidx.core.util.Consumer
11
16
  import androidx.core.view.ViewCompat
12
17
  import androidx.core.view.WindowCompat
13
18
  import androidx.core.view.WindowInsetsCompat
@@ -22,6 +27,7 @@ import com.margelo.nitro.unistyles.Insets
22
27
  import com.margelo.nitro.unistyles.Orientation
23
28
  import com.margelo.nitro.unistyles.UnistyleDependency
24
29
  import com.margelo.nitro.unistyles.UnistylesNativeMiniRuntime
30
+ import java.lang.ref.WeakReference
25
31
  import java.util.Locale
26
32
 
27
33
  @Keep
@@ -30,6 +36,14 @@ class NativePlatformAndroid(private val reactContext: ReactApplicationContext):
30
36
  private val _insets = NativePlatformInsets(reactContext, this::getMiniRuntime) { this.onConfigChange() }
31
37
  private var _miniRuntime: UnistylesNativeMiniRuntime = buildMiniRuntime()
32
38
  private val _listener = NativePlatformListener(reactContext, this::getMiniRuntime) { this.diffMiniRuntime() }
39
+ private var _configurationProvider: WeakReference<OnConfigurationChangedProvider>? = null
40
+ private val _activityConfigurationListener = Consumer<Configuration> {
41
+ Handler(Looper.getMainLooper()).post { this.onConfigChange() }
42
+ }
43
+
44
+ // Application resources can lag behind configuration changes
45
+ private val configurationResources: Resources
46
+ get() = reactContext.currentActivity?.resources ?: reactContext.resources
33
47
 
34
48
  init {
35
49
  checkEdgeToEdge()
@@ -37,12 +51,16 @@ class NativePlatformAndroid(private val reactContext: ReactApplicationContext):
37
51
  }
38
52
 
39
53
  fun onDestroy() {
54
+ stopObservingActivityConfiguration()
40
55
  _listener.onDestroy()
41
56
  _insets.onDestroy()
42
57
  reactContext.removeLifecycleEventListener(this)
43
58
  }
44
59
 
45
60
  override fun onHostResume() {
61
+ observeActivityConfiguration()
62
+ // catch configuration changes missed while no Activity was attached
63
+ onConfigChange()
46
64
  _insets.getInitialInsets(false)
47
65
  _insets.startInsetsListener()
48
66
  }
@@ -51,7 +69,26 @@ class NativePlatformAndroid(private val reactContext: ReactApplicationContext):
51
69
  _insets.stopInsetsListener()
52
70
  }
53
71
 
54
- override fun onHostDestroy() {}
72
+ override fun onHostDestroy() {
73
+ stopObservingActivityConfiguration()
74
+ }
75
+
76
+ private fun observeActivityConfiguration() {
77
+ val provider = reactContext.currentActivity as? OnConfigurationChangedProvider
78
+
79
+ if (_configurationProvider?.get() === provider) {
80
+ return
81
+ }
82
+
83
+ stopObservingActivityConfiguration()
84
+ provider?.addOnConfigurationChangedListener(_activityConfigurationListener)
85
+ _configurationProvider = provider?.let { WeakReference(it) }
86
+ }
87
+
88
+ private fun stopObservingActivityConfiguration() {
89
+ _configurationProvider?.get()?.removeOnConfigurationChangedListener(_activityConfigurationListener)
90
+ _configurationProvider = null
91
+ }
55
92
 
56
93
  override val memorySize: Long
57
94
  get() = 0
@@ -61,7 +98,7 @@ class NativePlatformAndroid(private val reactContext: ReactApplicationContext):
61
98
  }
62
99
 
63
100
  override fun getColorScheme(): ColorScheme {
64
- val uiMode = reactContext.resources.configuration.uiMode
101
+ val uiMode = configurationResources.configuration.uiMode
65
102
 
66
103
  val colorScheme = when (uiMode.and(Configuration.UI_MODE_NIGHT_MASK)) {
67
104
  Configuration.UI_MODE_NIGHT_YES -> ColorScheme.DARK
@@ -73,15 +110,15 @@ class NativePlatformAndroid(private val reactContext: ReactApplicationContext):
73
110
  }
74
111
 
75
112
  override fun getFontScale(): Double {
76
- return reactContext.resources.configuration.fontScale.toDouble()
113
+ return configurationResources.configuration.fontScale.toDouble()
77
114
  }
78
115
 
79
116
  override fun getPixelRatio(): Double {
80
- return reactContext.resources.displayMetrics.density.toDouble()
117
+ return configurationResources.displayMetrics.density.toDouble()
81
118
  }
82
119
 
83
120
  override fun getOrientation(): Orientation {
84
- val orientation = when (reactContext.resources.configuration.orientation) {
121
+ val orientation = when (configurationResources.configuration.orientation) {
85
122
  Configuration.ORIENTATION_PORTRAIT -> Orientation.PORTRAIT
86
123
  Configuration.ORIENTATION_LANDSCAPE -> Orientation.LANDSCAPE
87
124
  else -> Orientation.PORTRAIT
@@ -122,7 +159,7 @@ class NativePlatformAndroid(private val reactContext: ReactApplicationContext):
122
159
  return Dimensions(screenWidth, screenHeight)
123
160
  }
124
161
  else -> {
125
- val displayMetrics = reactContext.resources.displayMetrics
162
+ val displayMetrics = configurationResources.displayMetrics
126
163
 
127
164
  reactContext.currentActivity?.windowManager?.currentWindowMetrics?.bounds?.let {
128
165
  val boundsWidth = (it.width() / displayMetrics.density).toDouble()
@@ -157,7 +194,7 @@ class NativePlatformAndroid(private val reactContext: ReactApplicationContext):
157
194
  "com.facebook.react.modules.i18nmanager.I18nUtil",
158
195
  Context.MODE_PRIVATE
159
196
  )
160
- val resourcesLocale = reactContext.resources.configuration.locales[0]
197
+ val resourcesLocale = configurationResources.configuration.locales[0]
161
198
  val hasForcedRtl = sharedPrefs.getBoolean("RCTI18nUtil_forceRTL", false)
162
199
  // user preferences
163
200
  val isRtl = TextUtilsCompat.getLayoutDirectionFromLocale(Locale.getDefault()) == ViewCompat.LAYOUT_DIRECTION_RTL
@@ -38,7 +38,7 @@ class NativePlatformInsets(
38
38
  }
39
39
 
40
40
  fun getInsets(): Insets {
41
- val density = reactContext.resources.displayMetrics.density
41
+ val density = (reactContext.currentActivity?.resources ?: reactContext.resources).displayMetrics.density
42
42
 
43
43
  return Insets(
44
44
  this._insets.top / density,
@@ -407,7 +407,7 @@ core::UnistylesRegistry::OwnedState core::UnistylesRegistry::takeOwnedState() {
407
407
  ownedState.styleSheets = std::exchange(this->_styleSheetRegistry, {});
408
408
  ownedState.state = std::move(this->_state);
409
409
  this->_scopedTheme = std::nullopt;
410
- this->_committedTags.clear();
410
+ this->_committedInstanceHandles.clear();
411
411
  _nextStyleSheetTag.store(0);
412
412
 
413
413
  return ownedState;
@@ -435,10 +435,10 @@ size_t core::UnistylesRegistry::getPendingUpdatesCount() {
435
435
  });
436
436
  }
437
437
 
438
- void core::UnistylesRegistry::setCommittedTags(std::vector<Tag>&& tags) {
439
- this->_committedTags = std::move(tags);
438
+ void core::UnistylesRegistry::setCommittedInstanceHandles(std::vector<InstanceHandle::Shared>&& instanceHandles) {
439
+ this->_committedInstanceHandles = std::move(instanceHandles);
440
440
  }
441
441
 
442
- std::vector<Tag> core::UnistylesRegistry::takeCommittedTags() {
443
- return std::exchange(this->_committedTags, {});
442
+ std::vector<InstanceHandle::Shared> core::UnistylesRegistry::takeCommittedInstanceHandles() {
443
+ return std::exchange(this->_committedInstanceHandles, {});
444
444
  }
@@ -70,8 +70,8 @@ struct UnistylesRegistry: public StyleSheetRegistry {
70
70
  core::Unistyle::Shared getUnistyleById(std::string unistyleID);
71
71
  std::vector<LinkedFamilySnapshot> getLinkedFamiliesSnapshot();
72
72
  size_t getPendingUpdatesCount();
73
- void setCommittedTags(std::vector<Tag>&& tags);
74
- std::vector<Tag> takeCommittedTags();
73
+ void setCommittedInstanceHandles(std::vector<InstanceHandle::Shared>&& instanceHandles);
74
+ std::vector<InstanceHandle::Shared> takeCommittedInstanceHandles();
75
75
 
76
76
  // newest installed runtime owns the registry, generation 0 means no owner
77
77
  // previous runtime's state is kept aside until it releases ownership, as it may still run JS
@@ -119,7 +119,7 @@ private:
119
119
  std::unordered_map<int, std::shared_ptr<core::StyleSheet>> _styleSheetRegistry{};
120
120
  std::unordered_map<const ShadowNodeFamily*, LinkedFamily> _shadowRegistry{};
121
121
  size_t _sweepThreshold = MIN_SWEEP_THRESHOLD;
122
- std::vector<Tag> _committedTags{};
122
+ std::vector<InstanceHandle::Shared> _committedInstanceHandles{};
123
123
  };
124
124
 
125
125
  inline UnistylesRegistry& UnistylesRegistry::get() {
@@ -33,8 +33,7 @@ jsi::Value HybridShadowRegistry::link(jsi::Runtime &rt, const jsi::Value &thisVa
33
33
  try {
34
34
  auto rawStyle = args[1].asObject(rt).asArray(rt).getValueAtIndex(rt, i);
35
35
  auto rawStyleObj = rawStyle.getObject(rt);
36
- auto unistyleHashKeys = core::getUnistylesHashKeys(rt, rawStyleObj);
37
- auto secrets = rawStyleObj.getProperty(rt, unistyleHashKeys.at(0).c_str()).asObject(rt);
36
+ auto secrets = getUnistyleSecrets(rt, rawStyleObj, unistyleWrappers[i]).value();
38
37
  auto secretArguments = secrets.getProperty(rt, helpers::ARGUMENTS.c_str()).asObject(rt).asArray(rt);
39
38
 
40
39
  arguments.push_back(helpers::parseDynamicFunctionArguments(rt, secretArguments));
@@ -65,15 +64,14 @@ jsi::Value HybridShadowRegistry::link(jsi::Runtime &rt, const jsi::Value &thisVa
65
64
  core::Unistyle::Shared& unistyle = unistyleWrappers[i];
66
65
  auto rawStyle = args[1].asObject(rt).asArray(rt).getValueAtIndex(rt, i);
67
66
  auto rawStyleObj = rawStyle.getObject(rt);
68
- auto unistyleHashKeys = core::getUnistylesHashKeys(rt, rawStyleObj);
67
+ auto secrets = getUnistyleSecrets(rt, rawStyleObj, unistyle);
69
68
  core::Variants variants{};
70
69
 
71
- if (unistyleHashKeys.size() == 1) {
72
- auto secrets = rawStyleObj.getProperty(rt, unistyleHashKeys.at(0).c_str()).asObject(rt);
73
- auto hasVariants = secrets.hasProperty(rt, helpers::STYLESHEET_VARIANTS.c_str());
70
+ if (secrets.has_value()) {
71
+ auto rawVariants = secrets->getProperty(rt, helpers::STYLESHEET_VARIANTS.c_str());
74
72
 
75
- if (hasVariants) {
76
- variants = helpers::variantsToPairs(rt, secrets.getProperty(rt, helpers::STYLESHEET_VARIANTS.c_str()).asObject(rt));
73
+ if (rawVariants.isObject()) {
74
+ variants = helpers::variantsToPairs(rt, rawVariants.asObject(rt));
77
75
  }
78
76
  }
79
77
 
@@ -94,8 +92,18 @@ jsi::Value HybridShadowRegistry::link(jsi::Runtime &rt, const jsi::Value &thisVa
94
92
 
95
93
  // The shared cache can belong to another view by the time React attaches refs.
96
94
  // Restore this view's arguments and variants before saving its native styles.
95
+ // An object style without variants is the same for every view, so it's reused unless it's stale (dirty).
97
96
  if (!unistyleData->parsedStyle.has_value() && unistyle->parsedStyle.has_value()) {
98
- parser.rebuildUnistyleWithVariants(rt, unistyleData);
97
+ auto isSharedStyle = unistyle->type == core::UnistyleType::Object &&
98
+ unistyle->styleKey != helpers::EXOTIC_STYLE_KEY &&
99
+ !unistyle->isDirty &&
100
+ !unistyle->rawValue.hasProperty(rt, "variants");
101
+
102
+ if (isSharedStyle) {
103
+ unistyleData->parsedStyle = jsi::Value(rt, unistyle->parsedStyle.value()).asObject(rt);
104
+ } else {
105
+ parser.rebuildUnistyleWithVariants(rt, unistyleData);
106
+ }
99
107
  }
100
108
 
101
109
  unistylesData.emplace_back(unistyleData);
@@ -131,6 +139,29 @@ jsi::Value HybridShadowRegistry::link(jsi::Runtime &rt, const jsi::Value &thisVa
131
139
  return jsi::Value::undefined();
132
140
  }
133
141
 
142
+ // a style made by Unistyles keeps its secrets (variants, arguments) under the unistyle's id,
143
+ // reading it directly spares enumerating (and converting to strings) every prop of every linked style
144
+ std::optional<jsi::Object> HybridShadowRegistry::getUnistyleSecrets(jsi::Runtime& rt, jsi::Object& style, const core::Unistyle::Shared& unistyle) {
145
+ // inline and React Native styles have no secrets
146
+ if (unistyle->styleKey == helpers::EXOTIC_STYLE_KEY) {
147
+ return std::nullopt;
148
+ }
149
+
150
+ auto secrets = style.getProperty(rt, unistyle->unid.c_str());
151
+
152
+ if (secrets.isObject()) {
153
+ return secrets.asObject(rt);
154
+ }
155
+
156
+ auto unistyleHashKeys = core::getUnistylesHashKeys(rt, style);
157
+
158
+ if (unistyleHashKeys.size() != 1) {
159
+ return std::nullopt;
160
+ }
161
+
162
+ return style.getProperty(rt, unistyleHashKeys.at(0).c_str()).asObject(rt);
163
+ }
164
+
134
165
  void HybridShadowRegistry::scheduleShadowTreeUpdate(jsi::Runtime& rt) {
135
166
  if (this->_isShadowTreeUpdateScheduled->exchange(true)) {
136
167
  return;
@@ -232,12 +263,15 @@ jsi::Value HybridShadowRegistry::verify(jsi::Runtime &rt, const jsi::Value &this
232
263
  return shadow::ShadowTreeDiagnostics::verify(rt, this->_unistylesRuntime);
233
264
  }
234
265
 
235
- jsi::Value HybridShadowRegistry::takeCommittedTags(jsi::Runtime &rt, const jsi::Value &thisValue, const jsi::Value *args, size_t count) {
236
- auto tags = core::UnistylesRegistry::get().takeCommittedTags();
237
- auto result = jsi::Array(rt, tags.size());
266
+ // the fibers React created the committed nodes with (weak, null once collected)
267
+ jsi::Value HybridShadowRegistry::takeCommittedInstanceHandles(jsi::Runtime &rt, const jsi::Value &thisValue, const jsi::Value *args, size_t count) {
268
+ auto instanceHandles = core::UnistylesRegistry::get().takeCommittedInstanceHandles();
269
+ auto result = jsi::Array(rt, instanceHandles.size());
270
+
271
+ for (size_t i = 0; i < instanceHandles.size(); i++) {
272
+ auto& instanceHandle = instanceHandles[i];
238
273
 
239
- for (size_t i = 0; i < tags.size(); i++) {
240
- result.setValueAtIndex(rt, i, jsi::Value(static_cast<double>(tags[i])));
274
+ result.setValueAtIndex(rt, i, instanceHandle ? instanceHandle->getInstanceHandle(rt) : jsi::Value::null());
241
275
  }
242
276
 
243
277
  return result;
@@ -44,7 +44,7 @@ struct HybridShadowRegistry: public HybridUnistylesShadowRegistrySpec {
44
44
  const jsi::Value& thisValue,
45
45
  const jsi::Value* args,
46
46
  size_t count);
47
- jsi::Value takeCommittedTags(jsi::Runtime& rt,
47
+ jsi::Value takeCommittedInstanceHandles(jsi::Runtime& rt,
48
48
  const jsi::Value& thisValue,
49
49
  const jsi::Value* args,
50
50
  size_t count);
@@ -64,7 +64,7 @@ struct HybridShadowRegistry: public HybridUnistylesShadowRegistrySpec {
64
64
  prototype.registerRawHybridMethod("setScopedTheme", 1, &HybridShadowRegistry::setScopedTheme);
65
65
  prototype.registerRawHybridMethod("getScopedTheme", 0, &HybridShadowRegistry::getScopedTheme);
66
66
  prototype.registerRawHybridMethod("verify", 0, &HybridShadowRegistry::verify);
67
- prototype.registerRawHybridMethod("takeCommittedTags", 0, &HybridShadowRegistry::takeCommittedTags);
67
+ prototype.registerRawHybridMethod("takeCommittedInstanceHandles", 0, &HybridShadowRegistry::takeCommittedInstanceHandles);
68
68
  prototype.registerRawHybridMethod("refreshReactNodes", 1, &HybridShadowRegistry::refreshReactNodes);
69
69
  });
70
70
  };
@@ -73,6 +73,7 @@ struct HybridShadowRegistry: public HybridUnistylesShadowRegistrySpec {
73
73
 
74
74
  private:
75
75
  void scheduleShadowTreeUpdate(jsi::Runtime& rt);
76
+ static std::optional<jsi::Object> getUnistyleSecrets(jsi::Runtime& rt, jsi::Object& style, const core::Unistyle::Shared& unistyle);
76
77
 
77
78
  std::shared_ptr<HybridUnistylesRuntime> _unistylesRuntime;
78
79
  std::shared_ptr<std::atomic<bool>> _isShadowTreeUpdateScheduled = std::make_shared<std::atomic<bool>>(false);
@@ -362,14 +362,14 @@ void HybridStyleSheet::applyDependencyChanges(jsi::Runtime& rt, std::vector<Unis
362
362
  parser.rebuildShadowLeafUpdates(rt, dependencyMap);
363
363
  }
364
364
 
365
- std::vector<Tag> committedTags;
365
+ std::vector<InstanceHandle::Shared> committedInstanceHandles;
366
366
 
367
367
  if (!dependencyMap.empty()) {
368
- committedTags = shadow::ShadowTreeManager::updateShadowTree(rt);
368
+ committedInstanceHandles = shadow::ShadowTreeManager::updateShadowTree(rt);
369
369
  }
370
370
 
371
371
  // after the commit, so listeners can point React at the committed nodes
372
- registry.setCommittedTags(std::move(committedTags));
372
+ registry.setCommittedInstanceHandles(std::move(committedInstanceHandles));
373
373
  // also when no StyleSheet depends on the change, hooks (useUnistyles, withUnistyles, Display, Hide) may
374
374
  this->notifyJSListeners(dependencies);
375
375
  }
@@ -281,6 +281,7 @@ void parser::Parser::rebuildUnistylesInDependencyMap(
281
281
  std::unordered_map<std::shared_ptr<StyleSheet>, jsi::Value> parsedStyleSheetsWithDefaultTheme;
282
282
  std::unordered_map<std::string, std::unordered_map<std::shared_ptr<StyleSheet>, jsi::Value>> parsedStyleSheetsWithScopedTheme;
283
283
  std::unordered_set<std::shared_ptr<core::Unistyle>> parsedUnistyles;
284
+ std::unordered_set<std::shared_ptr<core::Unistyle>> sharedUnistyles;
284
285
 
285
286
  // Parse all stylesheets that depend on changes
286
287
  for (const auto& styleSheet : styleSheets) {
@@ -355,6 +356,8 @@ void parser::Parser::rebuildUnistylesInDependencyMap(
355
356
  }
356
357
 
357
358
  this->rebuildUnistyleWithScopedTheme(rt, parsedStyleSheet, unistyleData);
359
+ } else if (sharedUnistyles.contains(unistyle)) {
360
+ unistyleData->parsedStyle = jsi::Value(rt, unistyle->parsedStyle.value()).asObject(rt);
358
361
  } else {
359
362
  unistyle->rawValue = parsedSheetObj
360
363
  .getProperty(rt, unistyle->styleKey.c_str())
@@ -365,9 +368,14 @@ void parser::Parser::rebuildUnistylesInDependencyMap(
365
368
  );
366
369
  unistyleData->parsedStyle = jsi::Value(rt, unistyle->parsedStyle.value()).asObject(rt);
367
370
  unistyle->isDirty = true;
368
- }
369
371
 
370
- parsedUnistyles.insert(unistyle);
372
+ if (unistyle->type == core::UnistyleType::Object && !unistyle->rawValue.hasProperty(rt, "variants")) {
373
+ sharedUnistyles.insert(unistyle);
374
+ }
375
+
376
+ // unistyles rebuilt only for a scoped theme stay out of this set, so the loop below refreshes their global rawValue
377
+ parsedUnistyles.insert(unistyle);
378
+ }
371
379
  }
372
380
  }
373
381
 
@@ -1273,6 +1281,14 @@ folly::dynamic parser::Parser::parseStylesToShadowTreeStyles(jsi::Runtime& rt, c
1273
1281
  // so a value captured at link time would undo what React rendered since
1274
1282
  folly::dynamic parser::Parser::parseStylesToShadowTreeUpdates(jsi::Runtime& rt, const std::vector<std::shared_ptr<UnistyleData>>& unistyles) {
1275
1283
  auto props = this->parseStylesToShadowTreeStyles(rt, unistyles);
1284
+ auto hasInlineStyle = std::any_of(unistyles.begin(), unistyles.end(), [](const std::shared_ptr<UnistyleData>& unistyleData) {
1285
+ return unistyleData->parsedStyle.has_value() && unistyleData->unistyle->styleKey == helpers::EXOTIC_STYLE_KEY;
1286
+ });
1287
+
1288
+ if (!hasInlineStyle) {
1289
+ return props;
1290
+ }
1291
+
1276
1292
  std::unordered_map<std::string, bool> isOwnedByInlineStyle;
1277
1293
 
1278
1294
  for (const auto& unistyleData : unistyles) {
@@ -4,13 +4,13 @@ using namespace margelo::nitro::unistyles;
4
4
  using namespace facebook::react;
5
5
  using namespace facebook;
6
6
 
7
- std::vector<Tag> shadow::ShadowTreeManager::updateShadowTree(jsi::Runtime& rt) {
7
+ std::vector<InstanceHandle::Shared> shadow::ShadowTreeManager::updateShadowTree(jsi::Runtime& rt) {
8
8
  auto& registry = core::UnistylesRegistry::get();
9
9
 
10
10
  // updates pin their families, so raw pointers stay valid during the commit
11
11
  // declared outside of the lock, so the last pin is released after unlocking
12
12
  PinnedShadowLeafUpdates updates;
13
- std::vector<Tag> committedTags;
13
+ std::vector<InstanceHandle::Shared> committedInstanceHandles;
14
14
 
15
15
  registry.trafficController.withLock([&](){
16
16
  updates = registry.trafficController.takeUpdates();
@@ -21,18 +21,18 @@ std::vector<Tag> shadow::ShadowTreeManager::updateShadowTree(jsi::Runtime& rt) {
21
21
 
22
22
  std::unordered_map<Tag, folly::dynamic> tagToProps;
23
23
 
24
- committedTags.reserve(updates.size());
24
+ committedInstanceHandles.reserve(updates.size());
25
25
 
26
26
  for (const auto& [family, update] : updates) {
27
27
  auto safeProps = update.props.isObject() ? update.props : folly::dynamic::object();
28
28
 
29
29
  tagToProps.insert({family->getTag(), safeProps});
30
- committedTags.push_back(family->getTag());
30
+ committedInstanceHandles.push_back(family->getInstanceHandle());
31
31
  shadow::mergeNativeProps(family, safeProps);
32
32
  }
33
33
 
34
34
  UIManagerBinding::getBinding(rt)->getUIManager().updateShadowTree(std::move(tagToProps));
35
35
  });
36
36
 
37
- return committedTags;
37
+ return committedInstanceHandles;
38
38
  }
@@ -15,7 +15,7 @@ using namespace facebook::react;
15
15
  using namespace facebook;
16
16
 
17
17
  struct ShadowTreeManager {
18
- static std::vector<Tag> updateShadowTree(jsi::Runtime& rt);
18
+ static std::vector<InstanceHandle::Shared> updateShadowTree(jsi::Runtime& rt);
19
19
  };
20
20
 
21
21
  }
@@ -120,8 +120,10 @@ class NativeIOSPlatform: HybridNativePlatformSpec {
120
120
  return cachedRuntime.screen;
121
121
  }
122
122
 
123
- // this should never happen, but it's better to return zeros
124
- return Dimensions(width: 0, height: 0)
123
+ // when the app is launched in the background there is no foreground window yet, fall back to the screen
124
+ let screenSize = UIScreen.main.bounds.size
125
+
126
+ return Dimensions(width: screenSize.width, height: screenSize.height)
125
127
  }
126
128
 
127
129
  let width = windowFrame.size.width
@@ -280,8 +282,8 @@ class NativeIOSPlatform: HybridNativePlatformSpec {
280
282
  return cachedRuntime.pixelRatio;
281
283
  }
282
284
 
283
- // this should never happen, but it's better to return default
284
- return 1
285
+ // when the app is launched in the background there is no foreground window yet, fall back to the screen
286
+ return UIScreen.main.scale
285
287
  }
286
288
 
287
289
  return window.screen.scale
@@ -40,6 +40,7 @@ const useProxifiedUnistyles = () => {
40
40
  const disposeRef = (0, _react.useRef)(undefined);
41
41
  const syncedDependenciesSizeRef = (0, _react.useRef)(-1);
42
42
  const syncedScopedThemeRef = (0, _react.useRef)(undefined);
43
+ const wasDisposedRef = (0, _react.useRef)(false);
43
44
  const reinitListener = () => {
44
45
  disposeRef.current?.();
45
46
  disposeRef.current = (0, _listener.listener)({
@@ -57,11 +58,20 @@ const useProxifiedUnistyles = () => {
57
58
  runtimeChanged();
58
59
  }
59
60
  });
61
+
62
+ // <Activity> cleans up effects, a theme change made while hidden was missed (#1297)
63
+ if (wasDisposedRef.current) {
64
+ wasDisposedRef.current = false;
65
+ if (!scopedTheme) {
66
+ setTheme(_specs.UnistylesRuntime.getTheme());
67
+ }
68
+ }
60
69
  };
61
70
  (0, _react.useEffect)(() => {
62
71
  return () => {
63
72
  disposeRef.current?.();
64
73
  syncedDependenciesSizeRef.current = -1;
74
+ wasDisposedRef.current = true;
65
75
  };
66
76
  }, [disposeRef]);
67
77
 
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_ScopedThemeContext","_specs","_NativePlatform","_listener","getMiniRuntime","UnistylesRuntime","miniRuntime","RTDependencyMap","breakpoint","UnistyleDependency","Breakpoints","colorScheme","ColorScheme","contentSizeCategory","ContentSizeCategory","hasAdaptiveThemes","AdaptiveThemes","insets","Insets","fontScale","FontScale","isLandscape","Orientation","isPortrait","navigationBar","NavigationBar","screen","Dimensions","statusBar","StatusBar","pixelRatio","PixelRatio","themeName","ThemeName","rtl","Rtl","useProxifiedUnistyles","scope","useContext","ScopedThemeContext","scopedTheme","setScopedTheme","useState","name","dependencies","Set","theme","setTheme","getTheme","_","runtimeChanged","useReducer","disposeRef","useRef","undefined","syncedDependenciesSizeRef","syncedScopedThemeRef","reinitListener","current","listener","Array","from","updateTheme","updateRuntime","hasThemeNameChange","useEffect","proxifiedTheme","Proxy","get","target","prop","add","Theme","proxifiedRuntime","Ime","useLayoutEffect","sameDeps","size","sameScopedTheme","addDependencies","newDependencies","dependenciesSize","forEach","dependency","exports"],"sourceRoot":"../../../../src","sources":["core/useProxifiedUnistyles/useProxifiedUnistyles.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_ScopedThemeContext","_specs","_NativePlatform","_listener","getMiniRuntime","UnistylesRuntime","miniRuntime","RTDependencyMap","breakpoint","UnistyleDependency","Breakpoints","colorScheme","ColorScheme","contentSizeCategory","ContentSizeCategory","hasAdaptiveThemes","AdaptiveThemes","insets","Insets","fontScale","FontScale","isLandscape","Orientation","isPortrait","navigationBar","NavigationBar","screen","Dimensions","statusBar","StatusBar","pixelRatio","PixelRatio","themeName","ThemeName","rtl","Rtl","useProxifiedUnistyles","scope","useContext","ScopedThemeContext","scopedTheme","setScopedTheme","useState","name","dependencies","Set","theme","setTheme","getTheme","_","runtimeChanged","useReducer","disposeRef","useRef","undefined","syncedDependenciesSizeRef","syncedScopedThemeRef","wasDisposedRef","reinitListener","current","listener","Array","from","updateTheme","updateRuntime","hasThemeNameChange","useEffect","proxifiedTheme","Proxy","get","target","prop","add","Theme","proxifiedRuntime","Ime","useLayoutEffect","sameDeps","size","sameScopedTheme","addDependencies","newDependencies","dependenciesSize","forEach","dependency","exports"],"sourceRoot":"../../../../src","sources":["core/useProxifiedUnistyles/useProxifiedUnistyles.ts"],"mappings":"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","ignoreList":[]}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.withUnistyles = void 0;
6
+ exports.withUnistyles = exports.getSecrets = void 0;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
8
  var _ScopedThemeContext = require("../../components/ScopedThemeContext");
9
9
  var _specs = require("../../specs");
@@ -16,21 +16,22 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
16
16
 
17
17
  // @ts-expect-error
18
18
 
19
- const withUnistyles = (Component, mappings) => {
20
- const getSecrets = (styleProps = {}) => {
21
- const styles = Array.isArray(styleProps) ? styleProps.flat() : [styleProps];
22
- const secrets = styles.filter(Boolean).reduce((acc, style) => {
23
- const unistyleKey = Object.keys(style).find(key => key.startsWith('unistyles_'));
24
- return acc.concat([unistyleKey ? style[unistyleKey] : {
25
- uni__getStyles: () => style,
26
- uni__dependencies: []
27
- }]);
28
- }, []);
29
- return {
30
- styles: secrets.reduce((acc, secret) => Object.assign(acc, secret.uni__getStyles()), {}),
31
- dependencies: secrets.flatMap(secret => secret.uni__dependencies)
32
- };
19
+ const getSecrets = (styleProps = {}) => {
20
+ const styles = Array.isArray(styleProps) ? styleProps.flat(Infinity) : [styleProps];
21
+ const secrets = styles.filter(Boolean).reduce((acc, style) => {
22
+ const unistyleKey = Object.keys(style).find(key => key.startsWith('unistyles_'));
23
+ return acc.concat([unistyleKey ? style[unistyleKey] : {
24
+ uni__getStyles: () => style,
25
+ uni__dependencies: []
26
+ }]);
27
+ }, []);
28
+ return {
29
+ styles: secrets.reduce((acc, secret) => Object.assign(acc, secret.uni__getStyles()), {}),
30
+ dependencies: secrets.flatMap(secret => secret.uni__dependencies)
33
31
  };
32
+ };
33
+ exports.getSecrets = getSecrets;
34
+ const withUnistyles = (Component, mappings) => {
34
35
  return /*#__PURE__*/(0, _react.forwardRef)((props, ref) => {
35
36
  const narrowedProps = props;
36
37
  const NativeComponent = Component;
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_ScopedThemeContext","_specs","_utils","_useProxifiedUnistyles","_warn","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","withUnistyles","Component","mappings","getSecrets","styleProps","styles","Array","isArray","flat","secrets","filter","Boolean","reduce","acc","style","unistyleKey","keys","find","key","startsWith","concat","uni__getStyles","uni__dependencies","secret","assign","dependencies","flatMap","forwardRef","props","ref","narrowedProps","NativeComponent","maybeWarnAboutMultipleUnistyles","displayName","name","contentContainerStyle","scope","useContext","ScopedThemeContext","proxifiedRuntime","proxifiedTheme","addDependencies","useProxifiedUnistyles","__uni","useEffect","styleSecrets","contentContainerStyleSecrets","from","Set","mappingsKey","mappingsProps","uniPropsKey","unistyleProps","uniProps","previousScopedTheme","UnistylesShadowRegistry","getScopedTheme","undefined","setScopedTheme","finalProps","deepMergeObjects","jsx","exports"],"sourceRoot":"../../../../src","sources":["core/withUnistyles/withUnistyles.native.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_ScopedThemeContext","_specs","_utils","_useProxifiedUnistyles","_warn","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","getSecrets","styleProps","styles","Array","isArray","flat","Infinity","secrets","filter","Boolean","reduce","acc","style","unistyleKey","keys","find","key","startsWith","concat","uni__getStyles","uni__dependencies","secret","assign","dependencies","flatMap","exports","withUnistyles","Component","mappings","forwardRef","props","ref","narrowedProps","NativeComponent","maybeWarnAboutMultipleUnistyles","displayName","name","contentContainerStyle","scope","useContext","ScopedThemeContext","proxifiedRuntime","proxifiedTheme","addDependencies","useProxifiedUnistyles","__uni","useEffect","styleSecrets","contentContainerStyleSecrets","from","Set","mappingsKey","mappingsProps","uniPropsKey","unistyleProps","uniProps","previousScopedTheme","UnistylesShadowRegistry","getScopedTheme","undefined","setScopedTheme","finalProps","deepMergeObjects","jsx"],"sourceRoot":"../../../../src","sources":["core/withUnistyles/withUnistyles.native.tsx"],"mappings":"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","ignoreList":[]}