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

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