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

Sign up to get free protection for your applications and to get access to all the features.
@@ -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",