react-native-unistyles 3.0.0-alpha.10 → 3.0.0-alpha.12

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.
@@ -22,7 +22,7 @@ struct JSI_EXPORT HostStyle : public jsi::HostObject {
22
22
  private:
23
23
  std::shared_ptr<StyleSheet> _styleSheet;
24
24
  std::shared_ptr<HybridUnistylesRuntime> _unistylesRuntime;
25
- std::vector<std::pair<std::string, std::string>> _variants{};
25
+ std::vector<std::pair<std::string, std::string>> _variants{};
26
26
  };
27
27
 
28
28
  }
@@ -7,6 +7,8 @@
7
7
 
8
8
  namespace margelo::nitro::unistyles::core {
9
9
 
10
+ class StyleSheet;
11
+
10
12
  using namespace facebook;
11
13
 
12
14
  enum class UnistyleType {
@@ -17,8 +19,8 @@ enum class UnistyleType {
17
19
  struct Unistyle {
18
20
  using Shared = std::shared_ptr<Unistyle>;
19
21
 
20
- Unistyle(UnistyleType type, std::string styleKey, jsi::Object& rawObject)
21
- : styleKey{styleKey}, type{type}, rawValue{std::move(rawObject)} {}
22
+ Unistyle(UnistyleType type, std::string styleKey, jsi::Object& rawObject, std::shared_ptr<StyleSheet> styleSheet)
23
+ : styleKey{styleKey}, type{type}, rawValue{std::move(rawObject)}, parent{styleSheet} {}
22
24
  virtual ~Unistyle() = default;
23
25
 
24
26
  Unistyle(const Unistyle&) = delete;
@@ -29,6 +31,7 @@ struct Unistyle {
29
31
  jsi::Object rawValue;
30
32
  std::optional<jsi::Object> parsedStyle;
31
33
  std::vector<UnistyleDependency> dependencies{};
34
+ std::shared_ptr<StyleSheet> parent;
32
35
 
33
36
  inline void addDependency(UnistyleDependency dependency) {
34
37
  // we can't add dependencies if unistyle is sealed
@@ -62,8 +65,8 @@ struct UnistyleDynamicFunction: public Unistyle {
62
65
  // unprocessedValue <- object generated after calling proxy and user's original function
63
66
  // parsedStyle <- parsed with Unistyle's parser
64
67
 
65
- UnistyleDynamicFunction(UnistyleType type, std::string styleKey, jsi::Object& rawObject)
66
- : Unistyle(type, styleKey, rawObject) {}
68
+ UnistyleDynamicFunction(UnistyleType type, std::string styleKey, jsi::Object& rawObject, std::shared_ptr<StyleSheet> styleSheet)
69
+ : Unistyle(type, styleKey, rawObject, styleSheet) {}
67
70
 
68
71
  UnistyleDynamicFunction(const UnistyleDynamicFunction&) = delete;
69
72
  UnistyleDynamicFunction(UnistyleDynamicFunction&& other) = delete;
@@ -21,7 +21,25 @@ inline static Unistyle::Shared unistyleFromValue(jsi::Runtime& rt, const jsi::Va
21
21
  return nullptr;
22
22
  }
23
23
 
24
- return value.getObject(rt).getNativeState<UnistyleWrapper>(rt)->unistyle;
24
+ auto obj = value.getObject(rt);
25
+
26
+ if (!obj.hasNativeState(rt)) {
27
+ throw jsi::JSError(rt, R"(Unistyles: Style is not bound!
28
+
29
+ Potential reasons:
30
+ - You likely used the spread operator on a Unistyle style outside of a JSX component
31
+ - You're mixing React Native's StyleSheet styles with Unistyles styles
32
+
33
+ If you need to merge styles, do it within the style prop of your JSX component:
34
+
35
+ style={{...styles.container, ...styles.otherProp}} or style={[styles.container, styles.otherProp]}
36
+
37
+ Copying a Unistyle style outside of a JSX element will remove its internal C++ state, leading to unexpected behavior.
38
+
39
+ If you're mixing React Native and Unistyle StyleSheet styles, move your static styles into Unistyles to avoid conflicts.)");
40
+ }
41
+
42
+ return obj.getNativeState<UnistyleWrapper>(rt)->unistyle;
25
43
  }
26
44
 
27
45
  inline static jsi::Value valueFromUnistyle(jsi::Runtime& rt, Unistyle::Shared unistyle) {
@@ -35,7 +35,7 @@ RootShadowNode::Unshared core::UnistylesCommitHook::shadowTreeWillCommit(
35
35
  auto affectedNodes = shadow::ShadowTreeManager::findAffectedNodes(*rootNode, shadowLeafUpdates);
36
36
 
37
37
  return std::static_pointer_cast<RootShadowNode>(shadow::ShadowTreeManager::cloneShadowTree(
38
- this->_unistylesRuntime->getRuntime(),
38
+ *this->_rt,
39
39
  *rootNode,
40
40
  shadowLeafUpdates,
41
41
  affectedNodes
@@ -44,11 +44,10 @@ RootShadowNode::Unshared core::UnistylesCommitHook::shadowTreeWillCommit(
44
44
 
45
45
  shadow::ShadowLeafUpdates core::UnistylesCommitHook::getUnistylesUpdates() {
46
46
  auto& registry = core::UnistylesRegistry::get();
47
- auto& rt = this->_unistylesRuntime->getRuntime();
48
47
  auto parser = parser::Parser(this->_unistylesRuntime);
49
- auto dependencyMap = registry.buildDependencyMap(rt);
48
+ auto dependencyMap = registry.buildDependencyMap(*this->_rt);
50
49
 
51
- parser.rebuildUnistylesInDependencyMap(rt, dependencyMap);
50
+ parser.rebuildUnistylesInDependencyMap(*this->_rt, dependencyMap);
52
51
 
53
52
  return parser.dependencyMapToShadowLeafUpdates(dependencyMap);
54
53
  }
@@ -11,8 +11,8 @@ namespace margelo::nitro::unistyles::core {
11
11
  using namespace facebook::react;
12
12
 
13
13
  struct UnistylesCommitHook : public UIManagerCommitHook {
14
- UnistylesCommitHook(std::shared_ptr<UIManager> uiManager, std::shared_ptr<HybridUnistylesRuntime> unistylesRuntime)
15
- : _unistylesRuntime{unistylesRuntime}, _uiManager{uiManager} {
14
+ UnistylesCommitHook(std::shared_ptr<UIManager> uiManager, std::shared_ptr<HybridUnistylesRuntime> unistylesRuntime, jsi::Runtime& rt)
15
+ : _unistylesRuntime{unistylesRuntime}, _uiManager{uiManager}, _rt{&rt} {
16
16
  _uiManager->registerCommitHook(*this);
17
17
  }
18
18
 
@@ -27,6 +27,7 @@ struct UnistylesCommitHook : public UIManagerCommitHook {
27
27
  private:
28
28
  std::shared_ptr<HybridUnistylesRuntime> _unistylesRuntime;
29
29
  std::shared_ptr<UIManager> _uiManager;
30
+ jsi::Runtime* _rt;
30
31
  };
31
32
 
32
33
  }
@@ -25,16 +25,15 @@ void core::UnistylesMountHook::shadowTreeDidMount(RootShadowNode::Shared const &
25
25
  return;
26
26
  }
27
27
 
28
- shadow::ShadowTreeManager::updateShadowTree(this->_unistylesRuntime->getRuntime(), shadowLeafUpdates);
28
+ shadow::ShadowTreeManager::updateShadowTree(*this->_rt, shadowLeafUpdates);
29
29
  }
30
30
 
31
31
  shadow::ShadowLeafUpdates core::UnistylesMountHook::getUnistylesUpdates() {
32
32
  auto& registry = core::UnistylesRegistry::get();
33
- auto& rt = this->_unistylesRuntime->getRuntime();
34
33
  auto parser = parser::Parser(this->_unistylesRuntime);
35
- auto dependencyMap = registry.buildDependencyMap(rt);
34
+ auto dependencyMap = registry.buildDependencyMap(*this->_rt);
36
35
 
37
- parser.rebuildUnistylesInDependencyMap(rt, dependencyMap);
36
+ parser.rebuildUnistylesInDependencyMap(*this->_rt, dependencyMap);
38
37
 
39
38
  return parser.dependencyMapToShadowLeafUpdates(dependencyMap);
40
39
  }
@@ -11,8 +11,8 @@ namespace margelo::nitro::unistyles::core {
11
11
  using namespace facebook::react;
12
12
 
13
13
  struct UnistylesMountHook : public UIManagerMountHook {
14
- UnistylesMountHook(std::shared_ptr<UIManager> uiManager, std::shared_ptr<HybridUnistylesRuntime> unistylesRuntime)
15
- : _unistylesRuntime{unistylesRuntime}, _uiManager{uiManager} {
14
+ UnistylesMountHook(std::shared_ptr<UIManager> uiManager, std::shared_ptr<HybridUnistylesRuntime> unistylesRuntime, jsi::Runtime& rt)
15
+ : _unistylesRuntime{unistylesRuntime}, _uiManager{uiManager}, _rt{&rt} {
16
16
  _uiManager->registerMountHook(*this);
17
17
  }
18
18
 
@@ -23,6 +23,7 @@ struct UnistylesMountHook : public UIManagerMountHook {
23
23
  shadow::ShadowLeafUpdates getUnistylesUpdates();
24
24
 
25
25
  private:
26
+ jsi::Runtime* _rt;
26
27
  std::shared_ptr<HybridUnistylesRuntime> _unistylesRuntime;
27
28
  std::shared_ptr<UIManager> _uiManager;
28
29
  };
@@ -72,26 +72,31 @@ void core::UnistylesRegistry::updateTheme(jsi::Runtime& rt, std::string& themeNa
72
72
  }
73
73
 
74
74
  void core::UnistylesRegistry::linkShadowNodeWithUnistyle(
75
+ jsi::Runtime& rt,
75
76
  const ShadowNodeFamily* shadowNodeFamily,
76
77
  const core::Unistyle::Shared unistyle,
77
78
  Variants& variants,
78
79
  std::vector<folly::dynamic>& arguments
79
80
  ) {
80
- if (!this->_shadowRegistry.contains(shadowNodeFamily)) {
81
- this->_shadowRegistry[shadowNodeFamily] = {};
81
+ if (!this->_shadowRegistry[&rt].contains(shadowNodeFamily)) {
82
+ this->_shadowRegistry[&rt][shadowNodeFamily] = {};
82
83
  }
83
84
 
84
- this->_shadowRegistry[shadowNodeFamily].emplace_back(std::make_shared<UnistyleData>(unistyle, variants, arguments));
85
+ this->_shadowRegistry[&rt][shadowNodeFamily].emplace_back(std::make_shared<UnistyleData>(unistyle, variants, arguments));
85
86
  }
86
87
 
87
- void core::UnistylesRegistry::unlinkShadowNodeWithUnistyle(const ShadowNodeFamily* shadowNodeFamily, const core::Unistyle::Shared unistyle) {
88
- auto& unistylesVec = this->_shadowRegistry[shadowNodeFamily];
88
+ void core::UnistylesRegistry::unlinkShadowNodeWithUnistyle(
89
+ jsi::Runtime& rt,
90
+ const ShadowNodeFamily* shadowNodeFamily,
91
+ const core::Unistyle::Shared unistyle
92
+ ) {
93
+ auto& unistylesVec = this->_shadowRegistry[&rt][shadowNodeFamily];
89
94
  auto it = std::find_if(unistylesVec.begin(), unistylesVec.end(), [unistyle](std::shared_ptr<UnistyleData> unistyleData){
90
95
  return unistyleData->unistyle == unistyle;
91
96
  });
92
97
 
93
98
  if (it != unistylesVec.end()) {
94
- this->_shadowRegistry[shadowNodeFamily].erase(it);
99
+ this->_shadowRegistry[&rt][shadowNodeFamily].erase(it);
95
100
  }
96
101
  }
97
102
 
@@ -105,13 +110,11 @@ core::DependencyMap core::UnistylesRegistry::buildDependencyMap(jsi::Runtime& rt
105
110
  DependencyMap dependencyMap;
106
111
  std::set<UnistyleDependency> uniqueDependencies(deps.begin(), deps.end());
107
112
 
108
- for (const auto& [_, styleSheet] : this->_styleSheetRegistry[&rt]) {
109
- for (const auto& [_, unistyle] : styleSheet->unistyles) {
110
- // check if in the given stylesheet we have unistyle
111
- // that depends on something affected
113
+ for (const auto& [family, unistyles] : this->_shadowRegistry[&rt]) {
114
+ for (const auto& unistyleData : unistyles) {
112
115
  bool hasAnyOfDependencies = std::any_of(
113
- unistyle->dependencies.begin(),
114
- unistyle->dependencies.end(),
116
+ unistyleData->unistyle->dependencies.begin(),
117
+ unistyleData->unistyle->dependencies.end(),
115
118
  [&uniqueDependencies](UnistyleDependency dep) {
116
119
  return std::find(uniqueDependencies.begin(), uniqueDependencies.end(), dep) != uniqueDependencies.end();
117
120
  }
@@ -121,18 +124,13 @@ core::DependencyMap core::UnistylesRegistry::buildDependencyMap(jsi::Runtime& rt
121
124
  continue;
122
125
  }
123
126
 
124
- // if so, we need to find shadow family too
125
- for (const auto& pair : this->_shadowRegistry) {
126
- const auto& [family, unistyles] = pair;
127
-
128
- for (const auto& unistyleData : unistyles) {
129
- if (unistyle != unistyleData->unistyle) {
130
- continue;
131
- }
132
-
133
- dependencyMap[styleSheet][family].emplace_back(unistyleData);
134
- }
127
+ // we need to take in count all unistyles from the shadowNode
128
+ // as user might be using spreads and not all of them may have dependencies
129
+ for (const auto& unistyleData : unistyles) {
130
+ dependencyMap[family].emplace_back(unistyleData);
135
131
  }
132
+
133
+ break;
136
134
  }
137
135
  }
138
136
 
@@ -142,19 +140,9 @@ core::DependencyMap core::UnistylesRegistry::buildDependencyMap(jsi::Runtime& rt
142
140
  core::DependencyMap core::UnistylesRegistry::buildDependencyMap(jsi::Runtime& rt) {
143
141
  DependencyMap dependencyMap;
144
142
 
145
- for (const auto& [_, styleSheet] : this->_styleSheetRegistry[&rt]) {
146
- for (const auto& [_, unistyle] : styleSheet->unistyles) {
147
- for (const auto& pair : this->_shadowRegistry) {
148
- const auto& [family, unistyles] = pair;
149
-
150
- for (const auto& unistyleData : unistyles) {
151
- if (unistyle != unistyleData->unistyle) {
152
- continue;
153
- }
154
-
155
- dependencyMap[styleSheet][family].emplace_back(unistyleData);
156
- }
157
- }
143
+ for (const auto& [family, unistyles] : this->_shadowRegistry[&rt]) {
144
+ for (const auto& unistyleData : unistyles) {
145
+ dependencyMap[family].emplace_back(unistyleData);
158
146
  }
159
147
  }
160
148
 
@@ -19,10 +19,7 @@ struct UnistylesState;
19
19
  using namespace facebook;
20
20
  using namespace facebook::react;
21
21
 
22
- using DependencyMap = std::unordered_map<
23
- std::shared_ptr<core::StyleSheet>,
24
- std::unordered_map<const ShadowNodeFamily*, std::vector<std::shared_ptr<UnistyleData>>>
25
- >;
22
+ using DependencyMap = std::unordered_map<const ShadowNodeFamily*, std::vector<std::shared_ptr<UnistyleData>>>;
26
23
 
27
24
  struct UnistylesRegistry: public StyleSheetRegistry {
28
25
  static UnistylesRegistry& get();
@@ -38,8 +35,8 @@ struct UnistylesRegistry: public StyleSheetRegistry {
38
35
 
39
36
  UnistylesState& getState(jsi::Runtime& rt);
40
37
  void createState(jsi::Runtime& rt);
41
- void linkShadowNodeWithUnistyle(const ShadowNodeFamily*, const core::Unistyle::Shared, Variants& variants, std::vector<folly::dynamic>&);
42
- void unlinkShadowNodeWithUnistyle(const ShadowNodeFamily*, const core::Unistyle::Shared);
38
+ void linkShadowNodeWithUnistyle(jsi::Runtime& rt, const ShadowNodeFamily*, const core::Unistyle::Shared, Variants& variants, std::vector<folly::dynamic>&);
39
+ void unlinkShadowNodeWithUnistyle(jsi::Runtime& rt, const ShadowNodeFamily*, const core::Unistyle::Shared);
43
40
  std::shared_ptr<core::StyleSheet> addStyleSheet(jsi::Runtime& rt, int tag, core::StyleSheetType type, jsi::Object&& rawValue);
44
41
  DependencyMap buildDependencyMap(jsi::Runtime& rt, std::vector<UnistyleDependency>& deps);
45
42
  DependencyMap buildDependencyMap(jsi::Runtime& rt);
@@ -49,7 +46,7 @@ private:
49
46
 
50
47
  std::unordered_map<jsi::Runtime*, UnistylesState> _states{};
51
48
  std::unordered_map<jsi::Runtime*, std::unordered_map<int, std::shared_ptr<core::StyleSheet>>> _styleSheetRegistry{};
52
- std::unordered_map<const ShadowNodeFamily*, std::vector<std::shared_ptr<UnistyleData>>> _shadowRegistry{};
49
+ std::unordered_map<jsi::Runtime*, std::unordered_map<const ShadowNodeFamily*, std::vector<std::shared_ptr<UnistyleData>>>> _shadowRegistry{};
53
50
  };
54
51
 
55
52
  UnistylesRegistry& UnistylesRegistry::get() {
@@ -91,5 +91,5 @@ int core::UnistylesState::parseColor(jsi::Value& maybeColor) {
91
91
  // we must convert it to uint32_t first, otherwise color will be broken
92
92
  uint32_t color = this->_processColorFn.get()->call(*_rt, maybeColor.asString(*_rt)).asNumber();
93
93
 
94
- return color;
94
+ return color ? color : 0;
95
95
  }
@@ -5,29 +5,29 @@ using namespace facebook::react;
5
5
 
6
6
  jsi::Value HybridShadowRegistry::link(jsi::Runtime &rt, const jsi::Value &thisValue, const jsi::Value *args, size_t count) {
7
7
  helpers::assertThat(rt, count == 4, "Unistyles: Invalid babel transform 'ShadowRegistry link' expected 4 arguments.");
8
-
8
+
9
9
  ShadowNode::Shared shadowNodeWrapper = shadowNodeFromValue(rt, args[0]);
10
10
  core::Unistyle::Shared unistyleWrapper = core::unistyleFromValue(rt, args[1]);
11
11
  core::Variants variants = helpers::variantsToPairs(rt, args[2].asObject(rt));
12
12
  auto rawArguments = args[3].asObject(rt).asArray(rt);
13
13
  std::vector<folly::dynamic> arguments = helpers::parseDynamicFunctionArguments(rt, rawArguments);
14
-
14
+
15
15
  auto& registry = core::UnistylesRegistry::get();
16
-
17
- registry.linkShadowNodeWithUnistyle(&shadowNodeWrapper->getFamily(), unistyleWrapper, variants, arguments);
18
-
16
+
17
+ registry.linkShadowNodeWithUnistyle(rt, &shadowNodeWrapper->getFamily(), unistyleWrapper, variants, arguments);
18
+
19
19
  return jsi::Value::undefined();
20
20
  }
21
21
 
22
22
  jsi::Value HybridShadowRegistry::unlink(jsi::Runtime &rt, const jsi::Value &thisValue, const jsi::Value *args, size_t count) {
23
23
  helpers::assertThat(rt, count == 2, "Unistyles: Invalid babel transform 'ShadowRegistry unlink' expected 2 arguments.");
24
-
24
+
25
25
  ShadowNode::Shared shadowNodeWrapper = shadowNodeFromValue(rt, args[0]);
26
26
  core::Unistyle::Shared unistyleWrapper = core::unistyleFromValue(rt, args[1]);
27
-
27
+
28
28
  auto& registry = core::UnistylesRegistry::get();
29
29
 
30
- registry.unlinkShadowNodeWithUnistyle(&shadowNodeWrapper->getFamily(), unistyleWrapper);
31
-
30
+ registry.unlinkShadowNodeWithUnistyle(rt, &shadowNodeWrapper->getFamily(), unistyleWrapper);
31
+
32
32
  return jsi::Value::undefined();
33
33
  }
@@ -72,6 +72,7 @@ jsi::Value HybridStyleSheet::configure(jsi::Runtime &rt, const jsi::Value &thisV
72
72
 
73
73
  verifyAndSelectTheme(rt);
74
74
  loadExternalMethods(thisVal, rt);
75
+ registerHooks(rt);
75
76
 
76
77
  return jsi::Value::undefined();
77
78
  }
@@ -239,3 +240,8 @@ void HybridStyleSheet::onPlatformDependenciesChange(std::vector<UnistyleDependen
239
240
 
240
241
  shadow::ShadowTreeManager::updateShadowTree(rt, shadowLeafUpdates);
241
242
  }
243
+
244
+ void HybridStyleSheet::registerHooks(jsi::Runtime& rt) {
245
+ this->_unistylesCommitHook = std::make_shared<core::UnistylesCommitHook>(this->_uiManager, this->_unistylesRuntime, rt);
246
+ this->_unistylesMountHook = std::make_shared<core::UnistylesMountHook>(this->_uiManager, this->_unistylesRuntime, rt);
247
+ }
@@ -18,9 +18,7 @@ using namespace facebook::react;
18
18
 
19
19
  struct HybridStyleSheet: public HybridUnistylesStyleSheetSpec {
20
20
  HybridStyleSheet(std::shared_ptr<HybridUnistylesRuntime> unistylesRuntime, std::shared_ptr<UIManager> uiManager)
21
- : HybridObject(TAG), _unistylesRuntime{unistylesRuntime} {
22
- this->_unistylesCommitHook = std::make_shared<core::UnistylesCommitHook>(uiManager, unistylesRuntime);
23
- this->_unistylesMountHook = std::make_shared<core::UnistylesMountHook>(uiManager, unistylesRuntime);
21
+ : HybridObject(TAG), _unistylesRuntime{unistylesRuntime}, _uiManager{uiManager} {
24
22
  this->_unistylesRuntime->registerPlatformListener(
25
23
  std::bind(&HybridStyleSheet::onPlatformDependenciesChange, this, std::placeholders::_1)
26
24
  );
@@ -54,11 +52,13 @@ private:
54
52
  void verifyAndSelectTheme(jsi::Runtime &rt);
55
53
  void setThemeFromColorScheme(jsi::Runtime& rt);
56
54
  void loadExternalMethods(const jsi::Value& thisValue, jsi::Runtime& rt);
55
+ void registerHooks(jsi::Runtime& rt);
57
56
  void onPlatformDependenciesChange(std::vector<UnistyleDependency> dependencies);
58
57
 
59
58
  double __unid = -1;
60
59
  std::shared_ptr<HybridUnistylesRuntime> _unistylesRuntime;
61
60
  std::shared_ptr<core::UnistylesCommitHook> _unistylesCommitHook;
62
61
  std::shared_ptr<core::UnistylesMountHook> _unistylesMountHook;
62
+ std::shared_ptr<UIManager> _uiManager;
63
63
  };
64
64
 
@@ -20,7 +20,8 @@ void parser::Parser::buildUnistyles(jsi::Runtime& rt, std::shared_ptr<StyleSheet
20
20
  styleSheet->unistyles[styleKey] = std::make_shared<UnistyleDynamicFunction>(
21
21
  UnistyleType::DynamicFunction,
22
22
  styleKey,
23
- styleValue
23
+ styleValue,
24
+ styleSheet
24
25
  );
25
26
 
26
27
  return;
@@ -29,7 +30,8 @@ void parser::Parser::buildUnistyles(jsi::Runtime& rt, std::shared_ptr<StyleSheet
29
30
  styleSheet->unistyles[styleKey] = std::make_shared<Unistyle>(
30
31
  UnistyleType::Object,
31
32
  styleKey,
32
- styleValue
33
+ styleValue,
34
+ styleSheet
33
35
  );
34
36
  });
35
37
  }
@@ -98,22 +100,22 @@ void parser::Parser::rebuildUnistylesWithVariants(jsi::Runtime& rt, std::shared_
98
100
 
99
101
  // rebuild all unistyles that are affected by platform event
100
102
  void parser::Parser::rebuildUnistylesInDependencyMap(jsi::Runtime& rt, DependencyMap& dependencyMap) {
101
- for (auto& [styleSheet, map] : dependencyMap) {
103
+ for (auto& [shadowNode, unistyles] : dependencyMap) {
104
+ auto styleSheet = unistyles.begin()->get()->unistyle->parent;
105
+
102
106
  jsi::Object unwrappedStyleSheet = this->unwrapStyleSheet(rt, styleSheet);
103
107
 
104
- for (auto& [shadowNode, unistyles] : map) {
105
- for (auto& unistyleData : unistyles) {
106
- auto& unistyle = unistyleData->unistyle;
108
+ for (auto& unistyleData : unistyles) {
109
+ auto& unistyle = unistyleData->unistyle;
107
110
 
108
- // StyleSheet might have styles that are not affected
109
- if (!unwrappedStyleSheet.hasProperty(rt, unistyle->styleKey.c_str())) {
110
- continue;
111
- }
112
-
113
- unistyle->rawValue = unwrappedStyleSheet.getProperty(rt, unistyle->styleKey.c_str()).asObject(rt);
114
- this->rebuildUnistyle(rt, styleSheet, unistyle, unistyleData->variants, unistyleData->dynamicFunctionMetadata);
115
- unistyleData->parsedStyle = jsi::Value(rt, unistyle->parsedStyle.value()).asObject(rt);
111
+ // StyleSheet might have styles that are not affected
112
+ if (!unwrappedStyleSheet.hasProperty(rt, unistyle->styleKey.c_str())) {
113
+ continue;
116
114
  }
115
+
116
+ unistyle->rawValue = unwrappedStyleSheet.getProperty(rt, unistyle->styleKey.c_str()).asObject(rt);
117
+ this->rebuildUnistyle(rt, styleSheet, unistyle, unistyleData->variants, unistyleData->dynamicFunctionMetadata);
118
+ unistyleData->parsedStyle = jsi::Value(rt, unistyle->parsedStyle.value()).asObject(rt);
117
119
  }
118
120
  }
119
121
  }
@@ -148,7 +150,7 @@ void parser::Parser::rebuildUnistyle(jsi::Runtime& rt, std::shared_ptr<StyleShee
148
150
  // call cached function with memoized arguments
149
151
  auto functionResult = unistyleFn->rawValue
150
152
  .asFunction(rt)
151
- .callAsConstructor(rt, argStart, dynamicFunctionMetadata.size())
153
+ .call(rt, argStart, dynamicFunctionMetadata.size())
152
154
  .asObject(rt);
153
155
 
154
156
  unistyleFn->unprocessedValue = std::move(functionResult);
@@ -160,21 +162,11 @@ void parser::Parser::rebuildUnistyle(jsi::Runtime& rt, std::shared_ptr<StyleShee
160
162
  shadow::ShadowLeafUpdates parser::Parser::dependencyMapToShadowLeafUpdates(core::DependencyMap& dependencyMap) {
161
163
  shadow::ShadowLeafUpdates updates;
162
164
  auto& rt = this->_unistylesRuntime->getRuntime();
163
-
164
- for (const auto& [styleSheet, map] : dependencyMap) {
165
- for (const auto& [shadowNode, unistyles] : map) {
166
- for (const auto& unistyleData : unistyles) {
167
- auto rawProps = this->parseStylesToShadowTreeStyles(rt, unistyleData->parsedStyle.value());
168
-
169
- if (updates.contains(shadowNode)) {
170
- updates[shadowNode].emplace_back(std::move(rawProps));
171
-
172
- continue;
173
- }
174
-
175
- updates.emplace(shadowNode, std::vector<RawProps>{std::move(rawProps)});
176
- }
177
- }
165
+
166
+ for (const auto& [shadowNode, unistyles] : dependencyMap) {
167
+ auto rawProps = this->parseStylesToShadowTreeStyles(rt, unistyles);
168
+
169
+ updates.emplace(shadowNode, std::move(rawProps));
178
170
  }
179
171
 
180
172
  return updates;
@@ -539,7 +531,9 @@ bool parser::Parser::shouldApplyCompoundVariants(jsi::Runtime& rt, const Variant
539
531
  auto property = compoundVariant.getProperty(rt, variantKey.c_str());
540
532
  auto propertyName = property.isBool()
541
533
  ? (property.asBool() ? "true" : "false")
542
- : property.asString(rt).utf8(rt);
534
+ : property.isString()
535
+ ? property.asString(rt).utf8(rt)
536
+ : "";
543
537
 
544
538
  if (propertyName != variantValue) {
545
539
  return false;
@@ -617,18 +611,20 @@ jsi::Value parser::Parser::parseSecondLevel(jsi::Runtime &rt, Unistyle::Shared u
617
611
  return parsedStyle;
618
612
  }
619
613
 
620
- // convert jsi::Object to RawValue with int colors
621
- RawProps parser::Parser::parseStylesToShadowTreeStyles(jsi::Runtime& rt, const jsi::Object& styles) {
614
+ // convert unistyles to RawValue with int colors
615
+ RawProps parser::Parser::parseStylesToShadowTreeStyles(jsi::Runtime& rt, const std::vector<std::shared_ptr<UnistyleData>>& unistyles) {
622
616
  jsi::Object convertedStyles = jsi::Object(rt);
623
617
  auto& state = core::UnistylesRegistry::get().getState(rt);
618
+
619
+ for (const auto& unistyleData : unistyles) {
620
+ helpers::enumerateJSIObject(rt, unistyleData->parsedStyle.value(), [&](const std::string& propertyName, jsi::Value& propertyValue){
621
+ if (this->isColor(propertyName)) {
622
+ return convertedStyles.setProperty(rt, propertyName.c_str(), jsi::Value(state.parseColor(propertyValue)));
623
+ }
624
624
 
625
- helpers::enumerateJSIObject(rt, styles, [&](const std::string& propertyName, jsi::Value& propertyValue){
626
- if (this->isColor(propertyName)) {
627
- return convertedStyles.setProperty(rt, propertyName.c_str(), jsi::Value(state.parseColor(propertyValue)));
628
- }
629
-
630
- convertedStyles.setProperty(rt, propertyName.c_str(), propertyValue);
631
- });
625
+ convertedStyles.setProperty(rt, propertyName.c_str(), propertyValue);
626
+ });
627
+ }
632
628
 
633
629
  return RawProps(rt, std::move(convertedStyles));
634
630
  }
@@ -40,7 +40,7 @@ private:
40
40
  jsi::Value getStylesForVariant(jsi::Runtime& rt, const std::string groupName, jsi::Object&& groupValue, std::optional<std::string> selectedVariant, Variants& variants);
41
41
  jsi::Object parseCompoundVariants(jsi::Runtime& rt, Unistyle::Shared unistyle, jsi::Object& obj, Variants& variants);
42
42
  bool shouldApplyCompoundVariants(jsi::Runtime& rt, const Variants& variants, jsi::Object& compoundVariant);
43
- RawProps parseStylesToShadowTreeStyles(jsi::Runtime& rt, const jsi::Object& parsedStyles);
43
+ RawProps parseStylesToShadowTreeStyles(jsi::Runtime& rt, const std::vector<std::shared_ptr<UnistyleData>>& unistyles);
44
44
  bool isColor(const std::string& propertyName);
45
45
 
46
46
  std::shared_ptr<HybridUnistylesRuntime> _unistylesRuntime;
@@ -8,6 +8,6 @@ namespace margelo::nitro::unistyles::shadow {
8
8
  using namespace facebook;
9
9
  using namespace facebook::react;
10
10
 
11
- using ShadowLeafUpdates = std::unordered_map<const ShadowNodeFamily*, std::vector<RawProps>>;
11
+ using ShadowLeafUpdates = std::unordered_map<const ShadowNodeFamily*, RawProps>;
12
12
 
13
13
  }
@@ -106,14 +106,9 @@ ShadowNode::Unshared shadow::ShadowTreeManager::cloneShadowTree(jsi::Runtime& rt
106
106
  *shadowNode.getContextContainer()
107
107
  };
108
108
 
109
- updatedProps = shadowNode.getProps();
110
-
111
- // we may have multiple Unistyles for single node, so we must apply them all
112
- for (const auto& props: rawPropsIt->second) {
113
- updatedProps = shadowNode
114
- .getComponentDescriptor()
115
- .cloneProps(propsParserContext, updatedProps, RawProps(props));
116
- }
109
+ updatedProps = shadowNode
110
+ .getComponentDescriptor()
111
+ .cloneProps(propsParserContext, shadowNode.getProps(), RawProps(rawPropsIt->second));
117
112
  }
118
113
 
119
114
  return shadowNode.clone({
@@ -15,7 +15,7 @@ const findShadowNodeForHandle = handle => {
15
15
  return node;
16
16
  };
17
17
  HybridShadowRegistry.add = (handle, style, variants, args) => {
18
- if (!handle || !style?.__unid) {
18
+ if (!handle) {
19
19
  return;
20
20
  }
21
21
  HybridShadowRegistry.link(findShadowNodeForHandle(handle), style, variants ?? {}, args ?? []);
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeNitroModules","require","HybridShadowRegistry","NitroModules","createHybridObject","findShadowNodeForHandle","handle","node","__internalInstanceHandle","stateNode","getScrollResponder","getNativeScrollRef","Error","add","style","variants","args","__unid","link","remove","unlink","UnistylesShadowRegistry","exports"],"sourceRoot":"../../../../src","sources":["specs/ShadowRegistry/index.ts"],"mappings":";;;;;;AAAA,IAAAA,wBAAA,GAAAC,OAAA;AAaA,MAAMC,oBAAoB,GAAGC,qCAAY,CAACC,kBAAkB,CAAiB,yBAAyB,CAAC;AAEvG,MAAMC,uBAAuB,GAAIC,MAAkB,IAAK;EACpD,MAAMC,IAAI,GAAGD,MAAM,EAAEE,wBAAwB,EAAEC,SAAS,EAAEF,IAAI,IACvDD,MAAM,EAAEI,kBAAkB,GAAG,CAAC,EAAEC,kBAAkB,GAAG,CAAC,EAAEH,wBAAwB,EAAEC,SAAS,EAAEF,IAAI,IACjGD,MAAM,EAAEK,kBAAkB,GAAG,CAAC,EAAEH,wBAAwB,EAAEC,SAAS,EAAEF,IAAI;EAEhF,IAAI,CAACA,IAAI,EAAE;IACP;IACA,MAAM,IAAIK,KAAK,CAAC,uDAAuD,CAAC;EAC5E;EAEA,OAAOL,IAAI;AACf,CAAC;AAEDL,oBAAoB,CAACW,GAAG,GAAG,CAACP,MAAM,EAAEQ,KAAK,EAAEC,QAAQ,EAAEC,IAAI,KAAK;EAC1D,IAAI,CAACV,MAAM,IAAI,CAACQ,KAAK,EAAEG,MAAM,EAAE;IAC3B;EACJ;EAEAf,oBAAoB,CAACgB,IAAI,CAACb,uBAAuB,CAACC,MAAM,CAAC,EAAEQ,KAAK,EAAEC,QAAQ,IAAI,CAAC,CAAC,EAAEC,IAAI,IAAI,EAAE,CAAC;AACjG,CAAC;AAEDd,oBAAoB,CAACiB,MAAM,GAAG,CAACb,MAAM,EAAEQ,KAAK,KAAK;EAC7C,IAAI,CAACR,MAAM,IAAI,CAACQ,KAAK,EAAEG,MAAM,EAAE;IAC3B;EACJ;EAEAf,oBAAoB,CAACkB,MAAM,CAACf,uBAAuB,CAACC,MAAM,CAAC,EAAEQ,KAAK,CAAC;AACvE,CAAC;AAQM,MAAMO,uBAAuB,GAAAC,OAAA,CAAAD,uBAAA,GAAGnB,oBAA4D","ignoreList":[]}
1
+ {"version":3,"names":["_reactNativeNitroModules","require","HybridShadowRegistry","NitroModules","createHybridObject","findShadowNodeForHandle","handle","node","__internalInstanceHandle","stateNode","getScrollResponder","getNativeScrollRef","Error","add","style","variants","args","link","remove","__unid","unlink","UnistylesShadowRegistry","exports"],"sourceRoot":"../../../../src","sources":["specs/ShadowRegistry/index.ts"],"mappings":";;;;;;AAAA,IAAAA,wBAAA,GAAAC,OAAA;AAaA,MAAMC,oBAAoB,GAAGC,qCAAY,CAACC,kBAAkB,CAAiB,yBAAyB,CAAC;AAEvG,MAAMC,uBAAuB,GAAIC,MAAkB,IAAK;EACpD,MAAMC,IAAI,GAAGD,MAAM,EAAEE,wBAAwB,EAAEC,SAAS,EAAEF,IAAI,IACvDD,MAAM,EAAEI,kBAAkB,GAAG,CAAC,EAAEC,kBAAkB,GAAG,CAAC,EAAEH,wBAAwB,EAAEC,SAAS,EAAEF,IAAI,IACjGD,MAAM,EAAEK,kBAAkB,GAAG,CAAC,EAAEH,wBAAwB,EAAEC,SAAS,EAAEF,IAAI;EAEhF,IAAI,CAACA,IAAI,EAAE;IACP;IACA,MAAM,IAAIK,KAAK,CAAC,uDAAuD,CAAC;EAC5E;EAEA,OAAOL,IAAI;AACf,CAAC;AAEDL,oBAAoB,CAACW,GAAG,GAAG,CAACP,MAAM,EAAEQ,KAAK,EAAEC,QAAQ,EAAEC,IAAI,KAAK;EAC1D,IAAI,CAACV,MAAM,EAAE;IACT;EACJ;EAEAJ,oBAAoB,CAACe,IAAI,CAACZ,uBAAuB,CAACC,MAAM,CAAC,EAAEQ,KAAK,EAAEC,QAAQ,IAAI,CAAC,CAAC,EAAEC,IAAI,IAAI,EAAE,CAAC;AACjG,CAAC;AAEDd,oBAAoB,CAACgB,MAAM,GAAG,CAACZ,MAAM,EAAEQ,KAAK,KAAK;EAC7C,IAAI,CAACR,MAAM,IAAI,CAACQ,KAAK,EAAEK,MAAM,EAAE;IAC3B;EACJ;EAEAjB,oBAAoB,CAACkB,MAAM,CAACf,uBAAuB,CAACC,MAAM,CAAC,EAAEQ,KAAK,CAAC;AACvE,CAAC;AAQM,MAAMO,uBAAuB,GAAAC,OAAA,CAAAD,uBAAA,GAAGnB,oBAA4D","ignoreList":[]}
@@ -11,7 +11,7 @@ const findShadowNodeForHandle = handle => {
11
11
  return node;
12
12
  };
13
13
  HybridShadowRegistry.add = (handle, style, variants, args) => {
14
- if (!handle || !style?.__unid) {
14
+ if (!handle) {
15
15
  return;
16
16
  }
17
17
  HybridShadowRegistry.link(findShadowNodeForHandle(handle), style, variants ?? {}, args ?? []);
@@ -1 +1 @@
1
- {"version":3,"names":["NitroModules","HybridShadowRegistry","createHybridObject","findShadowNodeForHandle","handle","node","__internalInstanceHandle","stateNode","getScrollResponder","getNativeScrollRef","Error","add","style","variants","args","__unid","link","remove","unlink","UnistylesShadowRegistry"],"sourceRoot":"../../../../src","sources":["specs/ShadowRegistry/index.ts"],"mappings":";;AAAA,SAASA,YAAY,QAAQ,4BAA4B;AAazD,MAAMC,oBAAoB,GAAGD,YAAY,CAACE,kBAAkB,CAAiB,yBAAyB,CAAC;AAEvG,MAAMC,uBAAuB,GAAIC,MAAkB,IAAK;EACpD,MAAMC,IAAI,GAAGD,MAAM,EAAEE,wBAAwB,EAAEC,SAAS,EAAEF,IAAI,IACvDD,MAAM,EAAEI,kBAAkB,GAAG,CAAC,EAAEC,kBAAkB,GAAG,CAAC,EAAEH,wBAAwB,EAAEC,SAAS,EAAEF,IAAI,IACjGD,MAAM,EAAEK,kBAAkB,GAAG,CAAC,EAAEH,wBAAwB,EAAEC,SAAS,EAAEF,IAAI;EAEhF,IAAI,CAACA,IAAI,EAAE;IACP;IACA,MAAM,IAAIK,KAAK,CAAC,uDAAuD,CAAC;EAC5E;EAEA,OAAOL,IAAI;AACf,CAAC;AAEDJ,oBAAoB,CAACU,GAAG,GAAG,CAACP,MAAM,EAAEQ,KAAK,EAAEC,QAAQ,EAAEC,IAAI,KAAK;EAC1D,IAAI,CAACV,MAAM,IAAI,CAACQ,KAAK,EAAEG,MAAM,EAAE;IAC3B;EACJ;EAEAd,oBAAoB,CAACe,IAAI,CAACb,uBAAuB,CAACC,MAAM,CAAC,EAAEQ,KAAK,EAAEC,QAAQ,IAAI,CAAC,CAAC,EAAEC,IAAI,IAAI,EAAE,CAAC;AACjG,CAAC;AAEDb,oBAAoB,CAACgB,MAAM,GAAG,CAACb,MAAM,EAAEQ,KAAK,KAAK;EAC7C,IAAI,CAACR,MAAM,IAAI,CAACQ,KAAK,EAAEG,MAAM,EAAE;IAC3B;EACJ;EAEAd,oBAAoB,CAACiB,MAAM,CAACf,uBAAuB,CAACC,MAAM,CAAC,EAAEQ,KAAK,CAAC;AACvE,CAAC;AAQD,OAAO,MAAMO,uBAAuB,GAAGlB,oBAA4D","ignoreList":[]}
1
+ {"version":3,"names":["NitroModules","HybridShadowRegistry","createHybridObject","findShadowNodeForHandle","handle","node","__internalInstanceHandle","stateNode","getScrollResponder","getNativeScrollRef","Error","add","style","variants","args","link","remove","__unid","unlink","UnistylesShadowRegistry"],"sourceRoot":"../../../../src","sources":["specs/ShadowRegistry/index.ts"],"mappings":";;AAAA,SAASA,YAAY,QAAQ,4BAA4B;AAazD,MAAMC,oBAAoB,GAAGD,YAAY,CAACE,kBAAkB,CAAiB,yBAAyB,CAAC;AAEvG,MAAMC,uBAAuB,GAAIC,MAAkB,IAAK;EACpD,MAAMC,IAAI,GAAGD,MAAM,EAAEE,wBAAwB,EAAEC,SAAS,EAAEF,IAAI,IACvDD,MAAM,EAAEI,kBAAkB,GAAG,CAAC,EAAEC,kBAAkB,GAAG,CAAC,EAAEH,wBAAwB,EAAEC,SAAS,EAAEF,IAAI,IACjGD,MAAM,EAAEK,kBAAkB,GAAG,CAAC,EAAEH,wBAAwB,EAAEC,SAAS,EAAEF,IAAI;EAEhF,IAAI,CAACA,IAAI,EAAE;IACP;IACA,MAAM,IAAIK,KAAK,CAAC,uDAAuD,CAAC;EAC5E;EAEA,OAAOL,IAAI;AACf,CAAC;AAEDJ,oBAAoB,CAACU,GAAG,GAAG,CAACP,MAAM,EAAEQ,KAAK,EAAEC,QAAQ,EAAEC,IAAI,KAAK;EAC1D,IAAI,CAACV,MAAM,EAAE;IACT;EACJ;EAEAH,oBAAoB,CAACc,IAAI,CAACZ,uBAAuB,CAACC,MAAM,CAAC,EAAEQ,KAAK,EAAEC,QAAQ,IAAI,CAAC,CAAC,EAAEC,IAAI,IAAI,EAAE,CAAC;AACjG,CAAC;AAEDb,oBAAoB,CAACe,MAAM,GAAG,CAACZ,MAAM,EAAEQ,KAAK,KAAK;EAC7C,IAAI,CAACR,MAAM,IAAI,CAACQ,KAAK,EAAEK,MAAM,EAAE;IAC3B;EACJ;EAEAhB,oBAAoB,CAACiB,MAAM,CAACf,uBAAuB,CAACC,MAAM,CAAC,EAAEQ,KAAK,CAAC;AACvE,CAAC;AAQD,OAAO,MAAMO,uBAAuB,GAAGlB,oBAA4D","ignoreList":[]}
@@ -3,7 +3,7 @@ import type { ShadowNode, Unistyle, ViewHandle } from './types';
3
3
  interface ShadowRegistry extends UnistylesShadowRegistrySpec {
4
4
  add(handle?: ViewHandle, style?: Unistyle, variants?: Record<string, string | boolean>, args?: Array<any>): void;
5
5
  remove(handle?: ViewHandle, style?: Unistyle): void;
6
- link(node: ShadowNode, style: Unistyle, variants?: Record<string, string | boolean>, args?: Array<any>): void;
6
+ link(node: ShadowNode, style?: Unistyle, variants?: Record<string, string | boolean>, args?: Array<any>): void;
7
7
  unlink(node: ShadowNode, style: Unistyle): void;
8
8
  }
9
9
  type PrivateMethods = 'add' | 'remove' | 'link' | 'unlink';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/specs/ShadowRegistry/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,IAAI,2BAA2B,EAAE,MAAM,wBAAwB,CAAA;AACpG,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAE/D,UAAU,cAAe,SAAQ,2BAA2B;IAExD,GAAG,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IACjH,MAAM,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IAEpD,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IAC9G,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAA;CAClD;AAiCD,KAAK,cAAc,GACb,KAAK,GACL,QAAQ,GACR,MAAM,GACN,QAAQ,CAAA;AAEd,eAAO,MAAM,uBAAuB,EAA2B,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/specs/ShadowRegistry/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,IAAI,2BAA2B,EAAE,MAAM,wBAAwB,CAAA;AACpG,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAE/D,UAAU,cAAe,SAAQ,2BAA2B;IAExD,GAAG,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IACjH,MAAM,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IAEpD,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IAC/G,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAA;CAClD;AAiCD,KAAK,cAAc,GACb,KAAK,GACL,QAAQ,GACR,MAAM,GACN,QAAQ,CAAA;AAEd,eAAO,MAAM,uBAAuB,EAA2B,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-unistyles",
3
- "version": "3.0.0-alpha.10",
3
+ "version": "3.0.0-alpha.12",
4
4
  "description": "Level up your React Native StyleSheet",
5
5
  "scripts": {
6
6
  "test": "jest",