react-native-unistyles 2.0.0-alpha.2 → 2.0.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/ios/UnistylesModule.h +3 -1
  2. package/ios/UnistylesModule.mm +59 -4
  3. package/ios/UnistylesRuntime.h +27 -9
  4. package/ios/UnistylesRuntime.mm +91 -54
  5. package/lib/commonjs/UnistyleRegistry.js +4 -7
  6. package/lib/commonjs/UnistyleRegistry.js.map +1 -1
  7. package/lib/commonjs/UnistylesRuntime.js +24 -13
  8. package/lib/commonjs/UnistylesRuntime.js.map +1 -1
  9. package/lib/commonjs/index.js +2 -2
  10. package/lib/commonjs/types/cxx.js +5 -5
  11. package/lib/commonjs/types/cxx.js.map +1 -1
  12. package/lib/commonjs/useUnistyles.js +5 -7
  13. package/lib/commonjs/useUnistyles.js.map +1 -1
  14. package/lib/module/UnistyleRegistry.js +4 -7
  15. package/lib/module/UnistyleRegistry.js.map +1 -1
  16. package/lib/module/UnistylesRuntime.js +25 -14
  17. package/lib/module/UnistylesRuntime.js.map +1 -1
  18. package/lib/module/index.js +2 -2
  19. package/lib/module/index.js.map +1 -1
  20. package/lib/module/types/cxx.js +4 -4
  21. package/lib/module/types/cxx.js.map +1 -1
  22. package/lib/module/useUnistyles.js +5 -7
  23. package/lib/module/useUnistyles.js.map +1 -1
  24. package/lib/typescript/examples/expo/src/examples/Cxx.d.ts.map +1 -1
  25. package/lib/typescript/src/UnistyleRegistry.d.ts +1 -2
  26. package/lib/typescript/src/UnistyleRegistry.d.ts.map +1 -1
  27. package/lib/typescript/src/UnistylesRuntime.d.ts +12 -8
  28. package/lib/typescript/src/UnistylesRuntime.d.ts.map +1 -1
  29. package/lib/typescript/src/index.d.ts +2 -2
  30. package/lib/typescript/src/index.d.ts.map +1 -1
  31. package/lib/typescript/src/types/cxx.d.ts +14 -11
  32. package/lib/typescript/src/types/cxx.d.ts.map +1 -1
  33. package/lib/typescript/src/useUnistyles.d.ts.map +1 -1
  34. package/package.json +1 -1
  35. package/src/UnistyleRegistry.ts +4 -8
  36. package/src/UnistylesRuntime.ts +26 -15
  37. package/src/index.ts +2 -2
  38. package/src/types/cxx.ts +17 -13
  39. package/src/useUnistyles.ts +5 -6
@@ -1,7 +1,9 @@
1
1
  #import <React/RCTBridgeModule.h>
2
2
  #import <React/RCTEventEmitter.h>
3
+ #import <string>
3
4
 
4
- typedef void(^UnistylesEventHandler)(NSDictionary *);
5
+ typedef void(^UnistylesThemeChangeEvent)(std::string);
6
+ typedef void(^UnistylesBreakpointChangeEvent)(std::string);
5
7
 
6
8
  @interface UnistylesModule : RCTEventEmitter<RCTBridgeModule>
7
9
 
@@ -1,8 +1,10 @@
1
1
  #import "UnistylesModule.h"
2
2
  #import "UnistylesRuntime.h"
3
+ #import "UnistylesModule.h"
4
+
3
5
 
6
+ #import <React/RCTAppearance.h>
4
7
  #import <React/RCTBridge+Private.h>
5
- #import <React/RCTUtils.h>
6
8
  #import <jsi/jsi.h>
7
9
 
8
10
  @implementation UnistylesModule
@@ -19,6 +21,11 @@ RCT_EXPORT_MODULE(Unistyles)
19
21
  selector:@selector(handleOrientationChange:)
20
22
  name:UIDeviceOrientationDidChangeNotification
21
23
  object:nil];
24
+ // todo from iOS 13
25
+ [[NSNotificationCenter defaultCenter] addObserver:self
26
+ selector:@selector(appearanceChanged:)
27
+ name:RCTUserInterfaceStyleDidChangeNotification
28
+ object:nil];
22
29
  }
23
30
  return self;
24
31
  }
@@ -28,10 +35,32 @@ RCT_EXPORT_MODULE(Unistyles)
28
35
  CGFloat screenWidth = [UIScreen mainScreen].bounds.size.width;
29
36
  CGFloat screenHeight = [UIScreen mainScreen].bounds.size.height;
30
37
 
31
- ((UnistylesRuntime*)self.unistylesRuntime)->handleScreenSizeChangeWithWidth(screenWidth, screenHeight);
38
+ ((UnistylesRuntime*)self.unistylesRuntime)->handleScreenSizeChange((int)screenWidth, (int)screenHeight);
32
39
  });
33
40
  }
34
41
 
42
+ - (void)appearanceChanged:(NSNotification *)notification
43
+ {
44
+ std::string colorScheme = [self getColorScheme];
45
+
46
+ ((UnistylesRuntime*)self.unistylesRuntime)->handleAppearanceChange(colorScheme);
47
+ }
48
+
49
+ - (std::string)getColorScheme {
50
+ UIUserInterfaceStyle colorScheme = [UIScreen mainScreen].traitCollection.userInterfaceStyle;
51
+
52
+ // todo enums
53
+ switch (colorScheme) {
54
+ case UIUserInterfaceStyleLight:
55
+ return "light";
56
+ case UIUserInterfaceStyleDark:
57
+ return "dark";
58
+ case UIUserInterfaceStyleUnspecified:
59
+ default:
60
+ return "";
61
+ }
62
+ }
63
+
35
64
  - (void)dealloc {
36
65
  delete (UnistylesRuntime*)self.unistylesRuntime;
37
66
  [[NSNotificationCenter defaultCenter] removeObserver:self];
@@ -92,11 +121,37 @@ RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(install)
92
121
  void registerUnistylesHostObject(jsi::Runtime &runtime, UnistylesModule* weakSelf) {
93
122
  CGFloat initialScreenWidth = [UIScreen mainScreen].bounds.size.width;
94
123
  CGFloat initialScreenHeight = [UIScreen mainScreen].bounds.size.height;
95
- UnistylesEventHandler eventHandler = ^(NSDictionary *body) {
124
+ std::string initalColorScheme = [weakSelf getColorScheme];
125
+ UnistylesThemeChangeEvent onThemeChange = ^(std::string theme) {
126
+ NSString *nextTheme = [NSString stringWithUTF8String:theme.c_str()];
127
+ NSDictionary *body = @{
128
+ @"type": @"theme",
129
+ @"payload": @{
130
+ @"themeName": nextTheme
131
+ }
132
+ };
133
+
134
+ [weakSelf emitEvent:@"onChange" withBody:body];
135
+ };
136
+ UnistylesBreakpointChangeEvent onBreakpointChange = ^(std::string breakpoint) {
137
+ NSString *nextBreakpoint = [NSString stringWithUTF8String:breakpoint.c_str()];
138
+ NSDictionary *body = @{
139
+ @"type": @"breakpoint",
140
+ @"payload": @{
141
+ @"breakpoint": nextBreakpoint
142
+ }
143
+ };
144
+
96
145
  [weakSelf emitEvent:@"onChange" withBody:body];
97
146
  };
98
147
 
99
- auto unistylesRuntime = std::make_shared<UnistylesRuntime>(eventHandler, initialScreenWidth, initialScreenHeight);
148
+ auto unistylesRuntime = std::make_shared<UnistylesRuntime>(
149
+ onThemeChange,
150
+ onBreakpointChange,
151
+ (int)initialScreenWidth,
152
+ (int)initialScreenHeight,
153
+ initalColorScheme
154
+ );
100
155
 
101
156
  weakSelf.unistylesRuntime = unistylesRuntime.get();
102
157
 
@@ -8,23 +8,41 @@ using namespace facebook;
8
8
 
9
9
  class JSI_EXPORT UnistylesRuntime : public jsi::HostObject {
10
10
  private:
11
- UnistylesEventHandler eventHandler;
12
- float screenWidth;
13
- float screenHeight;
11
+ UnistylesThemeChangeEvent onThemeChange;
12
+ UnistylesBreakpointChangeEvent onBreakpointChange;
13
+
14
+ int screenWidth;
15
+ int screenHeight;
16
+ std::string colorScheme;
14
17
 
15
18
  public:
16
- UnistylesRuntime(UnistylesEventHandler handler, CGFloat screenWidth, CGFloat screenHeight)
17
- : eventHandler(handler), screenWidth(screenWidth), screenHeight(screenHeight) {}
19
+ UnistylesRuntime(
20
+ UnistylesThemeChangeEvent onThemeChange,
21
+ UnistylesBreakpointChangeEvent onBreakpointChange,
22
+ float screenWidth,
23
+ float screenHeight,
24
+ std::string colorScheme
25
+ ): onThemeChange(onThemeChange),
26
+ onBreakpointChange(onBreakpointChange),
27
+ screenWidth(screenWidth),
28
+ screenHeight(screenHeight),
29
+ colorScheme(colorScheme) {}
30
+
31
+ bool hasAdaptiveThemes;
32
+ bool supportsAutomaticColorScheme;
18
33
 
19
34
  std::string theme;
20
35
  std::string breakpoint;
21
- std::string colorScheme;
22
- std::vector<std::string> featureFlags;
36
+ std::vector<std::string> themes;
23
37
  std::vector<std::pair<std::string, double>> sortedBreakpointEntries;
24
38
 
25
39
  jsi::Value get(jsi::Runtime&, const jsi::PropNameID& name) override;
26
- std::vector<jsi::PropNameID> getPropertyNames(jsi::Runtime& rt) override;
40
+ void set(jsi::Runtime& runtime, const jsi::PropNameID& propNameId, const jsi::Value& value) override;
41
+ std::vector<jsi::PropNameID> getPropertyNames(jsi::Runtime& runtime) override;
42
+
43
+ void handleScreenSizeChange(int width, int height);
44
+ void handleAppearanceChange(std::string colorScheme);
27
45
 
28
- void handleScreenSizeChangeWithWidth(CGFloat width, CGFloat height);
46
+ jsi::Value getThemeOrFail(jsi::Runtime&);
29
47
  std::string getBreakpointFromScreenWidth(double width, const std::vector<std::pair<std::string, double>>& sortedBreakpointEntries);
30
48
  };
@@ -4,17 +4,20 @@ std::vector<jsi::PropNameID> UnistylesRuntime::getPropertyNames(jsi::Runtime& rt
4
4
  std::vector<jsi::PropNameID> properties;
5
5
 
6
6
  // getters
7
+ properties.push_back(jsi::PropNameID::forUtf8(rt, std::string("screenWidth")));
8
+ properties.push_back(jsi::PropNameID::forUtf8(rt, std::string("screenHeight")));
9
+ properties.push_back(jsi::PropNameID::forUtf8(rt, std::string("hasAdaptiveThemes")));
7
10
  properties.push_back(jsi::PropNameID::forUtf8(rt, std::string("theme")));
8
11
  properties.push_back(jsi::PropNameID::forUtf8(rt, std::string("breakpoint")));
9
12
  properties.push_back(jsi::PropNameID::forUtf8(rt, std::string("colorScheme")));
10
13
  properties.push_back(jsi::PropNameID::forUtf8(rt, std::string("sortedBreakpointPairs")));
11
-
14
+
12
15
  // setters
16
+ properties.push_back(jsi::PropNameID::forUtf8(rt, std::string("themes")));
13
17
  properties.push_back(jsi::PropNameID::forUtf8(rt, std::string("useBreakpoints")));
14
18
  properties.push_back(jsi::PropNameID::forUtf8(rt, std::string("useTheme")));
15
- properties.push_back(jsi::PropNameID::forUtf8(rt, std::string("useColorScheme")));
16
- properties.push_back(jsi::PropNameID::forUtf8(rt, std::string("useFeatureFlags")));
17
-
19
+ properties.push_back(jsi::PropNameID::forUtf8(rt, std::string("useAdaptiveThemes")));
20
+
18
21
  return properties;
19
22
  }
20
23
 
@@ -22,10 +25,22 @@ std::vector<jsi::PropNameID> UnistylesRuntime::getPropertyNames(jsi::Runtime& rt
22
25
  jsi::Value UnistylesRuntime::get(jsi::Runtime& runtime, const jsi::PropNameID& propNameId) {
23
26
  std::string propName = propNameId.utf8(runtime);
24
27
 
28
+ if (propName == "screenWidth") {
29
+ return jsi::Value(this->screenWidth);
30
+ }
31
+
32
+ if (propName == "screenHeight") {
33
+ return jsi::Value(this->screenHeight);
34
+ }
35
+
36
+ if (propName == "hasAdaptiveThemes") {
37
+ return jsi::Value(this->hasAdaptiveThemes);
38
+ }
39
+
25
40
  if (propName == "theme") {
26
41
  return !this->theme.empty()
27
42
  ? jsi::Value(jsi::String::createFromUtf8(runtime, this->theme))
28
- : jsi::Value::undefined();
43
+ : this->getThemeOrFail(runtime);
29
44
  }
30
45
 
31
46
  if (propName == "breakpoint") {
@@ -35,11 +50,9 @@ jsi::Value UnistylesRuntime::get(jsi::Runtime& runtime, const jsi::PropNameID& p
35
50
  }
36
51
 
37
52
  if (propName == "colorScheme") {
38
- return !this->colorScheme.empty()
39
- ? jsi::Value(jsi::String::createFromUtf8(runtime, this->colorScheme))
40
- : jsi::Value::undefined();
53
+ return jsi::Value(jsi::String::createFromUtf8(runtime, this->colorScheme));
41
54
  }
42
-
55
+
43
56
  if (propName == "sortedBreakpointPairs") {
44
57
  std::unique_ptr<jsi::Array> sortedBreakpointEntriesArray = std::make_unique<jsi::Array>(runtime, this->sortedBreakpointEntries.size());
45
58
 
@@ -101,61 +114,63 @@ jsi::Value UnistylesRuntime::get(jsi::Runtime& runtime, const jsi::PropNameID& p
101
114
  NSString *currentTheme = [NSString stringWithUTF8String:themeName.c_str()];
102
115
 
103
116
  this->theme = themeName;
104
-
105
- NSDictionary *body = @{
106
- @"type": @"theme",
107
- @"payload": @{
108
- @"currentTheme": currentTheme
109
- }
110
- };
111
- this->eventHandler(body);
117
+ this->onThemeChange(themeName);
112
118
 
113
119
  return jsi::Value::undefined();
114
120
  }
115
121
  );
116
122
  }
117
123
 
118
- if (propName == "useColorScheme") {
124
+ if (propName == "useAdaptiveThemes") {
119
125
  return jsi::Function::createFromHostFunction(runtime,
120
- jsi::PropNameID::forAscii(runtime, "useColorScheme"),
126
+ jsi::PropNameID::forAscii(runtime, "useAdaptiveThemes"),
121
127
  1,
122
128
  [this](jsi::Runtime &runtime, const jsi::Value &thisVal, const jsi::Value *arguments, size_t count) -> jsi::Value {
123
- std::string colorScheme = arguments[0].asString(runtime).utf8(runtime);
129
+ bool enableAdaptiveThemes = arguments[0].asBool();
124
130
 
125
- this->colorScheme = colorScheme;
131
+ this->hasAdaptiveThemes = enableAdaptiveThemes;
132
+
133
+ if (!enableAdaptiveThemes || !this->supportsAutomaticColorScheme) {
134
+ return jsi::Value::undefined();
135
+ }
136
+
137
+ this->theme = this->colorScheme;
138
+ // this->onThemeChange(this->theme);
126
139
 
127
140
  return jsi::Value::undefined();
128
141
  }
129
142
  );
130
143
  }
131
144
 
132
- if (propName == "useFeatureFlags") {
133
- return jsi::Function::createFromHostFunction(runtime,
134
- jsi::PropNameID::forAscii(runtime, "useFeatureFlags"),
135
- 1,
136
- [this](jsi::Runtime &runtime, const jsi::Value &thisVal, const jsi::Value *arguments, size_t count) -> jsi::Value {
137
- jsi::Array featureFlagsArray = arguments[0].asObject(runtime).asArray(runtime);
138
- size_t length = featureFlagsArray.size(runtime);
139
- std::vector<std::string> featureFlags;
140
- featureFlags.reserve(length);
141
-
142
- for (size_t i = 0; i < length; ++i) {
143
- jsi::Value element = featureFlagsArray.getValueAtIndex(runtime, i);
144
-
145
- if (element.isString()) {
146
- std::string featureFlag = element.asString(runtime).utf8(runtime);
147
- featureFlags.push_back(featureFlag);
148
- }
149
- }
145
+ return jsi::Value::undefined();
146
+ }
150
147
 
151
- this->featureFlags = featureFlags;
152
-
153
- return jsi::Value::undefined();
148
+ void UnistylesRuntime::set(jsi::Runtime& runtime, const jsi::PropNameID& propNameId, const jsi::Value& value) {
149
+ std::string propName = propNameId.utf8(runtime);
150
+
151
+ if (propName == "themes" && value.isObject()) {
152
+ jsi::Array themes = value.asObject(runtime).asArray(runtime);
153
+ std::vector<std::string> themesVector;
154
+ size_t length = themes.size(runtime);
155
+
156
+ for (size_t i = 0; i < length; ++i) {
157
+ jsi::Value element = themes.getValueAtIndex(runtime, i);
158
+
159
+ if (element.isString()) {
160
+ std::string theme = element.asString(runtime).utf8(runtime);
161
+ themesVector.push_back(theme);
154
162
  }
155
- );
163
+ }
164
+
165
+ this->themes = themesVector;
166
+
167
+ bool hasLightTheme = std::find(themesVector.begin(), themesVector.end(), "light") != themesVector.end();
168
+ bool hasDarkTheme = std::find(themesVector.begin(), themesVector.end(), "dark") != themesVector.end();
169
+
170
+ this->supportsAutomaticColorScheme = hasLightTheme && hasDarkTheme;
171
+
172
+ return;
156
173
  }
157
-
158
- return jsi::Value::undefined();
159
174
  }
160
175
 
161
176
  std::string UnistylesRuntime::getBreakpointFromScreenWidth(double width, const std::vector<std::pair<std::string, double>>& sortedBreakpointEntries) {
@@ -171,21 +186,43 @@ std::string UnistylesRuntime::getBreakpointFromScreenWidth(double width, const s
171
186
  return sortedBreakpointEntries.empty() ? "" : sortedBreakpointEntries.back().first;
172
187
  }
173
188
 
174
- void UnistylesRuntime::handleScreenSizeChangeWithWidth(CGFloat width, CGFloat height) {
189
+ void UnistylesRuntime::handleScreenSizeChange(int width, int height) {
190
+ if (width != this->screenWidth) {
191
+ this->screenWidth = width;
192
+ }
193
+
194
+ if (height != this->screenHeight) {
195
+ this->screenHeight = height;
196
+ }
197
+
175
198
  std::string currentBreakpoint = this->breakpoint;
176
199
  std::string nextBreakpoint = this->getBreakpointFromScreenWidth(width, this->sortedBreakpointEntries);
177
200
 
178
201
  if (currentBreakpoint != nextBreakpoint) {
179
202
  this->breakpoint = nextBreakpoint;
203
+ this->onBreakpointChange(nextBreakpoint);
204
+ }
205
+ }
180
206
 
181
- NSString *breakpoint = [NSString stringWithUTF8String:nextBreakpoint.c_str()];
182
- NSDictionary *body = @{
183
- @"type": @"breakpoint",
184
- @"payload": @{
185
- @"currentBreakpoint": breakpoint
186
- }
187
- };
207
+ void UnistylesRuntime::handleAppearanceChange(std::string colorScheme) {
208
+ this->colorScheme = colorScheme;
209
+
210
+ if (!this->supportsAutomaticColorScheme || !this->hasAdaptiveThemes) {
211
+ return;
212
+ }
213
+
214
+ this->theme = this->colorScheme;
215
+ this->onThemeChange(this->theme);
216
+ }
217
+
218
+ jsi::Value UnistylesRuntime::getThemeOrFail(jsi::Runtime& runtime) {
219
+ if (this->themes.size() == 1) {
220
+ std::string themeName = this->themes.at(0);
221
+
222
+ this->theme = themeName;
188
223
 
189
- this->eventHandler(body);
224
+ return jsi::String::createFromUtf8(runtime, themeName);
190
225
  }
226
+
227
+ return jsi::Value().undefined();
191
228
  }
@@ -5,16 +5,16 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.UnistyleRegistry = void 0;
7
7
  class UnistyleRegistry {
8
- isClosed = false;
8
+ config = {};
9
9
  themes = {};
10
10
  breakpoints = {};
11
11
  sortedBreakpointPairs = [];
12
- config = {};
13
12
  constructor(unistylesBridge) {
14
13
  this.unistylesBridge = unistylesBridge;
15
14
  }
16
15
  addThemes = themes => {
17
16
  this.themes = themes;
17
+ this.unistylesBridge.themes = Object.keys(themes);
18
18
  return this;
19
19
  };
20
20
  addBreakpoints = breakpoints => {
@@ -24,11 +24,8 @@ class UnistyleRegistry {
24
24
  };
25
25
  addConfig = config => {
26
26
  this.config = config;
27
- if (config.featureFlags && config.featureFlags.length > 0) {
28
- this.unistylesBridge.useFeatureFlags(config.featureFlags);
29
- }
30
- if (config.colorScheme) {
31
- this.unistylesBridge.useColorScheme(config.colorScheme);
27
+ if (config.adaptiveThemes) {
28
+ this.unistylesBridge.useAdaptiveThemes(config.adaptiveThemes);
32
29
  }
33
30
  return this;
34
31
  };
@@ -1 +1 @@
1
- {"version":3,"names":["UnistyleRegistry","isClosed","themes","breakpoints","sortedBreakpointPairs","config","constructor","unistylesBridge","addThemes","addBreakpoints","useBreakpoints","addConfig","featureFlags","length","useFeatureFlags","colorScheme","useColorScheme","exports"],"sourceRoot":"../../src","sources":["UnistyleRegistry.ts"],"mappings":";;;;;;AAGO,MAAMA,gBAAgB,CAAC;EACnBC,QAAQ,GAAG,KAAK;EAChBC,MAAM,GAAoB,CAAC,CAAC;EAC5BC,WAAW,GAAyB,CAAC,CAAC;EACtCC,qBAAqB,GAA0F,EAAE;EACjHC,MAAM,GAAoB,CAAC,CAAC;EAEnCC,WAAWA,CAASC,eAAgC,EAAE;IAAA,KAAlCA,eAAgC,GAAhCA,eAAgC;EAAG;EAEhDC,SAAS,GAAIN,MAAuB,IAAK;IAC5C,IAAI,CAACA,MAAM,GAAGA,MAAM;IAEpB,OAAO,IAAI;EACf,CAAC;EAEMO,cAAc,GAAIN,WAAiC,IAAK;IAC3D,IAAI,CAACI,eAAe,CAACG,cAAc,CAACP,WAAW,CAAC;IAChD,IAAI,CAACC,qBAAqB,GAAG,IAAI,CAACG,eAAe,CAACH,qBAAqB;IAEvE,OAAO,IAAI;EACf,CAAC;EAEMO,SAAS,GAAIN,MAAuB,IAAK;IAC5C,IAAI,CAACA,MAAM,GAAGA,MAAM;IAEpB,IAAIA,MAAM,CAACO,YAAY,IAAIP,MAAM,CAACO,YAAY,CAACC,MAAM,GAAG,CAAC,EAAE;MACvD,IAAI,CAACN,eAAe,CAACO,eAAe,CAACT,MAAM,CAACO,YAAY,CAAC;IAC7D;IAEA,IAAIP,MAAM,CAACU,WAAW,EAAE;MACpB,IAAI,CAACR,eAAe,CAACS,cAAc,CAACX,MAAM,CAACU,WAAW,CAAC;IAC3D;IAEA,OAAO,IAAI;EACf,CAAC;AACL;AAACE,OAAA,CAAAjB,gBAAA,GAAAA,gBAAA"}
1
+ {"version":3,"names":["UnistyleRegistry","config","themes","breakpoints","sortedBreakpointPairs","constructor","unistylesBridge","addThemes","Object","keys","addBreakpoints","useBreakpoints","addConfig","adaptiveThemes","useAdaptiveThemes","exports"],"sourceRoot":"../../src","sources":["UnistyleRegistry.ts"],"mappings":";;;;;;AAGO,MAAMA,gBAAgB,CAAC;EACnBC,MAAM,GAAoB,CAAC,CAAC;EAC5BC,MAAM,GAAoB,CAAC,CAAC;EAC5BC,WAAW,GAAyB,CAAC,CAAC;EACtCC,qBAAqB,GAA0F,EAAE;EAExHC,WAAWA,CAASC,eAAgC,EAAE;IAAA,KAAlCA,eAAgC,GAAhCA,eAAgC;EAAG;EAEhDC,SAAS,GAAIL,MAAuB,IAAK;IAC5C,IAAI,CAACA,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACI,eAAe,CAACJ,MAAM,GAAGM,MAAM,CAACC,IAAI,CAACP,MAAM,CAAiC;IAEjF,OAAO,IAAI;EACf,CAAC;EAEMQ,cAAc,GAAIP,WAAiC,IAAK;IAC3D,IAAI,CAACG,eAAe,CAACK,cAAc,CAACR,WAAW,CAAC;IAChD,IAAI,CAACC,qBAAqB,GAAG,IAAI,CAACE,eAAe,CAACF,qBAAqB;IAEvE,OAAO,IAAI;EACf,CAAC;EAEMQ,SAAS,GAAIX,MAAuB,IAAK;IAC5C,IAAI,CAACA,MAAM,GAAGA,MAAM;IAEpB,IAAIA,MAAM,CAACY,cAAc,EAAE;MACvB,IAAI,CAACP,eAAe,CAACQ,iBAAiB,CAACb,MAAM,CAACY,cAAc,CAAC;IACjE;IAEA,OAAO,IAAI;EACf,CAAC;AACL;AAACE,OAAA,CAAAf,gBAAA,GAAAA,gBAAA"}
@@ -13,40 +13,51 @@ class UnistylesRuntime {
13
13
  get colorScheme() {
14
14
  return this.unistylesBridge.colorScheme;
15
15
  }
16
- get breakpoints() {
17
- return this.registry.breakpoints;
16
+ get hasAdaptiveThemes() {
17
+ return this.unistylesBridge.hasAdaptiveThemes;
18
18
  }
19
19
  get sortedBreakpoints() {
20
20
  return this.registry.sortedBreakpointPairs;
21
21
  }
22
- get config() {
23
- return this.registry.config;
24
- }
25
- get theme() {
22
+ get themeName() {
26
23
  return this.unistylesBridge.theme;
27
24
  }
28
- get currentBreakpoint() {
25
+ get breakpoint() {
29
26
  return this.unistylesBridge.breakpoint;
30
27
  }
31
- setColorScheme = scheme => {
32
- if (scheme !== this.colorScheme) {
33
- this.unistylesBridge.useColorScheme(scheme);
28
+ get screen() {
29
+ return {
30
+ width: this.unistylesBridge.screenWidth,
31
+ height: this.unistylesBridge.screenHeight
32
+ };
33
+ }
34
+ get orientation() {
35
+ const {
36
+ width,
37
+ height
38
+ } = this.screen;
39
+ if (width > height) {
40
+ return _types.ScreenOrientation.Landscape;
34
41
  }
35
- };
42
+ return _types.ScreenOrientation.Portrait;
43
+ }
36
44
  setTheme = name => {
37
- if (name !== this.theme && this.hasTheme(name)) {
45
+ if (name !== this.themeName && this.hasTheme(name)) {
38
46
  this.unistylesBridge.useTheme(name);
39
47
  return true;
40
48
  }
41
49
  return false;
42
50
  };
43
- hasTheme = name => name in this.registry.themes;
44
51
  getTheme = forName => {
45
52
  if (!this.hasTheme(forName)) {
46
53
  throw new Error(_types.UnistylesError.ThemeNotFound);
47
54
  }
48
55
  return this.registry.themes[forName];
49
56
  };
57
+ setAdaptiveThemes = enable => {
58
+ this.unistylesBridge.useAdaptiveThemes(enable);
59
+ };
60
+ hasTheme = name => name in this.registry.themes;
50
61
  }
51
62
  exports.UnistylesRuntime = UnistylesRuntime;
52
63
  //# sourceMappingURL=UnistylesRuntime.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_types","require","UnistylesRuntime","constructor","unistylesBridge","registry","colorScheme","breakpoints","sortedBreakpoints","sortedBreakpointPairs","config","theme","currentBreakpoint","breakpoint","setColorScheme","scheme","useColorScheme","setTheme","name","hasTheme","useTheme","themes","getTheme","forName","Error","UnistylesError","ThemeNotFound","exports"],"sourceRoot":"../../src","sources":["UnistylesRuntime.ts"],"mappings":";;;;;;AAEA,IAAAA,MAAA,GAAAC,OAAA;AAGO,MAAMC,gBAAgB,CAAC;EAC1BC,WAAWA,CAASC,eAAgC,EAAUC,QAA0B,EAAE;IAAA,KAAtED,eAAgC,GAAhCA,eAAgC;IAAA,KAAUC,QAA0B,GAA1BA,QAA0B;EAAG;EAE3F,IAAWC,WAAWA,CAAA,EAAG;IACrB,OAAO,IAAI,CAACF,eAAe,CAACE,WAAW;EAC3C;EAEA,IAAWC,WAAWA,CAAA,EAAG;IACrB,OAAO,IAAI,CAACF,QAAQ,CAACE,WAAW;EACpC;EAEA,IAAWC,iBAAiBA,CAAA,EAAG;IAC3B,OAAO,IAAI,CAACH,QAAQ,CAACI,qBAAqB;EAC9C;EAEA,IAAWC,MAAMA,CAAA,EAAG;IAChB,OAAO,IAAI,CAACL,QAAQ,CAACK,MAAM;EAC/B;EAEA,IAAWC,KAAKA,CAAA,EAAG;IACf,OAAO,IAAI,CAACP,eAAe,CAACO,KAAK;EACrC;EAEA,IAAWC,iBAAiBA,CAAA,EAAG;IAC3B,OAAO,IAAI,CAACR,eAAe,CAACS,UAAU;EAC1C;EAEOC,cAAc,GAAIC,MAA4B,IAAK;IACtD,IAAIA,MAAM,KAAK,IAAI,CAACT,WAAW,EAAE;MAC7B,IAAI,CAACF,eAAe,CAACY,cAAc,CAACD,MAAM,CAAC;IAC/C;EACJ,CAAC;EAEME,QAAQ,GAAIC,IAA2B,IAAK;IAC/C,IAAIA,IAAI,KAAK,IAAI,CAACP,KAAK,IAAI,IAAI,CAACQ,QAAQ,CAACD,IAAI,CAAC,EAAE;MAC5C,IAAI,CAACd,eAAe,CAACgB,QAAQ,CAACF,IAAI,CAAC;MAEnC,OAAO,IAAI;IACf;IAEA,OAAO,KAAK;EAChB,CAAC;EAEMC,QAAQ,GAAID,IAA2B,IAAKA,IAAI,IAAI,IAAI,CAACb,QAAQ,CAACgB,MAAM;EAExEC,QAAQ,GAAIC,OAA8B,IAAK;IAClD,IAAI,CAAC,IAAI,CAACJ,QAAQ,CAACI,OAAO,CAAC,EAAE;MACzB,MAAM,IAAIC,KAAK,CAACC,qBAAc,CAACC,aAAa,CAAC;IACjD;IAEA,OAAO,IAAI,CAACrB,QAAQ,CAACgB,MAAM,CAACE,OAAO,CAAC;EACxC,CAAC;AACL;AAACI,OAAA,CAAAzB,gBAAA,GAAAA,gBAAA"}
1
+ {"version":3,"names":["_types","require","UnistylesRuntime","constructor","unistylesBridge","registry","colorScheme","hasAdaptiveThemes","sortedBreakpoints","sortedBreakpointPairs","themeName","theme","breakpoint","screen","width","screenWidth","height","screenHeight","orientation","ScreenOrientation","Landscape","Portrait","setTheme","name","hasTheme","useTheme","getTheme","forName","Error","UnistylesError","ThemeNotFound","themes","setAdaptiveThemes","enable","useAdaptiveThemes","exports"],"sourceRoot":"../../src","sources":["UnistylesRuntime.ts"],"mappings":";;;;;;AAEA,IAAAA,MAAA,GAAAC,OAAA;AAGO,MAAMC,gBAAgB,CAAC;EAC1BC,WAAWA,CAASC,eAAgC,EAAUC,QAA0B,EAAE;IAAA,KAAtED,eAAgC,GAAhCA,eAAgC;IAAA,KAAUC,QAA0B,GAA1BA,QAA0B;EAAG;EAE3F,IAAWC,WAAWA,CAAA,EAAG;IACrB,OAAO,IAAI,CAACF,eAAe,CAACE,WAAW;EAC3C;EAEA,IAAWC,iBAAiBA,CAAA,EAAG;IAC3B,OAAO,IAAI,CAACH,eAAe,CAACG,iBAAiB;EACjD;EAEA,IAAWC,iBAAiBA,CAAA,EAAG;IAC3B,OAAO,IAAI,CAACH,QAAQ,CAACI,qBAAqB;EAC9C;EAEA,IAAWC,SAASA,CAAA,EAAG;IACnB,OAAO,IAAI,CAACN,eAAe,CAACO,KAAK;EACrC;EAEA,IAAWC,UAAUA,CAAA,EAAG;IACpB,OAAO,IAAI,CAACR,eAAe,CAACQ,UAAU;EAC1C;EAEA,IAAWC,MAAMA,CAAA,EAAG;IAChB,OAAO;MACHC,KAAK,EAAE,IAAI,CAACV,eAAe,CAACW,WAAW;MACvCC,MAAM,EAAE,IAAI,CAACZ,eAAe,CAACa;IACjC,CAAC;EACL;EAEA,IAAWC,WAAWA,CAAA,EAAG;IACrB,MAAM;MAAEJ,KAAK;MAAEE;IAAO,CAAC,GAAG,IAAI,CAACH,MAAM;IAErC,IAAIC,KAAK,GAAGE,MAAM,EAAE;MAChB,OAAOG,wBAAiB,CAACC,SAAS;IACtC;IAEA,OAAOD,wBAAiB,CAACE,QAAQ;EACrC;EAEOC,QAAQ,GAAIC,IAA2B,IAAK;IAC/C,IAAIA,IAAI,KAAK,IAAI,CAACb,SAAS,IAAI,IAAI,CAACc,QAAQ,CAACD,IAAI,CAAC,EAAE;MAChD,IAAI,CAACnB,eAAe,CAACqB,QAAQ,CAACF,IAAI,CAAC;MAEnC,OAAO,IAAI;IACf;IAEA,OAAO,KAAK;EAChB,CAAC;EAEMG,QAAQ,GAAIC,OAA8B,IAAK;IAClD,IAAI,CAAC,IAAI,CAACH,QAAQ,CAACG,OAAO,CAAC,EAAE;MACzB,MAAM,IAAIC,KAAK,CAACC,qBAAc,CAACC,aAAa,CAAC;IACjD;IAEA,OAAO,IAAI,CAACzB,QAAQ,CAAC0B,MAAM,CAACJ,OAAO,CAAC;EACxC,CAAC;EAEMK,iBAAiB,GAAIC,MAAe,IAAK;IAC5C,IAAI,CAAC7B,eAAe,CAAC8B,iBAAiB,CAACD,MAAM,CAAC;EAClD,CAAC;EAEOT,QAAQ,GAAID,IAA2B,IAAKA,IAAI,IAAI,IAAI,CAAClB,QAAQ,CAAC0B,MAAM;AACpF;AAACI,OAAA,CAAAjC,gBAAA,GAAAA,gBAAA"}
@@ -3,10 +3,10 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- Object.defineProperty(exports, "UnistylesColorScheme", {
6
+ Object.defineProperty(exports, "ScreenOrientation", {
7
7
  enumerable: true,
8
8
  get: function () {
9
- return _types.UnistylesColorScheme;
9
+ return _types.ScreenOrientation;
10
10
  }
11
11
  });
12
12
  exports.UnistylesRuntime = exports.UnistylesRegistry = void 0;
@@ -3,11 +3,11 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.UnistylesError = exports.UnistylesColorScheme = exports.CxxUnistylesEventTypes = void 0;
7
- let UnistylesColorScheme = exports.UnistylesColorScheme = /*#__PURE__*/function (UnistylesColorScheme) {
8
- UnistylesColorScheme["System"] = "system";
9
- UnistylesColorScheme["Manual"] = "manual";
10
- return UnistylesColorScheme;
6
+ exports.UnistylesError = exports.ScreenOrientation = exports.CxxUnistylesEventTypes = void 0;
7
+ let ScreenOrientation = exports.ScreenOrientation = /*#__PURE__*/function (ScreenOrientation) {
8
+ ScreenOrientation[ScreenOrientation["Portrait"] = 1] = "Portrait";
9
+ ScreenOrientation[ScreenOrientation["Landscape"] = 2] = "Landscape";
10
+ return ScreenOrientation;
11
11
  }({});
12
12
  let CxxUnistylesEventTypes = exports.CxxUnistylesEventTypes = /*#__PURE__*/function (CxxUnistylesEventTypes) {
13
13
  CxxUnistylesEventTypes["Theme"] = "theme";
@@ -1 +1 @@
1
- {"version":3,"names":["UnistylesColorScheme","exports","CxxUnistylesEventTypes","UnistylesError"],"sourceRoot":"../../../src","sources":["types/cxx.ts"],"mappings":";;;;;;IAGYA,oBAAoB,GAAAC,OAAA,CAAAD,oBAAA,0BAApBA,oBAAoB;EAApBA,oBAAoB;EAApBA,oBAAoB;EAAA,OAApBA,oBAAoB;AAAA;AAAA,IAwBpBE,sBAAsB,GAAAD,OAAA,CAAAC,sBAAA,0BAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAA,OAAtBA,sBAAsB;AAAA;AAAA,IA8BtBC,cAAc,GAAAF,OAAA,CAAAE,cAAA,0BAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAA,OAAdA,cAAc;AAAA"}
1
+ {"version":3,"names":["ScreenOrientation","exports","CxxUnistylesEventTypes","UnistylesError"],"sourceRoot":"../../../src","sources":["types/cxx.ts"],"mappings":";;;;;;IASYA,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,0BAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA;AAAA,IAsBjBE,sBAAsB,GAAAD,OAAA,CAAAC,sBAAA,0BAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAA,OAAtBA,sBAAsB;AAAA;AAAA,IA8BtBC,cAAc,GAAAF,OAAA,CAAAE,cAAA,0BAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAA,OAAdA,cAAc;AAAA"}
@@ -10,8 +10,8 @@ var _types = require("./types");
10
10
  var _Unistyles = require("./Unistyles");
11
11
  const unistylesEvents = new _reactNative.NativeEventEmitter(_reactNative.NativeModules.Unistyles);
12
12
  const useUnistyles = () => {
13
- const [theme, setTheme] = (0, _react.useState)(_Unistyles.unistyles.runtime.getTheme(_Unistyles.unistyles.runtime.theme));
14
- const [breakpoint, setBreakpoint] = (0, _react.useState)(_Unistyles.unistyles.runtime.currentBreakpoint);
13
+ const [theme, setTheme] = (0, _react.useState)(_Unistyles.unistyles.runtime.getTheme(_Unistyles.unistyles.runtime.themeName));
14
+ const [breakpoint, setBreakpoint] = (0, _react.useState)(_Unistyles.unistyles.runtime.breakpoint);
15
15
  const [screenSize, setScreenSize] = (0, _react.useState)({
16
16
  width: 0,
17
17
  height: 0
@@ -22,9 +22,10 @@ const useUnistyles = () => {
22
22
  case _types.CxxUnistylesEventTypes.Theme:
23
23
  {
24
24
  const themeEvent = event;
25
- setTheme(_Unistyles.unistyles.runtime.getTheme(themeEvent.payload.currentTheme));
25
+ setTheme(_Unistyles.unistyles.runtime.getTheme(themeEvent.payload.themeName));
26
26
  return;
27
27
  }
28
+ // this event is not available on mobile
28
29
  case _types.CxxUnistylesEventTypes.Size:
29
30
  {
30
31
  const sizeEvent = event;
@@ -32,15 +33,12 @@ const useUnistyles = () => {
32
33
  width: sizeEvent.payload.width,
33
34
  height: sizeEvent.payload.height
34
35
  });
35
- // todo
36
- // setBreakpoint(unistyles.runtime.currentBreakpoint)
37
-
38
36
  return;
39
37
  }
40
38
  case _types.CxxUnistylesEventTypes.Breakpoint:
41
39
  {
42
40
  const breakpointEvent = event;
43
- setBreakpoint(breakpointEvent.payload.currentBreakpoint);
41
+ setBreakpoint(breakpointEvent.payload.breakpoint);
44
42
  return;
45
43
  }
46
44
  default:
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_react","_types","_Unistyles","unistylesEvents","NativeEventEmitter","NativeModules","Unistyles","useUnistyles","theme","setTheme","useState","unistyles","runtime","getTheme","breakpoint","setBreakpoint","currentBreakpoint","screenSize","setScreenSize","width","height","useEffect","subscription","addListener","event","type","CxxUnistylesEventTypes","Theme","themeEvent","payload","currentTheme","Size","sizeEvent","Breakpoint","breakpointEvent","remove","exports"],"sourceRoot":"../../src","sources":["useUnistyles.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAOA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AAEA,MAAMI,eAAe,GAAG,IAAIC,+BAAkB,CAACC,0BAAa,CAACC,SAAS,CAAC;AAEhE,MAAMC,YAAY,GAAGA,CAAA,KAAM;EAC9B,MAAM,CAACC,KAAK,EAAEC,QAAQ,CAAC,GAAG,IAAAC,eAAQ,EAACC,oBAAS,CAACC,OAAO,CAACC,QAAQ,CAACF,oBAAS,CAACC,OAAO,CAACJ,KAAK,CAAC,CAAC;EACvF,MAAM,CAACM,UAAU,EAAEC,aAAa,CAAC,GAAG,IAAAL,eAAQ,EAACC,oBAAS,CAACC,OAAO,CAACI,iBAAiB,CAAC;EACjF,MAAM,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAG,IAAAR,eAAQ,EAAC;IACzCS,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE;EACZ,CAAC,CAAC;EAEF,IAAAC,gBAAS,EAAC,MAAM;IACZ,MAAMC,YAAY,GAAGnB,eAAe,CAACoB,WAAW,CAC5C,UAAU,EACTC,KAAsB,IAAK;MACxB,QAAQA,KAAK,CAACC,IAAI;QACd,KAAKC,6BAAsB,CAACC,KAAK;UAAE;YAC/B,MAAMC,UAAU,GAAGJ,KAA+B;YAElDf,QAAQ,CAACE,oBAAS,CAACC,OAAO,CAACC,QAAQ,CAACe,UAAU,CAACC,OAAO,CAACC,YAAY,CAAC,CAAC;YAErE;UACJ;QACA,KAAKJ,6BAAsB,CAACK,IAAI;UAAE;YAC9B,MAAMC,SAAS,GAAGR,KAA8B;YAEhDN,aAAa,CAAC;cACVC,KAAK,EAAEa,SAAS,CAACH,OAAO,CAACV,KAAK;cAC9BC,MAAM,EAAEY,SAAS,CAACH,OAAO,CAACT;YAC9B,CAAC,CAAC;YACF;YACA;;YAEA;UACJ;QACA,KAAKM,6BAAsB,CAACO,UAAU;UAAE;YACpC,MAAMC,eAAe,GAAGV,KAAoC;YAE5DT,aAAa,CAACmB,eAAe,CAACL,OAAO,CAACb,iBAAiB,CAAC;YAExD;UACJ;QACA;UACI;MACR;IACJ,CACJ,CAAC;IAED,OAAOM,YAAY,CAACa,MAAM;EAC9B,CAAC,EAAE,EAAE,CAAC;EAEN,OAAO;IACH3B,KAAK;IACLM,UAAU;IACVG;EACJ,CAAC;AACL,CAAC;AAAAmB,OAAA,CAAA7B,YAAA,GAAAA,YAAA"}
1
+ {"version":3,"names":["_reactNative","require","_react","_types","_Unistyles","unistylesEvents","NativeEventEmitter","NativeModules","Unistyles","useUnistyles","theme","setTheme","useState","unistyles","runtime","getTheme","themeName","breakpoint","setBreakpoint","screenSize","setScreenSize","width","height","useEffect","subscription","addListener","event","type","CxxUnistylesEventTypes","Theme","themeEvent","payload","Size","sizeEvent","Breakpoint","breakpointEvent","remove","exports"],"sourceRoot":"../../src","sources":["useUnistyles.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAOA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AAEA,MAAMI,eAAe,GAAG,IAAIC,+BAAkB,CAACC,0BAAa,CAACC,SAAS,CAAC;AAEhE,MAAMC,YAAY,GAAGA,CAAA,KAAM;EAC9B,MAAM,CAACC,KAAK,EAAEC,QAAQ,CAAC,GAAG,IAAAC,eAAQ,EAACC,oBAAS,CAACC,OAAO,CAACC,QAAQ,CAACF,oBAAS,CAACC,OAAO,CAACE,SAAS,CAAC,CAAC;EAC3F,MAAM,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAG,IAAAN,eAAQ,EAACC,oBAAS,CAACC,OAAO,CAACG,UAAU,CAAC;EAC1E,MAAM,CAACE,UAAU,EAAEC,aAAa,CAAC,GAAG,IAAAR,eAAQ,EAAC;IACzCS,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE;EACZ,CAAC,CAAC;EAEF,IAAAC,gBAAS,EAAC,MAAM;IACZ,MAAMC,YAAY,GAAGnB,eAAe,CAACoB,WAAW,CAC5C,UAAU,EACTC,KAAsB,IAAK;MACxB,QAAQA,KAAK,CAACC,IAAI;QACd,KAAKC,6BAAsB,CAACC,KAAK;UAAE;YAC/B,MAAMC,UAAU,GAAGJ,KAA+B;YAElDf,QAAQ,CAACE,oBAAS,CAACC,OAAO,CAACC,QAAQ,CAACe,UAAU,CAACC,OAAO,CAACf,SAAS,CAAC,CAAC;YAElE;UACJ;QACA;QACA,KAAKY,6BAAsB,CAACI,IAAI;UAAE;YAC9B,MAAMC,SAAS,GAAGP,KAA8B;YAEhDN,aAAa,CAAC;cACVC,KAAK,EAAEY,SAAS,CAACF,OAAO,CAACV,KAAK;cAC9BC,MAAM,EAAEW,SAAS,CAACF,OAAO,CAACT;YAC9B,CAAC,CAAC;YAEF;UACJ;QACA,KAAKM,6BAAsB,CAACM,UAAU;UAAE;YACpC,MAAMC,eAAe,GAAGT,KAAoC;YAE5DR,aAAa,CAACiB,eAAe,CAACJ,OAAO,CAACd,UAAU,CAAC;YAEjD;UACJ;QACA;UACI;MACR;IACJ,CACJ,CAAC;IAED,OAAOO,YAAY,CAACY,MAAM;EAC9B,CAAC,EAAE,EAAE,CAAC;EAEN,OAAO;IACH1B,KAAK;IACLO,UAAU;IACVE;EACJ,CAAC;AACL,CAAC;AAAAkB,OAAA,CAAA5B,YAAA,GAAAA,YAAA"}
@@ -1,14 +1,14 @@
1
1
  export class UnistyleRegistry {
2
- isClosed = false;
2
+ config = {};
3
3
  themes = {};
4
4
  breakpoints = {};
5
5
  sortedBreakpointPairs = [];
6
- config = {};
7
6
  constructor(unistylesBridge) {
8
7
  this.unistylesBridge = unistylesBridge;
9
8
  }
10
9
  addThemes = themes => {
11
10
  this.themes = themes;
11
+ this.unistylesBridge.themes = Object.keys(themes);
12
12
  return this;
13
13
  };
14
14
  addBreakpoints = breakpoints => {
@@ -18,11 +18,8 @@ export class UnistyleRegistry {
18
18
  };
19
19
  addConfig = config => {
20
20
  this.config = config;
21
- if (config.featureFlags && config.featureFlags.length > 0) {
22
- this.unistylesBridge.useFeatureFlags(config.featureFlags);
23
- }
24
- if (config.colorScheme) {
25
- this.unistylesBridge.useColorScheme(config.colorScheme);
21
+ if (config.adaptiveThemes) {
22
+ this.unistylesBridge.useAdaptiveThemes(config.adaptiveThemes);
26
23
  }
27
24
  return this;
28
25
  };
@@ -1 +1 @@
1
- {"version":3,"names":["UnistyleRegistry","isClosed","themes","breakpoints","sortedBreakpointPairs","config","constructor","unistylesBridge","addThemes","addBreakpoints","useBreakpoints","addConfig","featureFlags","length","useFeatureFlags","colorScheme","useColorScheme"],"sourceRoot":"../../src","sources":["UnistyleRegistry.ts"],"mappings":"AAGA,OAAO,MAAMA,gBAAgB,CAAC;EACnBC,QAAQ,GAAG,KAAK;EAChBC,MAAM,GAAoB,CAAC,CAAC;EAC5BC,WAAW,GAAyB,CAAC,CAAC;EACtCC,qBAAqB,GAA0F,EAAE;EACjHC,MAAM,GAAoB,CAAC,CAAC;EAEnCC,WAAWA,CAASC,eAAgC,EAAE;IAAA,KAAlCA,eAAgC,GAAhCA,eAAgC;EAAG;EAEhDC,SAAS,GAAIN,MAAuB,IAAK;IAC5C,IAAI,CAACA,MAAM,GAAGA,MAAM;IAEpB,OAAO,IAAI;EACf,CAAC;EAEMO,cAAc,GAAIN,WAAiC,IAAK;IAC3D,IAAI,CAACI,eAAe,CAACG,cAAc,CAACP,WAAW,CAAC;IAChD,IAAI,CAACC,qBAAqB,GAAG,IAAI,CAACG,eAAe,CAACH,qBAAqB;IAEvE,OAAO,IAAI;EACf,CAAC;EAEMO,SAAS,GAAIN,MAAuB,IAAK;IAC5C,IAAI,CAACA,MAAM,GAAGA,MAAM;IAEpB,IAAIA,MAAM,CAACO,YAAY,IAAIP,MAAM,CAACO,YAAY,CAACC,MAAM,GAAG,CAAC,EAAE;MACvD,IAAI,CAACN,eAAe,CAACO,eAAe,CAACT,MAAM,CAACO,YAAY,CAAC;IAC7D;IAEA,IAAIP,MAAM,CAACU,WAAW,EAAE;MACpB,IAAI,CAACR,eAAe,CAACS,cAAc,CAACX,MAAM,CAACU,WAAW,CAAC;IAC3D;IAEA,OAAO,IAAI;EACf,CAAC;AACL"}
1
+ {"version":3,"names":["UnistyleRegistry","config","themes","breakpoints","sortedBreakpointPairs","constructor","unistylesBridge","addThemes","Object","keys","addBreakpoints","useBreakpoints","addConfig","adaptiveThemes","useAdaptiveThemes"],"sourceRoot":"../../src","sources":["UnistyleRegistry.ts"],"mappings":"AAGA,OAAO,MAAMA,gBAAgB,CAAC;EACnBC,MAAM,GAAoB,CAAC,CAAC;EAC5BC,MAAM,GAAoB,CAAC,CAAC;EAC5BC,WAAW,GAAyB,CAAC,CAAC;EACtCC,qBAAqB,GAA0F,EAAE;EAExHC,WAAWA,CAASC,eAAgC,EAAE;IAAA,KAAlCA,eAAgC,GAAhCA,eAAgC;EAAG;EAEhDC,SAAS,GAAIL,MAAuB,IAAK;IAC5C,IAAI,CAACA,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACI,eAAe,CAACJ,MAAM,GAAGM,MAAM,CAACC,IAAI,CAACP,MAAM,CAAiC;IAEjF,OAAO,IAAI;EACf,CAAC;EAEMQ,cAAc,GAAIP,WAAiC,IAAK;IAC3D,IAAI,CAACG,eAAe,CAACK,cAAc,CAACR,WAAW,CAAC;IAChD,IAAI,CAACC,qBAAqB,GAAG,IAAI,CAACE,eAAe,CAACF,qBAAqB;IAEvE,OAAO,IAAI;EACf,CAAC;EAEMQ,SAAS,GAAIX,MAAuB,IAAK;IAC5C,IAAI,CAACA,MAAM,GAAGA,MAAM;IAEpB,IAAIA,MAAM,CAACY,cAAc,EAAE;MACvB,IAAI,CAACP,eAAe,CAACQ,iBAAiB,CAACb,MAAM,CAACY,cAAc,CAAC;IACjE;IAEA,OAAO,IAAI;EACf,CAAC;AACL"}
@@ -1,4 +1,4 @@
1
- import { UnistylesError } from './types';
1
+ import { ScreenOrientation, UnistylesError } from './types';
2
2
  export class UnistylesRuntime {
3
3
  constructor(unistylesBridge, registry) {
4
4
  this.unistylesBridge = unistylesBridge;
@@ -7,39 +7,50 @@ export class UnistylesRuntime {
7
7
  get colorScheme() {
8
8
  return this.unistylesBridge.colorScheme;
9
9
  }
10
- get breakpoints() {
11
- return this.registry.breakpoints;
10
+ get hasAdaptiveThemes() {
11
+ return this.unistylesBridge.hasAdaptiveThemes;
12
12
  }
13
13
  get sortedBreakpoints() {
14
14
  return this.registry.sortedBreakpointPairs;
15
15
  }
16
- get config() {
17
- return this.registry.config;
18
- }
19
- get theme() {
16
+ get themeName() {
20
17
  return this.unistylesBridge.theme;
21
18
  }
22
- get currentBreakpoint() {
19
+ get breakpoint() {
23
20
  return this.unistylesBridge.breakpoint;
24
21
  }
25
- setColorScheme = scheme => {
26
- if (scheme !== this.colorScheme) {
27
- this.unistylesBridge.useColorScheme(scheme);
22
+ get screen() {
23
+ return {
24
+ width: this.unistylesBridge.screenWidth,
25
+ height: this.unistylesBridge.screenHeight
26
+ };
27
+ }
28
+ get orientation() {
29
+ const {
30
+ width,
31
+ height
32
+ } = this.screen;
33
+ if (width > height) {
34
+ return ScreenOrientation.Landscape;
28
35
  }
29
- };
36
+ return ScreenOrientation.Portrait;
37
+ }
30
38
  setTheme = name => {
31
- if (name !== this.theme && this.hasTheme(name)) {
39
+ if (name !== this.themeName && this.hasTheme(name)) {
32
40
  this.unistylesBridge.useTheme(name);
33
41
  return true;
34
42
  }
35
43
  return false;
36
44
  };
37
- hasTheme = name => name in this.registry.themes;
38
45
  getTheme = forName => {
39
46
  if (!this.hasTheme(forName)) {
40
47
  throw new Error(UnistylesError.ThemeNotFound);
41
48
  }
42
49
  return this.registry.themes[forName];
43
50
  };
51
+ setAdaptiveThemes = enable => {
52
+ this.unistylesBridge.useAdaptiveThemes(enable);
53
+ };
54
+ hasTheme = name => name in this.registry.themes;
44
55
  }
45
56
  //# sourceMappingURL=UnistylesRuntime.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["UnistylesError","UnistylesRuntime","constructor","unistylesBridge","registry","colorScheme","breakpoints","sortedBreakpoints","sortedBreakpointPairs","config","theme","currentBreakpoint","breakpoint","setColorScheme","scheme","useColorScheme","setTheme","name","hasTheme","useTheme","themes","getTheme","forName","Error","ThemeNotFound"],"sourceRoot":"../../src","sources":["UnistylesRuntime.ts"],"mappings":"AAEA,SAA+BA,cAAc,QAAQ,SAAS;AAG9D,OAAO,MAAMC,gBAAgB,CAAC;EAC1BC,WAAWA,CAASC,eAAgC,EAAUC,QAA0B,EAAE;IAAA,KAAtED,eAAgC,GAAhCA,eAAgC;IAAA,KAAUC,QAA0B,GAA1BA,QAA0B;EAAG;EAE3F,IAAWC,WAAWA,CAAA,EAAG;IACrB,OAAO,IAAI,CAACF,eAAe,CAACE,WAAW;EAC3C;EAEA,IAAWC,WAAWA,CAAA,EAAG;IACrB,OAAO,IAAI,CAACF,QAAQ,CAACE,WAAW;EACpC;EAEA,IAAWC,iBAAiBA,CAAA,EAAG;IAC3B,OAAO,IAAI,CAACH,QAAQ,CAACI,qBAAqB;EAC9C;EAEA,IAAWC,MAAMA,CAAA,EAAG;IAChB,OAAO,IAAI,CAACL,QAAQ,CAACK,MAAM;EAC/B;EAEA,IAAWC,KAAKA,CAAA,EAAG;IACf,OAAO,IAAI,CAACP,eAAe,CAACO,KAAK;EACrC;EAEA,IAAWC,iBAAiBA,CAAA,EAAG;IAC3B,OAAO,IAAI,CAACR,eAAe,CAACS,UAAU;EAC1C;EAEOC,cAAc,GAAIC,MAA4B,IAAK;IACtD,IAAIA,MAAM,KAAK,IAAI,CAACT,WAAW,EAAE;MAC7B,IAAI,CAACF,eAAe,CAACY,cAAc,CAACD,MAAM,CAAC;IAC/C;EACJ,CAAC;EAEME,QAAQ,GAAIC,IAA2B,IAAK;IAC/C,IAAIA,IAAI,KAAK,IAAI,CAACP,KAAK,IAAI,IAAI,CAACQ,QAAQ,CAACD,IAAI,CAAC,EAAE;MAC5C,IAAI,CAACd,eAAe,CAACgB,QAAQ,CAACF,IAAI,CAAC;MAEnC,OAAO,IAAI;IACf;IAEA,OAAO,KAAK;EAChB,CAAC;EAEMC,QAAQ,GAAID,IAA2B,IAAKA,IAAI,IAAI,IAAI,CAACb,QAAQ,CAACgB,MAAM;EAExEC,QAAQ,GAAIC,OAA8B,IAAK;IAClD,IAAI,CAAC,IAAI,CAACJ,QAAQ,CAACI,OAAO,CAAC,EAAE;MACzB,MAAM,IAAIC,KAAK,CAACvB,cAAc,CAACwB,aAAa,CAAC;IACjD;IAEA,OAAO,IAAI,CAACpB,QAAQ,CAACgB,MAAM,CAACE,OAAO,CAAC;EACxC,CAAC;AACL"}
1
+ {"version":3,"names":["ScreenOrientation","UnistylesError","UnistylesRuntime","constructor","unistylesBridge","registry","colorScheme","hasAdaptiveThemes","sortedBreakpoints","sortedBreakpointPairs","themeName","theme","breakpoint","screen","width","screenWidth","height","screenHeight","orientation","Landscape","Portrait","setTheme","name","hasTheme","useTheme","getTheme","forName","Error","ThemeNotFound","themes","setAdaptiveThemes","enable","useAdaptiveThemes"],"sourceRoot":"../../src","sources":["UnistylesRuntime.ts"],"mappings":"AAEA,SAASA,iBAAiB,EAAEC,cAAc,QAAQ,SAAS;AAG3D,OAAO,MAAMC,gBAAgB,CAAC;EAC1BC,WAAWA,CAASC,eAAgC,EAAUC,QAA0B,EAAE;IAAA,KAAtED,eAAgC,GAAhCA,eAAgC;IAAA,KAAUC,QAA0B,GAA1BA,QAA0B;EAAG;EAE3F,IAAWC,WAAWA,CAAA,EAAG;IACrB,OAAO,IAAI,CAACF,eAAe,CAACE,WAAW;EAC3C;EAEA,IAAWC,iBAAiBA,CAAA,EAAG;IAC3B,OAAO,IAAI,CAACH,eAAe,CAACG,iBAAiB;EACjD;EAEA,IAAWC,iBAAiBA,CAAA,EAAG;IAC3B,OAAO,IAAI,CAACH,QAAQ,CAACI,qBAAqB;EAC9C;EAEA,IAAWC,SAASA,CAAA,EAAG;IACnB,OAAO,IAAI,CAACN,eAAe,CAACO,KAAK;EACrC;EAEA,IAAWC,UAAUA,CAAA,EAAG;IACpB,OAAO,IAAI,CAACR,eAAe,CAACQ,UAAU;EAC1C;EAEA,IAAWC,MAAMA,CAAA,EAAG;IAChB,OAAO;MACHC,KAAK,EAAE,IAAI,CAACV,eAAe,CAACW,WAAW;MACvCC,MAAM,EAAE,IAAI,CAACZ,eAAe,CAACa;IACjC,CAAC;EACL;EAEA,IAAWC,WAAWA,CAAA,EAAG;IACrB,MAAM;MAAEJ,KAAK;MAAEE;IAAO,CAAC,GAAG,IAAI,CAACH,MAAM;IAErC,IAAIC,KAAK,GAAGE,MAAM,EAAE;MAChB,OAAOhB,iBAAiB,CAACmB,SAAS;IACtC;IAEA,OAAOnB,iBAAiB,CAACoB,QAAQ;EACrC;EAEOC,QAAQ,GAAIC,IAA2B,IAAK;IAC/C,IAAIA,IAAI,KAAK,IAAI,CAACZ,SAAS,IAAI,IAAI,CAACa,QAAQ,CAACD,IAAI,CAAC,EAAE;MAChD,IAAI,CAAClB,eAAe,CAACoB,QAAQ,CAACF,IAAI,CAAC;MAEnC,OAAO,IAAI;IACf;IAEA,OAAO,KAAK;EAChB,CAAC;EAEMG,QAAQ,GAAIC,OAA8B,IAAK;IAClD,IAAI,CAAC,IAAI,CAACH,QAAQ,CAACG,OAAO,CAAC,EAAE;MACzB,MAAM,IAAIC,KAAK,CAAC1B,cAAc,CAAC2B,aAAa,CAAC;IACjD;IAEA,OAAO,IAAI,CAACvB,QAAQ,CAACwB,MAAM,CAACH,OAAO,CAAC;EACxC,CAAC;EAEMI,iBAAiB,GAAIC,MAAe,IAAK;IAC5C,IAAI,CAAC3B,eAAe,CAAC4B,iBAAiB,CAACD,MAAM,CAAC;EAClD,CAAC;EAEOR,QAAQ,GAAID,IAA2B,IAAKA,IAAI,IAAI,IAAI,CAACjB,QAAQ,CAACwB,MAAM;AACpF"}
@@ -1,5 +1,5 @@
1
1
  import { unistyles } from './Unistyles';
2
- import { UnistylesColorScheme } from './types';
2
+ import { ScreenOrientation } from './types';
3
3
  export { useInitialTheme } from './useInitialTheme';
4
4
  export { useStyles } from './useStyles';
5
5
  export { createStyleSheet } from './createStyleSheet';
@@ -15,5 +15,5 @@ const UnistylesRegistry = {
15
15
  addConfig
16
16
  };
17
17
  export { UnistylesRuntime, UnistylesRegistry };
18
- export { UnistylesColorScheme };
18
+ export { ScreenOrientation };
19
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["unistyles","UnistylesColorScheme","useInitialTheme","useStyles","createStyleSheet","addThemes","addBreakpoints","addConfig","registry","UnistylesRuntime","runtime","UnistylesRegistry"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA,SAASA,SAAS,QAAQ,aAAa;AAEvC,SAASC,oBAAoB,QAAQ,SAAS;AAE9C,SAASC,eAAe,QAAQ,mBAAmB;AAEnD,SAASC,SAAS,QAAQ,aAAa;AACvC,SAASC,gBAAgB,QAAQ,oBAAoB;AAErD,MAAM;EAAEC,SAAS;EAAEC,cAAc;EAAEC;AAAW,CAAC,GAAGP,SAAS,CAACQ,QAAQ;AACpE,MAAMC,gBAAgB,GAAGT,SAAS,CAACU,OAAO;AAC1C,MAAMC,iBAAiB,GAAG;EACtBN,SAAS;EACTC,cAAc;EACdC;AACJ,CAAC;AAED,SACIE,gBAAgB,EAChBE,iBAAiB;AAGrB,SACIV,oBAAoB"}
1
+ {"version":3,"names":["unistyles","ScreenOrientation","useInitialTheme","useStyles","createStyleSheet","addThemes","addBreakpoints","addConfig","registry","UnistylesRuntime","runtime","UnistylesRegistry"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA,SAASA,SAAS,QAAQ,aAAa;AAEvC,SAASC,iBAAiB,QAAQ,SAAS;AAE3C,SAASC,eAAe,QAAQ,mBAAmB;AAEnD,SAASC,SAAS,QAAQ,aAAa;AACvC,SAASC,gBAAgB,QAAQ,oBAAoB;AAErD,MAAM;EAAEC,SAAS;EAAEC,cAAc;EAAEC;AAAW,CAAC,GAAGP,SAAS,CAACQ,QAAQ;AACpE,MAAMC,gBAAgB,GAAGT,SAAS,CAACU,OAAO;AAC1C,MAAMC,iBAAiB,GAAG;EACtBN,SAAS;EACTC,cAAc;EACdC;AACJ,CAAC;AAED,SACIE,gBAAgB,EAChBE,iBAAiB;AAGrB,SACIV,iBAAiB"}
@@ -1,7 +1,7 @@
1
- export let UnistylesColorScheme = /*#__PURE__*/function (UnistylesColorScheme) {
2
- UnistylesColorScheme["System"] = "system";
3
- UnistylesColorScheme["Manual"] = "manual";
4
- return UnistylesColorScheme;
1
+ export let ScreenOrientation = /*#__PURE__*/function (ScreenOrientation) {
2
+ ScreenOrientation[ScreenOrientation["Portrait"] = 1] = "Portrait";
3
+ ScreenOrientation[ScreenOrientation["Landscape"] = 2] = "Landscape";
4
+ return ScreenOrientation;
5
5
  }({});
6
6
  export let CxxUnistylesEventTypes = /*#__PURE__*/function (CxxUnistylesEventTypes) {
7
7
  CxxUnistylesEventTypes["Theme"] = "theme";
@@ -1 +1 @@
1
- {"version":3,"names":["UnistylesColorScheme","CxxUnistylesEventTypes","UnistylesError"],"sourceRoot":"../../../src","sources":["types/cxx.ts"],"mappings":"AAGA,WAAYA,oBAAoB,0BAApBA,oBAAoB;EAApBA,oBAAoB;EAApBA,oBAAoB;EAAA,OAApBA,oBAAoB;AAAA;AAwBhC,WAAYC,sBAAsB,0BAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAA,OAAtBA,sBAAsB;AAAA;AA8BlC,WAAYC,cAAc,0BAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAA,OAAdA,cAAc;AAAA"}
1
+ {"version":3,"names":["ScreenOrientation","CxxUnistylesEventTypes","UnistylesError"],"sourceRoot":"../../../src","sources":["types/cxx.ts"],"mappings":"AASA,WAAYA,iBAAiB,0BAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA;AAsB7B,WAAYC,sBAAsB,0BAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAA,OAAtBA,sBAAsB;AAAA;AA8BlC,WAAYC,cAAc,0BAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAA,OAAdA,cAAc;AAAA"}
@@ -4,8 +4,8 @@ import { CxxUnistylesEventTypes } from './types';
4
4
  import { unistyles } from './Unistyles';
5
5
  const unistylesEvents = new NativeEventEmitter(NativeModules.Unistyles);
6
6
  export const useUnistyles = () => {
7
- const [theme, setTheme] = useState(unistyles.runtime.getTheme(unistyles.runtime.theme));
8
- const [breakpoint, setBreakpoint] = useState(unistyles.runtime.currentBreakpoint);
7
+ const [theme, setTheme] = useState(unistyles.runtime.getTheme(unistyles.runtime.themeName));
8
+ const [breakpoint, setBreakpoint] = useState(unistyles.runtime.breakpoint);
9
9
  const [screenSize, setScreenSize] = useState({
10
10
  width: 0,
11
11
  height: 0
@@ -16,9 +16,10 @@ export const useUnistyles = () => {
16
16
  case CxxUnistylesEventTypes.Theme:
17
17
  {
18
18
  const themeEvent = event;
19
- setTheme(unistyles.runtime.getTheme(themeEvent.payload.currentTheme));
19
+ setTheme(unistyles.runtime.getTheme(themeEvent.payload.themeName));
20
20
  return;
21
21
  }
22
+ // this event is not available on mobile
22
23
  case CxxUnistylesEventTypes.Size:
23
24
  {
24
25
  const sizeEvent = event;
@@ -26,15 +27,12 @@ export const useUnistyles = () => {
26
27
  width: sizeEvent.payload.width,
27
28
  height: sizeEvent.payload.height
28
29
  });
29
- // todo
30
- // setBreakpoint(unistyles.runtime.currentBreakpoint)
31
-
32
30
  return;
33
31
  }
34
32
  case CxxUnistylesEventTypes.Breakpoint:
35
33
  {
36
34
  const breakpointEvent = event;
37
- setBreakpoint(breakpointEvent.payload.currentBreakpoint);
35
+ setBreakpoint(breakpointEvent.payload.breakpoint);
38
36
  return;
39
37
  }
40
38
  default:
@@ -1 +1 @@
1
- {"version":3,"names":["NativeEventEmitter","NativeModules","useEffect","useState","CxxUnistylesEventTypes","unistyles","unistylesEvents","Unistyles","useUnistyles","theme","setTheme","runtime","getTheme","breakpoint","setBreakpoint","currentBreakpoint","screenSize","setScreenSize","width","height","subscription","addListener","event","type","Theme","themeEvent","payload","currentTheme","Size","sizeEvent","Breakpoint","breakpointEvent","remove"],"sourceRoot":"../../src","sources":["useUnistyles.ts"],"mappings":"AAAA,SAASA,kBAAkB,EAAEC,aAAa,QAAQ,cAAc;AAChE,SAASC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAO3C,SAASC,sBAAsB,QAAQ,SAAS;AAChD,SAASC,SAAS,QAAQ,aAAa;AAEvC,MAAMC,eAAe,GAAG,IAAIN,kBAAkB,CAACC,aAAa,CAACM,SAAS,CAAC;AAEvE,OAAO,MAAMC,YAAY,GAAGA,CAAA,KAAM;EAC9B,MAAM,CAACC,KAAK,EAAEC,QAAQ,CAAC,GAAGP,QAAQ,CAACE,SAAS,CAACM,OAAO,CAACC,QAAQ,CAACP,SAAS,CAACM,OAAO,CAACF,KAAK,CAAC,CAAC;EACvF,MAAM,CAACI,UAAU,EAAEC,aAAa,CAAC,GAAGX,QAAQ,CAACE,SAAS,CAACM,OAAO,CAACI,iBAAiB,CAAC;EACjF,MAAM,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAGd,QAAQ,CAAC;IACzCe,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE;EACZ,CAAC,CAAC;EAEFjB,SAAS,CAAC,MAAM;IACZ,MAAMkB,YAAY,GAAGd,eAAe,CAACe,WAAW,CAC5C,UAAU,EACTC,KAAsB,IAAK;MACxB,QAAQA,KAAK,CAACC,IAAI;QACd,KAAKnB,sBAAsB,CAACoB,KAAK;UAAE;YAC/B,MAAMC,UAAU,GAAGH,KAA+B;YAElDZ,QAAQ,CAACL,SAAS,CAACM,OAAO,CAACC,QAAQ,CAACa,UAAU,CAACC,OAAO,CAACC,YAAY,CAAC,CAAC;YAErE;UACJ;QACA,KAAKvB,sBAAsB,CAACwB,IAAI;UAAE;YAC9B,MAAMC,SAAS,GAAGP,KAA8B;YAEhDL,aAAa,CAAC;cACVC,KAAK,EAAEW,SAAS,CAACH,OAAO,CAACR,KAAK;cAC9BC,MAAM,EAAEU,SAAS,CAACH,OAAO,CAACP;YAC9B,CAAC,CAAC;YACF;YACA;;YAEA;UACJ;QACA,KAAKf,sBAAsB,CAAC0B,UAAU;UAAE;YACpC,MAAMC,eAAe,GAAGT,KAAoC;YAE5DR,aAAa,CAACiB,eAAe,CAACL,OAAO,CAACX,iBAAiB,CAAC;YAExD;UACJ;QACA;UACI;MACR;IACJ,CACJ,CAAC;IAED,OAAOK,YAAY,CAACY,MAAM;EAC9B,CAAC,EAAE,EAAE,CAAC;EAEN,OAAO;IACHvB,KAAK;IACLI,UAAU;IACVG;EACJ,CAAC;AACL,CAAC"}
1
+ {"version":3,"names":["NativeEventEmitter","NativeModules","useEffect","useState","CxxUnistylesEventTypes","unistyles","unistylesEvents","Unistyles","useUnistyles","theme","setTheme","runtime","getTheme","themeName","breakpoint","setBreakpoint","screenSize","setScreenSize","width","height","subscription","addListener","event","type","Theme","themeEvent","payload","Size","sizeEvent","Breakpoint","breakpointEvent","remove"],"sourceRoot":"../../src","sources":["useUnistyles.ts"],"mappings":"AAAA,SAASA,kBAAkB,EAAEC,aAAa,QAAQ,cAAc;AAChE,SAASC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAO3C,SAASC,sBAAsB,QAAQ,SAAS;AAChD,SAASC,SAAS,QAAQ,aAAa;AAEvC,MAAMC,eAAe,GAAG,IAAIN,kBAAkB,CAACC,aAAa,CAACM,SAAS,CAAC;AAEvE,OAAO,MAAMC,YAAY,GAAGA,CAAA,KAAM;EAC9B,MAAM,CAACC,KAAK,EAAEC,QAAQ,CAAC,GAAGP,QAAQ,CAACE,SAAS,CAACM,OAAO,CAACC,QAAQ,CAACP,SAAS,CAACM,OAAO,CAACE,SAAS,CAAC,CAAC;EAC3F,MAAM,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAGZ,QAAQ,CAACE,SAAS,CAACM,OAAO,CAACG,UAAU,CAAC;EAC1E,MAAM,CAACE,UAAU,EAAEC,aAAa,CAAC,GAAGd,QAAQ,CAAC;IACzCe,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE;EACZ,CAAC,CAAC;EAEFjB,SAAS,CAAC,MAAM;IACZ,MAAMkB,YAAY,GAAGd,eAAe,CAACe,WAAW,CAC5C,UAAU,EACTC,KAAsB,IAAK;MACxB,QAAQA,KAAK,CAACC,IAAI;QACd,KAAKnB,sBAAsB,CAACoB,KAAK;UAAE;YAC/B,MAAMC,UAAU,GAAGH,KAA+B;YAElDZ,QAAQ,CAACL,SAAS,CAACM,OAAO,CAACC,QAAQ,CAACa,UAAU,CAACC,OAAO,CAACb,SAAS,CAAC,CAAC;YAElE;UACJ;QACA;QACA,KAAKT,sBAAsB,CAACuB,IAAI;UAAE;YAC9B,MAAMC,SAAS,GAAGN,KAA8B;YAEhDL,aAAa,CAAC;cACVC,KAAK,EAAEU,SAAS,CAACF,OAAO,CAACR,KAAK;cAC9BC,MAAM,EAAES,SAAS,CAACF,OAAO,CAACP;YAC9B,CAAC,CAAC;YAEF;UACJ;QACA,KAAKf,sBAAsB,CAACyB,UAAU;UAAE;YACpC,MAAMC,eAAe,GAAGR,KAAoC;YAE5DP,aAAa,CAACe,eAAe,CAACJ,OAAO,CAACZ,UAAU,CAAC;YAEjD;UACJ;QACA;UACI;MACR;IACJ,CACJ,CAAC;IAED,OAAOM,YAAY,CAACW,MAAM;EAC9B,CAAC,EAAE,EAAE,CAAC;EAEN,OAAO;IACHtB,KAAK;IACLK,UAAU;IACVE;EACJ,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Cxx.d.ts","sourceRoot":"","sources":["../../../../../../examples/expo/src/examples/Cxx.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,eAAO,MAAM,GAAG,yBA+Cf,CAAA"}
1
+ {"version":3,"file":"Cxx.d.ts","sourceRoot":"","sources":["../../../../../../examples/expo/src/examples/Cxx.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,eAAO,MAAM,GAAG,yBA8Ef,CAAA"}
@@ -2,11 +2,10 @@ import type { UnistylesBridge, UnistylesConfig } from './types';
2
2
  import type { UnistylesThemes, UnistylesBreakpoints } from './global';
3
3
  export declare class UnistyleRegistry {
4
4
  private unistylesBridge;
5
- isClosed: boolean;
5
+ config: UnistylesConfig;
6
6
  themes: UnistylesThemes;
7
7
  breakpoints: UnistylesBreakpoints;
8
8
  sortedBreakpointPairs: Array<[keyof UnistylesBreakpoints, UnistylesBreakpoints[keyof UnistylesBreakpoints]]>;
9
- config: UnistylesConfig;
10
9
  constructor(unistylesBridge: UnistylesBridge);
11
10
  addThemes: (themes: UnistylesThemes) => this;
12
11
  addBreakpoints: (breakpoints: UnistylesBreakpoints) => this;
@@ -1 +1 @@
1
- {"version":3,"file":"UnistyleRegistry.d.ts","sourceRoot":"","sources":["../../../src/UnistyleRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAErE,qBAAa,gBAAgB;IAOb,OAAO,CAAC,eAAe;IAN5B,QAAQ,UAAQ;IAChB,MAAM,EAAE,eAAe,CAAwB;IAC/C,WAAW,EAAE,oBAAoB,CAA6B;IAC9D,qBAAqB,EAAE,KAAK,CAAC,CAAC,MAAM,oBAAoB,EAAE,oBAAoB,CAAC,MAAM,oBAAoB,CAAC,CAAC,CAAC,CAAK;IACjH,MAAM,EAAE,eAAe,CAAK;gBAEf,eAAe,EAAE,eAAe;IAE7C,SAAS,WAAY,eAAe,UAI1C;IAEM,cAAc,gBAAiB,oBAAoB,UAKzD;IAEM,SAAS,WAAY,eAAe,UAY1C;CACJ"}
1
+ {"version":3,"file":"UnistyleRegistry.d.ts","sourceRoot":"","sources":["../../../src/UnistyleRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAErE,qBAAa,gBAAgB;IAMb,OAAO,CAAC,eAAe;IAL5B,MAAM,EAAE,eAAe,CAAK;IAC5B,MAAM,EAAE,eAAe,CAAwB;IAC/C,WAAW,EAAE,oBAAoB,CAA6B;IAC9D,qBAAqB,EAAE,KAAK,CAAC,CAAC,MAAM,oBAAoB,EAAE,oBAAoB,CAAC,MAAM,oBAAoB,CAAC,CAAC,CAAC,CAAK;gBAEpG,eAAe,EAAE,eAAe;IAE7C,SAAS,WAAY,eAAe,UAK1C;IAEM,cAAc,gBAAiB,oBAAoB,UAKzD;IAEM,SAAS,WAAY,eAAe,UAQ1C;CACJ"}
@@ -1,20 +1,22 @@
1
1
  import type { UnistylesBridge } from './types';
2
2
  import type { UnistyleRegistry } from './UnistyleRegistry';
3
- import { UnistylesColorScheme } from './types';
3
+ import { ScreenOrientation } from './types';
4
4
  import type { UnistylesThemes } from './global';
5
5
  export declare class UnistylesRuntime {
6
6
  private unistylesBridge;
7
7
  private registry;
8
8
  constructor(unistylesBridge: UnistylesBridge, registry: UnistyleRegistry);
9
- get colorScheme(): UnistylesColorScheme;
10
- get breakpoints(): import("./global").UnistylesBreakpoints;
9
+ get colorScheme(): import("./types").ColorSchemeName;
10
+ get hasAdaptiveThemes(): boolean;
11
11
  get sortedBreakpoints(): [keyof import("./global").UnistylesBreakpoints, number][];
12
- get config(): import("./types").UnistylesConfig;
13
- get theme(): keyof UnistylesThemes;
14
- get currentBreakpoint(): keyof import("./global").UnistylesBreakpoints;
15
- setColorScheme: (scheme: UnistylesColorScheme) => void;
12
+ get themeName(): keyof UnistylesThemes;
13
+ get breakpoint(): keyof import("./global").UnistylesBreakpoints;
14
+ get screen(): {
15
+ width: number;
16
+ height: number;
17
+ };
18
+ get orientation(): ScreenOrientation;
16
19
  setTheme: (name: keyof UnistylesThemes) => boolean;
17
- hasTheme: (name: keyof UnistylesThemes) => boolean;
18
20
  getTheme: (forName: keyof UnistylesThemes) => {
19
21
  colors: {
20
22
  backgroundColor: string;
@@ -52,5 +54,7 @@ export declare class UnistylesRuntime {
52
54
  blood: string;
53
55
  };
54
56
  };
57
+ setAdaptiveThemes: (enable: boolean) => void;
58
+ private hasTheme;
55
59
  }
56
60
  //# sourceMappingURL=UnistylesRuntime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"UnistylesRuntime.d.ts","sourceRoot":"","sources":["../../../src/UnistylesRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,EAAE,oBAAoB,EAAkB,MAAM,SAAS,CAAA;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAE/C,qBAAa,gBAAgB;IACb,OAAO,CAAC,eAAe;IAAmB,OAAO,CAAC,QAAQ;gBAAlD,eAAe,EAAE,eAAe,EAAU,QAAQ,EAAE,gBAAgB;IAExF,IAAW,WAAW,yBAErB;IAED,IAAW,WAAW,4CAErB;IAED,IAAW,iBAAiB,8DAE3B;IAED,IAAW,MAAM,sCAEhB;IAED,IAAW,KAAK,0BAEf;IAED,IAAW,iBAAiB,kDAE3B;IAEM,cAAc,WAAY,oBAAoB,UAIpD;IAEM,QAAQ,SAAU,MAAM,eAAe,aAQ7C;IAEM,QAAQ,SAAU,MAAM,eAAe,aAAiC;IAExE,QAAQ,YAAa,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAMhD;CACJ"}
1
+ {"version":3,"file":"UnistylesRuntime.d.ts","sourceRoot":"","sources":["../../../src/UnistylesRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,EAAE,iBAAiB,EAAkB,MAAM,SAAS,CAAA;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAE/C,qBAAa,gBAAgB;IACb,OAAO,CAAC,eAAe;IAAmB,OAAO,CAAC,QAAQ;gBAAlD,eAAe,EAAE,eAAe,EAAU,QAAQ,EAAE,gBAAgB;IAExF,IAAW,WAAW,sCAErB;IAED,IAAW,iBAAiB,YAE3B;IAED,IAAW,iBAAiB,8DAE3B;IAED,IAAW,SAAS,0BAEnB;IAED,IAAW,UAAU,kDAEpB;IAED,IAAW,MAAM;;;MAKhB;IAED,IAAW,WAAW,sBAQrB;IAEM,QAAQ,SAAU,MAAM,eAAe,aAQ7C;IAEM,QAAQ,YAAa,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAMhD;IAEM,iBAAiB,WAAY,OAAO,UAE1C;IAED,OAAO,CAAC,QAAQ,CAAgE;CACnF"}
@@ -1,5 +1,5 @@
1
1
  import type { UnistylesThemes, UnistylesBreakpoints } from './global';
2
- import { UnistylesColorScheme } from './types';
2
+ import { ScreenOrientation } from './types';
3
3
  export { useInitialTheme } from './useInitialTheme';
4
4
  export { useStyles } from './useStyles';
5
5
  export { createStyleSheet } from './createStyleSheet';
@@ -10,6 +10,6 @@ declare const UnistylesRegistry: {
10
10
  addConfig: (config: import("./types").UnistylesConfig) => import("./UnistyleRegistry").UnistyleRegistry;
11
11
  };
12
12
  export { UnistylesRuntime, UnistylesRegistry };
13
- export { UnistylesColorScheme };
13
+ export { ScreenOrientation };
14
14
  export type { UnistylesThemes, UnistylesBreakpoints };
15
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAE9C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEnD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAGrD,QAAA,MAAM,gBAAgB,+CAAoB,CAAA;AAC1C,QAAA,MAAM,iBAAiB;;;;CAItB,CAAA;AAED,OAAO,EACH,gBAAgB,EAChB,iBAAiB,EACpB,CAAA;AAED,OAAO,EACH,oBAAoB,EACvB,CAAA;AAED,YAAY,EACR,eAAe,EACf,oBAAoB,EACvB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAE3C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEnD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAGrD,QAAA,MAAM,gBAAgB,+CAAoB,CAAA;AAC1C,QAAA,MAAM,iBAAiB;;;;CAItB,CAAA;AAED,OAAO,EACH,gBAAgB,EAChB,iBAAiB,EACpB,CAAA;AAED,OAAO,EACH,iBAAiB,EACpB,CAAA;AAED,YAAY,EACR,eAAe,EACf,oBAAoB,EACvB,CAAA"}
@@ -1,22 +1,25 @@
1
1
  import type { UnistylesThemes, UnistylesBreakpoints } from '../global';
2
2
  export type Nullable<T> = T | null;
3
- export declare enum UnistylesColorScheme {
4
- System = "system",
5
- Manual = "manual"
6
- }
3
+ export type ColorSchemeName = 'light' | 'dark' | undefined;
7
4
  export type UnistylesConfig = {
8
- colorScheme?: UnistylesColorScheme;
9
- featureFlags?: Array<string>;
5
+ adaptiveThemes?: boolean;
10
6
  };
7
+ export declare enum ScreenOrientation {
8
+ Portrait = 1,
9
+ Landscape = 2
10
+ }
11
11
  export type UnistylesBridge = {
12
+ screenWidth: number;
13
+ screenHeight: number;
14
+ hasAdaptiveThemes: boolean;
12
15
  theme: keyof UnistylesThemes;
13
16
  breakpoint: keyof UnistylesBreakpoints;
14
- colorScheme: UnistylesColorScheme;
17
+ colorScheme: ColorSchemeName;
15
18
  sortedBreakpointPairs: Array<[keyof UnistylesBreakpoints, UnistylesBreakpoints[keyof UnistylesBreakpoints]]>;
19
+ themes: Array<keyof UnistylesThemes>;
16
20
  useBreakpoints(breakpoints: UnistylesBreakpoints): void;
17
21
  useTheme(name: keyof UnistylesThemes): void;
18
- useColorScheme(scheme: UnistylesColorScheme): void;
19
- useFeatureFlags(flags: Array<string>): void;
22
+ useAdaptiveThemes(enable: boolean): void;
20
23
  };
21
24
  export declare enum CxxUnistylesEventTypes {
22
25
  Theme = "theme",
@@ -26,7 +29,7 @@ export declare enum CxxUnistylesEventTypes {
26
29
  export type CxxUnistylesThemeEvent = {
27
30
  type: CxxUnistylesEventTypes.Theme;
28
31
  payload: {
29
- currentTheme: keyof UnistylesThemes;
32
+ themeName: keyof UnistylesThemes;
30
33
  };
31
34
  };
32
35
  export type CxxUnistylesSizeEvent = {
@@ -39,7 +42,7 @@ export type CxxUnistylesSizeEvent = {
39
42
  export type CxxUnistylesBreakpointEvent = {
40
43
  type: CxxUnistylesEventTypes.Breakpoint;
41
44
  payload: {
42
- currentBreakpoint: keyof UnistylesBreakpoints;
45
+ breakpoint: keyof UnistylesBreakpoints;
43
46
  };
44
47
  };
45
48
  export type UnistylesEvents = CxxUnistylesThemeEvent | CxxUnistylesSizeEvent | CxxUnistylesBreakpointEvent;
@@ -1 +1 @@
1
- {"version":3,"file":"cxx.d.ts","sourceRoot":"","sources":["../../../../src/types/cxx.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAEtE,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;AAClC,oBAAY,oBAAoB;IAC5B,MAAM,WAAW;IACjB,MAAM,WAAW;CACpB;AAED,MAAM,MAAM,eAAe,GAAG;IAC1B,WAAW,CAAC,EAAE,oBAAoB,CAAC;IACnC,YAAY,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;CAC/B,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAE1B,KAAK,EAAE,MAAM,eAAe,CAAA;IAC5B,UAAU,EAAE,MAAM,oBAAoB,CAAC;IACvC,WAAW,EAAE,oBAAoB,CAAC;IAClC,qBAAqB,EAAE,KAAK,CAAC,CAAC,MAAM,oBAAoB,EAAE,oBAAoB,CAAC,MAAM,oBAAoB,CAAC,CAAC,CAAC,CAAA;IAG5G,cAAc,CAAC,WAAW,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACxD,QAAQ,CAAC,IAAI,EAAE,MAAM,eAAe,GAAG,IAAI,CAAC;IAC5C,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACnD,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;CAC9C,CAAA;AAED,oBAAY,sBAAsB;IAC9B,KAAK,UAAU;IACf,IAAI,SAAS;IACb,UAAU,eAAe;CAC5B;AAED,MAAM,MAAM,sBAAsB,GAAG;IACjC,IAAI,EAAE,sBAAsB,CAAC,KAAK,CAAC;IACnC,OAAO,EAAE;QACL,YAAY,EAAE,MAAM,eAAe,CAAA;KACtC,CAAA;CACJ,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IAChC,IAAI,EAAE,sBAAsB,CAAC,IAAI,CAAC;IAClC,OAAO,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAA;KACjB,CAAA;CACJ,CAAA;AAED,MAAM,MAAM,2BAA2B,GAAG;IACtC,IAAI,EAAE,sBAAsB,CAAC,UAAU,CAAC;IACxC,OAAO,EAAE;QACL,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;KAChD,CAAA;CACJ,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,sBAAsB,GAAG,qBAAqB,GAAG,2BAA2B,CAAA;AAE1G,oBAAY,cAAc;IACtB,kBAAkB,wCAAwC;IAC1D,aAAa,oCAAoC;CACpD"}
1
+ {"version":3,"file":"cxx.d.ts","sourceRoot":"","sources":["../../../../src/types/cxx.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAEtE,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;AAClC,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAA;AAE1D,MAAM,MAAM,eAAe,GAAG;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAA;AAED,oBAAY,iBAAiB;IACzB,QAAQ,IAAI;IACZ,SAAS,IAAI;CAChB;AAED,MAAM,MAAM,eAAe,GAAG;IAE1B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,KAAK,EAAE,MAAM,eAAe,CAAC;IAC7B,UAAU,EAAE,MAAM,oBAAoB,CAAC;IACvC,WAAW,EAAE,eAAe,CAAC;IAC7B,qBAAqB,EAAE,KAAK,CAAC,CAAC,MAAM,oBAAoB,EAAE,oBAAoB,CAAC,MAAM,oBAAoB,CAAC,CAAC,CAAC,CAAC;IAG7G,MAAM,EAAE,KAAK,CAAC,MAAM,eAAe,CAAC,CAAC;IACrC,cAAc,CAAC,WAAW,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACxD,QAAQ,CAAC,IAAI,EAAE,MAAM,eAAe,GAAG,IAAI,CAAC;IAC5C,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;CAC5C,CAAA;AAED,oBAAY,sBAAsB;IAC9B,KAAK,UAAU;IACf,IAAI,SAAS;IACb,UAAU,eAAe;CAC5B;AAED,MAAM,MAAM,sBAAsB,GAAG;IACjC,IAAI,EAAE,sBAAsB,CAAC,KAAK,CAAC;IACnC,OAAO,EAAE;QACL,SAAS,EAAE,MAAM,eAAe,CAAA;KACnC,CAAA;CACJ,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IAChC,IAAI,EAAE,sBAAsB,CAAC,IAAI,CAAC;IAClC,OAAO,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAA;KACjB,CAAA;CACJ,CAAA;AAED,MAAM,MAAM,2BAA2B,GAAG;IACtC,IAAI,EAAE,sBAAsB,CAAC,UAAU,CAAC;IACxC,OAAO,EAAE;QACL,UAAU,EAAE,MAAM,oBAAoB,CAAA;KACzC,CAAA;CACJ,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,sBAAsB,GAAG,qBAAqB,GAAG,2BAA2B,CAAA;AAE1G,oBAAY,cAAc;IACtB,kBAAkB,wCAAwC;IAC1D,aAAa,oCAAoC;CACpD"}
@@ -1 +1 @@
1
- {"version":3,"file":"useUnistyles.d.ts","sourceRoot":"","sources":["../../../src/useUnistyles.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqDxB,CAAA"}
1
+ {"version":3,"file":"useUnistyles.d.ts","sourceRoot":"","sources":["../../../src/useUnistyles.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoDxB,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-unistyles",
3
- "version": "2.0.0-alpha.2",
3
+ "version": "2.0.0-alpha.3",
4
4
  "description": "Level up your React Native StyleSheet",
5
5
  "scripts": {
6
6
  "test": "jest",
@@ -2,16 +2,16 @@ import type { UnistylesBridge, UnistylesConfig } from './types'
2
2
  import type { UnistylesThemes, UnistylesBreakpoints } from './global'
3
3
 
4
4
  export class UnistyleRegistry {
5
- public isClosed = false
5
+ public config: UnistylesConfig = {}
6
6
  public themes: UnistylesThemes = {} as UnistylesThemes
7
7
  public breakpoints: UnistylesBreakpoints = {} as UnistylesBreakpoints
8
8
  public sortedBreakpointPairs: Array<[keyof UnistylesBreakpoints, UnistylesBreakpoints[keyof UnistylesBreakpoints]]> = []
9
- public config: UnistylesConfig = {}
10
9
 
11
10
  constructor(private unistylesBridge: UnistylesBridge) {}
12
11
 
13
12
  public addThemes = (themes: UnistylesThemes) => {
14
13
  this.themes = themes
14
+ this.unistylesBridge.themes = Object.keys(themes) as Array<keyof UnistylesThemes>
15
15
 
16
16
  return this
17
17
  }
@@ -26,12 +26,8 @@ export class UnistyleRegistry {
26
26
  public addConfig = (config: UnistylesConfig) => {
27
27
  this.config = config
28
28
 
29
- if (config.featureFlags && config.featureFlags.length > 0) {
30
- this.unistylesBridge.useFeatureFlags(config.featureFlags)
31
- }
32
-
33
- if (config.colorScheme) {
34
- this.unistylesBridge.useColorScheme(config.colorScheme)
29
+ if (config.adaptiveThemes) {
30
+ this.unistylesBridge.useAdaptiveThemes(config.adaptiveThemes)
35
31
  }
36
32
 
37
33
  return this
@@ -1,6 +1,6 @@
1
1
  import type { UnistylesBridge } from './types'
2
2
  import type { UnistyleRegistry } from './UnistyleRegistry'
3
- import { UnistylesColorScheme, UnistylesError } from './types'
3
+ import { ScreenOrientation, UnistylesError } from './types'
4
4
  import type { UnistylesThemes } from './global'
5
5
 
6
6
  export class UnistylesRuntime {
@@ -10,34 +10,41 @@ export class UnistylesRuntime {
10
10
  return this.unistylesBridge.colorScheme
11
11
  }
12
12
 
13
- public get breakpoints() {
14
- return this.registry.breakpoints
13
+ public get hasAdaptiveThemes() {
14
+ return this.unistylesBridge.hasAdaptiveThemes
15
15
  }
16
16
 
17
17
  public get sortedBreakpoints() {
18
18
  return this.registry.sortedBreakpointPairs
19
19
  }
20
20
 
21
- public get config() {
22
- return this.registry.config
23
- }
24
-
25
- public get theme() {
21
+ public get themeName() {
26
22
  return this.unistylesBridge.theme
27
23
  }
28
24
 
29
- public get currentBreakpoint() {
25
+ public get breakpoint() {
30
26
  return this.unistylesBridge.breakpoint
31
27
  }
32
28
 
33
- public setColorScheme = (scheme: UnistylesColorScheme) => {
34
- if (scheme !== this.colorScheme) {
35
- this.unistylesBridge.useColorScheme(scheme)
29
+ public get screen() {
30
+ return {
31
+ width: this.unistylesBridge.screenWidth,
32
+ height: this.unistylesBridge.screenHeight
36
33
  }
37
34
  }
38
35
 
36
+ public get orientation() {
37
+ const { width, height } = this.screen
38
+
39
+ if (width > height) {
40
+ return ScreenOrientation.Landscape
41
+ }
42
+
43
+ return ScreenOrientation.Portrait
44
+ }
45
+
39
46
  public setTheme = (name: keyof UnistylesThemes) => {
40
- if (name !== this.theme && this.hasTheme(name)) {
47
+ if (name !== this.themeName && this.hasTheme(name)) {
41
48
  this.unistylesBridge.useTheme(name)
42
49
 
43
50
  return true
@@ -46,8 +53,6 @@ export class UnistylesRuntime {
46
53
  return false
47
54
  }
48
55
 
49
- public hasTheme = (name: keyof UnistylesThemes) => name in this.registry.themes
50
-
51
56
  public getTheme = (forName: keyof UnistylesThemes) => {
52
57
  if (!this.hasTheme(forName)) {
53
58
  throw new Error(UnistylesError.ThemeNotFound)
@@ -55,4 +60,10 @@ export class UnistylesRuntime {
55
60
 
56
61
  return this.registry.themes[forName]
57
62
  }
63
+
64
+ public setAdaptiveThemes = (enable: boolean) => {
65
+ this.unistylesBridge.useAdaptiveThemes(enable)
66
+ }
67
+
68
+ private hasTheme = (name: keyof UnistylesThemes) => name in this.registry.themes
58
69
  }
package/src/index.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { unistyles } from './Unistyles'
2
2
  import type { UnistylesThemes, UnistylesBreakpoints } from './global'
3
- import { UnistylesColorScheme } from './types'
3
+ import { ScreenOrientation } from './types'
4
4
 
5
5
  export { useInitialTheme } from './useInitialTheme'
6
6
 
@@ -21,7 +21,7 @@ export {
21
21
  }
22
22
 
23
23
  export {
24
- UnistylesColorScheme
24
+ ScreenOrientation
25
25
  }
26
26
 
27
27
  export type {
package/src/types/cxx.ts CHANGED
@@ -1,28 +1,32 @@
1
1
  import type { UnistylesThemes, UnistylesBreakpoints } from '../global'
2
2
 
3
3
  export type Nullable<T> = T | null
4
- export enum UnistylesColorScheme {
5
- System = 'system',
6
- Manual = 'manual'
7
- }
4
+ export type ColorSchemeName = 'light' | 'dark' | undefined
8
5
 
9
6
  export type UnistylesConfig = {
10
- colorScheme?: UnistylesColorScheme,
11
- featureFlags?: Array<string>
7
+ adaptiveThemes?: boolean
8
+ }
9
+
10
+ export enum ScreenOrientation {
11
+ Portrait = 1,
12
+ Landscape = 2
12
13
  }
13
14
 
14
15
  export type UnistylesBridge = {
15
16
  // getters
16
- theme: keyof UnistylesThemes
17
+ screenWidth: number,
18
+ screenHeight: number,
19
+ hasAdaptiveThemes: boolean,
20
+ theme: keyof UnistylesThemes,
17
21
  breakpoint: keyof UnistylesBreakpoints,
18
- colorScheme: UnistylesColorScheme,
19
- sortedBreakpointPairs: Array<[keyof UnistylesBreakpoints, UnistylesBreakpoints[keyof UnistylesBreakpoints]]>
22
+ colorScheme: ColorSchemeName,
23
+ sortedBreakpointPairs: Array<[keyof UnistylesBreakpoints, UnistylesBreakpoints[keyof UnistylesBreakpoints]]>,
20
24
 
21
25
  // setters
26
+ themes: Array<keyof UnistylesThemes>,
22
27
  useBreakpoints(breakpoints: UnistylesBreakpoints): void,
23
28
  useTheme(name: keyof UnistylesThemes): void,
24
- useColorScheme(scheme: UnistylesColorScheme): void,
25
- useFeatureFlags(flags: Array<string>): void
29
+ useAdaptiveThemes(enable: boolean): void,
26
30
  }
27
31
 
28
32
  export enum CxxUnistylesEventTypes {
@@ -34,7 +38,7 @@ export enum CxxUnistylesEventTypes {
34
38
  export type CxxUnistylesThemeEvent = {
35
39
  type: CxxUnistylesEventTypes.Theme,
36
40
  payload: {
37
- currentTheme: keyof UnistylesThemes
41
+ themeName: keyof UnistylesThemes
38
42
  }
39
43
  }
40
44
 
@@ -49,7 +53,7 @@ export type CxxUnistylesSizeEvent = {
49
53
  export type CxxUnistylesBreakpointEvent = {
50
54
  type: CxxUnistylesEventTypes.Breakpoint,
51
55
  payload: {
52
- currentBreakpoint: keyof UnistylesBreakpoints
56
+ breakpoint: keyof UnistylesBreakpoints
53
57
  }
54
58
  }
55
59
 
@@ -12,8 +12,8 @@ import { unistyles } from './Unistyles'
12
12
  const unistylesEvents = new NativeEventEmitter(NativeModules.Unistyles)
13
13
 
14
14
  export const useUnistyles = () => {
15
- const [theme, setTheme] = useState(unistyles.runtime.getTheme(unistyles.runtime.theme))
16
- const [breakpoint, setBreakpoint] = useState(unistyles.runtime.currentBreakpoint)
15
+ const [theme, setTheme] = useState(unistyles.runtime.getTheme(unistyles.runtime.themeName))
16
+ const [breakpoint, setBreakpoint] = useState(unistyles.runtime.breakpoint)
17
17
  const [screenSize, setScreenSize] = useState({
18
18
  width: 0,
19
19
  height: 0
@@ -27,10 +27,11 @@ export const useUnistyles = () => {
27
27
  case CxxUnistylesEventTypes.Theme: {
28
28
  const themeEvent = event as CxxUnistylesThemeEvent
29
29
 
30
- setTheme(unistyles.runtime.getTheme(themeEvent.payload.currentTheme))
30
+ setTheme(unistyles.runtime.getTheme(themeEvent.payload.themeName))
31
31
 
32
32
  return
33
33
  }
34
+ // this event is not available on mobile
34
35
  case CxxUnistylesEventTypes.Size: {
35
36
  const sizeEvent = event as CxxUnistylesSizeEvent
36
37
 
@@ -38,15 +39,13 @@ export const useUnistyles = () => {
38
39
  width: sizeEvent.payload.width,
39
40
  height: sizeEvent.payload.height
40
41
  })
41
- // todo
42
- // setBreakpoint(unistyles.runtime.currentBreakpoint)
43
42
 
44
43
  return
45
44
  }
46
45
  case CxxUnistylesEventTypes.Breakpoint: {
47
46
  const breakpointEvent = event as CxxUnistylesBreakpointEvent
48
47
 
49
- setBreakpoint(breakpointEvent.payload.currentBreakpoint)
48
+ setBreakpoint(breakpointEvent.payload.breakpoint)
50
49
 
51
50
  return
52
51
  }