react-native-unistyles 2.0.0-alpha.5 → 2.0.0-alpha.7
Sign up to get free protection for your applications and to get access to all the features.
- package/cxx/UnistylesRuntime.cpp +262 -0
- package/cxx/UnistylesRuntime.h +61 -0
- package/lib/commonjs/Unistyles.js +1 -1
- package/lib/commonjs/Unistyles.js.map +1 -1
- package/lib/commonjs/UnistylesEngine.js +9 -5
- package/lib/commonjs/UnistylesEngine.js.map +1 -1
- package/lib/commonjs/createStyleSheet.js.map +1 -1
- package/lib/commonjs/index.js +7 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/types/cxx.js.map +1 -1
- package/lib/commonjs/useStyles.js +0 -2
- package/lib/commonjs/useStyles.js.map +1 -1
- package/lib/commonjs/useUnistyles.js.map +1 -1
- package/lib/commonjs/utils/breakpoints.js +11 -68
- package/lib/commonjs/utils/breakpoints.js.map +1 -1
- package/lib/commonjs/utils/common.js +3 -1
- package/lib/commonjs/utils/common.js.map +1 -1
- package/lib/commonjs/utils/index.js +8 -0
- package/lib/commonjs/utils/index.js.map +1 -1
- package/lib/commonjs/utils/mediaQueries.js +57 -155
- package/lib/commonjs/utils/mediaQueries.js.map +1 -1
- package/lib/commonjs/utils/mq.js +75 -0
- package/lib/commonjs/utils/mq.js.map +1 -0
- package/lib/commonjs/utils/styles.js +11 -51
- package/lib/commonjs/utils/styles.js.map +1 -1
- package/lib/module/Unistyles.js +2 -2
- package/lib/module/Unistyles.js.map +1 -1
- package/lib/module/UnistylesEngine.js +7 -3
- package/lib/module/UnistylesEngine.js.map +1 -1
- package/lib/module/createStyleSheet.js.map +1 -1
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/types/cxx.js.map +1 -1
- package/lib/module/useStyles.js +0 -3
- package/lib/module/useStyles.js.map +1 -1
- package/lib/module/useUnistyles.js.map +1 -1
- package/lib/module/utils/breakpoints.js +11 -68
- package/lib/module/utils/breakpoints.js.map +1 -1
- package/lib/module/utils/common.js +2 -0
- package/lib/module/utils/common.js.map +1 -1
- package/lib/module/utils/index.js +1 -0
- package/lib/module/utils/index.js.map +1 -1
- package/lib/module/utils/mediaQueries.js +57 -155
- package/lib/module/utils/mediaQueries.js.map +1 -1
- package/lib/module/utils/mq.js +69 -0
- package/lib/module/utils/mq.js.map +1 -0
- package/lib/module/utils/styles.js +10 -51
- package/lib/module/utils/styles.js.map +1 -1
- package/lib/typescript/src/Unistyles.d.ts +2 -2
- package/lib/typescript/src/Unistyles.d.ts.map +1 -1
- package/lib/typescript/src/UnistylesEngine.d.ts +4 -1
- package/lib/typescript/src/UnistylesEngine.d.ts.map +1 -1
- package/lib/typescript/src/createStyleSheet.d.ts +2 -5
- package/lib/typescript/src/createStyleSheet.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +1 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/types/breakpoints.d.ts +2 -1
- package/lib/typescript/src/types/breakpoints.d.ts.map +1 -1
- package/lib/typescript/src/types/core.d.ts +18 -16
- package/lib/typescript/src/types/core.d.ts.map +1 -1
- package/lib/typescript/src/types/cxx.d.ts +7 -1
- package/lib/typescript/src/types/cxx.d.ts.map +1 -1
- package/lib/typescript/src/types/index.d.ts +1 -1
- package/lib/typescript/src/types/index.d.ts.map +1 -1
- package/lib/typescript/src/types/mediaQueries.d.ts +5 -3
- package/lib/typescript/src/types/mediaQueries.d.ts.map +1 -1
- package/lib/typescript/src/useStyles.d.ts +2 -4
- package/lib/typescript/src/useStyles.d.ts.map +1 -1
- package/lib/typescript/src/useUnistyles.d.ts +4 -5
- package/lib/typescript/src/useUnistyles.d.ts.map +1 -1
- package/lib/typescript/src/utils/breakpoints.d.ts +2 -60
- package/lib/typescript/src/utils/breakpoints.d.ts.map +1 -1
- package/lib/typescript/src/utils/common.d.ts +2 -0
- package/lib/typescript/src/utils/common.d.ts.map +1 -1
- package/lib/typescript/src/utils/index.d.ts +1 -0
- package/lib/typescript/src/utils/index.d.ts.map +1 -1
- package/lib/typescript/src/utils/mediaQueries.d.ts +8 -127
- package/lib/typescript/src/utils/mediaQueries.d.ts.map +1 -1
- package/lib/typescript/src/utils/mq.d.ts +15 -0
- package/lib/typescript/src/utils/mq.d.ts.map +1 -0
- package/lib/typescript/src/utils/styles.d.ts +1 -46
- package/lib/typescript/src/utils/styles.d.ts.map +1 -1
- package/package.json +10 -1
- package/src/Unistyles.ts +3 -3
- package/src/UnistylesEngine.ts +12 -3
- package/src/createStyleSheet.ts +2 -5
- package/src/index.ts +1 -0
- package/src/types/breakpoints.ts +6 -3
- package/src/types/core.ts +25 -22
- package/src/types/cxx.ts +8 -1
- package/src/types/index.ts +1 -1
- package/src/types/mediaQueries.ts +9 -4
- package/src/useStyles.ts +3 -6
- package/src/useUnistyles.ts +11 -4
- package/src/utils/breakpoints.ts +14 -71
- package/src/utils/common.ts +2 -0
- package/src/utils/index.ts +1 -0
- package/src/utils/mediaQueries.ts +102 -163
- package/src/utils/mq.ts +77 -0
- package/src/utils/styles.ts +13 -55
@@ -0,0 +1,262 @@
|
|
1
|
+
#include "UnistylesRuntime.h"
|
2
|
+
|
3
|
+
#include <string>
|
4
|
+
#include <vector>
|
5
|
+
|
6
|
+
#pragma region HostObject
|
7
|
+
|
8
|
+
std::vector<jsi::PropNameID> UnistylesRuntime::getPropertyNames(jsi::Runtime& runtime) {
|
9
|
+
std::vector<jsi::PropNameID> properties;
|
10
|
+
|
11
|
+
// getters
|
12
|
+
properties.push_back(jsi::PropNameID::forUtf8(runtime, std::string("screenWidth")));
|
13
|
+
properties.push_back(jsi::PropNameID::forUtf8(runtime, std::string("screenHeight")));
|
14
|
+
properties.push_back(jsi::PropNameID::forUtf8(runtime, std::string("hasAdaptiveThemes")));
|
15
|
+
properties.push_back(jsi::PropNameID::forUtf8(runtime, std::string("themeName")));
|
16
|
+
properties.push_back(jsi::PropNameID::forUtf8(runtime, std::string("breakpoint")));
|
17
|
+
properties.push_back(jsi::PropNameID::forUtf8(runtime, std::string("colorScheme")));
|
18
|
+
properties.push_back(jsi::PropNameID::forUtf8(runtime, std::string("sortedBreakpointPairs")));
|
19
|
+
properties.push_back(jsi::PropNameID::forUtf8(runtime, std::string("useBreakpoints")));
|
20
|
+
properties.push_back(jsi::PropNameID::forUtf8(runtime, std::string("useTheme")));
|
21
|
+
properties.push_back(jsi::PropNameID::forUtf8(runtime, std::string("useAdaptiveThemes")));
|
22
|
+
|
23
|
+
// setters
|
24
|
+
properties.push_back(jsi::PropNameID::forUtf8(runtime, std::string("themes")));
|
25
|
+
|
26
|
+
return properties;
|
27
|
+
}
|
28
|
+
|
29
|
+
|
30
|
+
jsi::Value UnistylesRuntime::get(jsi::Runtime& runtime, const jsi::PropNameID& propNameId) {
|
31
|
+
std::string propName = propNameId.utf8(runtime);
|
32
|
+
|
33
|
+
if (propName == "screenWidth") {
|
34
|
+
return jsi::Value(this->screenWidth);
|
35
|
+
}
|
36
|
+
|
37
|
+
if (propName == "screenHeight") {
|
38
|
+
return jsi::Value(this->screenHeight);
|
39
|
+
}
|
40
|
+
|
41
|
+
if (propName == "hasAdaptiveThemes") {
|
42
|
+
return jsi::Value(this->hasAdaptiveThemes);
|
43
|
+
}
|
44
|
+
|
45
|
+
if (propName == "themeName") {
|
46
|
+
return !this->themeName.empty()
|
47
|
+
? jsi::Value(jsi::String::createFromUtf8(runtime, this->themeName))
|
48
|
+
: this->getThemeOrFail(runtime);
|
49
|
+
}
|
50
|
+
|
51
|
+
if (propName == "breakpoint") {
|
52
|
+
return !this->breakpoint.empty()
|
53
|
+
? jsi::Value(jsi::String::createFromUtf8(runtime, this->breakpoint))
|
54
|
+
: jsi::Value::undefined();
|
55
|
+
}
|
56
|
+
|
57
|
+
if (propName == "colorScheme") {
|
58
|
+
return jsi::Value(jsi::String::createFromUtf8(runtime, this->colorScheme));
|
59
|
+
}
|
60
|
+
|
61
|
+
if (propName == "sortedBreakpointPairs") {
|
62
|
+
std::unique_ptr<jsi::Array> sortedBreakpointEntriesArray = std::make_unique<jsi::Array>(runtime, this->sortedBreakpointPairs.size());
|
63
|
+
|
64
|
+
for (size_t i = 0; i < this->sortedBreakpointPairs.size(); ++i) {
|
65
|
+
std::unique_ptr<jsi::Array> pairArray = std::make_unique<jsi::Array>(runtime, 2);
|
66
|
+
jsi::String nameValue = jsi::String::createFromUtf8(runtime, this->sortedBreakpointPairs[i].first);
|
67
|
+
|
68
|
+
pairArray->setValueAtIndex(runtime, 0, nameValue);
|
69
|
+
pairArray->setValueAtIndex(runtime, 1, jsi::Value(this->sortedBreakpointPairs[i].second));
|
70
|
+
sortedBreakpointEntriesArray->setValueAtIndex(runtime, i, *pairArray);
|
71
|
+
}
|
72
|
+
|
73
|
+
return jsi::Value(runtime, *sortedBreakpointEntriesArray);
|
74
|
+
}
|
75
|
+
|
76
|
+
if (propName == "useBreakpoints") {
|
77
|
+
return jsi::Function::createFromHostFunction(
|
78
|
+
runtime,
|
79
|
+
jsi::PropNameID::forAscii(runtime, "useBreakpoints"),
|
80
|
+
1,
|
81
|
+
[this](jsi::Runtime &runtime, const jsi::Value &thisVal, const jsi::Value *arguments, size_t count) -> jsi::Value {
|
82
|
+
jsi::Object breakpointsObj = arguments[0].asObject(runtime);
|
83
|
+
jsi::Array propertyNames = breakpointsObj.getPropertyNames(runtime);
|
84
|
+
std::vector<std::pair<std::string, double>> sortedBreakpointEntriesVec;
|
85
|
+
|
86
|
+
for (size_t i = 0; i < propertyNames.size(runtime); ++i) {
|
87
|
+
jsi::Value propNameValue = propertyNames.getValueAtIndex(runtime, i);
|
88
|
+
std::string name = propNameValue.asString(runtime).utf8(runtime);
|
89
|
+
jsi::PropNameID propNameID = jsi::PropNameID::forUtf8(runtime, name);
|
90
|
+
jsi::Value value = breakpointsObj.getProperty(runtime, propNameID);
|
91
|
+
|
92
|
+
if (value.isNumber()) {
|
93
|
+
double breakpointValue = value.asNumber();
|
94
|
+
sortedBreakpointEntriesVec.push_back(std::make_pair(name, breakpointValue));
|
95
|
+
}
|
96
|
+
}
|
97
|
+
|
98
|
+
std::sort(sortedBreakpointEntriesVec.begin(), sortedBreakpointEntriesVec.end(), [](const std::pair<std::string, double>& a, const std::pair<std::string, double>& b) {
|
99
|
+
return a.second < b.second;
|
100
|
+
});
|
101
|
+
|
102
|
+
if (sortedBreakpointEntriesVec.size() == 0) {
|
103
|
+
throw jsi::JSError(runtime, UnistylesErrorBreakpointsCannotBeEmpty);
|
104
|
+
}
|
105
|
+
|
106
|
+
if (sortedBreakpointEntriesVec.at(0).second != 0) {
|
107
|
+
throw jsi::JSError(runtime, UnistylesErrorBreakpointsMustStartFromZero);
|
108
|
+
}
|
109
|
+
|
110
|
+
this->sortedBreakpointPairs = sortedBreakpointEntriesVec;
|
111
|
+
|
112
|
+
std::string breakpoint = this->getBreakpointFromScreenWidth(this->screenWidth, sortedBreakpointEntriesVec);
|
113
|
+
|
114
|
+
this->breakpoint = breakpoint;
|
115
|
+
|
116
|
+
return jsi::Value::undefined();
|
117
|
+
}
|
118
|
+
);
|
119
|
+
}
|
120
|
+
|
121
|
+
if (propName == "useTheme") {
|
122
|
+
return jsi::Function::createFromHostFunction(runtime,
|
123
|
+
jsi::PropNameID::forAscii(runtime, "useTheme"),
|
124
|
+
1,
|
125
|
+
[this](jsi::Runtime &runtime, const jsi::Value &thisVal, const jsi::Value *arguments, size_t count) -> jsi::Value {
|
126
|
+
std::string themeName = arguments[0].asString(runtime).utf8(runtime);
|
127
|
+
|
128
|
+
this->themeName = themeName;
|
129
|
+
this->onThemeChange(themeName);
|
130
|
+
|
131
|
+
return jsi::Value::undefined();
|
132
|
+
}
|
133
|
+
);
|
134
|
+
}
|
135
|
+
|
136
|
+
if (propName == "useAdaptiveThemes") {
|
137
|
+
return jsi::Function::createFromHostFunction(runtime,
|
138
|
+
jsi::PropNameID::forAscii(runtime, "useAdaptiveThemes"),
|
139
|
+
1,
|
140
|
+
[this](jsi::Runtime &runtime, const jsi::Value &thisVal, const jsi::Value *arguments, size_t count) -> jsi::Value {
|
141
|
+
bool enableAdaptiveThemes = arguments[0].asBool();
|
142
|
+
|
143
|
+
this->hasAdaptiveThemes = enableAdaptiveThemes;
|
144
|
+
|
145
|
+
if (!enableAdaptiveThemes || !this->supportsAutomaticColorScheme) {
|
146
|
+
return jsi::Value::undefined();
|
147
|
+
}
|
148
|
+
|
149
|
+
this->themeName = this->colorScheme;
|
150
|
+
this->onThemeChange(this->themeName);
|
151
|
+
|
152
|
+
return jsi::Value::undefined();
|
153
|
+
}
|
154
|
+
);
|
155
|
+
}
|
156
|
+
|
157
|
+
if (propName == "unregister") {
|
158
|
+
return jsi::Function::createFromHostFunction(runtime,
|
159
|
+
jsi::PropNameID::forAscii(runtime, "unregister"),
|
160
|
+
1,
|
161
|
+
[this](jsi::Runtime &runtime, const jsi::Value &thisVal, const jsi::Value *arguments, size_t count) -> jsi::Value {
|
162
|
+
this->hasAdaptiveThemes = false;
|
163
|
+
this->supportsAutomaticColorScheme = false;
|
164
|
+
this->themeName = "";
|
165
|
+
this->breakpoint = "";
|
166
|
+
this->themes.clear();
|
167
|
+
this->sortedBreakpointPairs.clear();
|
168
|
+
|
169
|
+
return jsi::Value::undefined();
|
170
|
+
}
|
171
|
+
);
|
172
|
+
}
|
173
|
+
|
174
|
+
return jsi::Value::undefined();
|
175
|
+
}
|
176
|
+
|
177
|
+
void UnistylesRuntime::set(jsi::Runtime& runtime, const jsi::PropNameID& propNameId, const jsi::Value& value) {
|
178
|
+
std::string propName = propNameId.utf8(runtime);
|
179
|
+
|
180
|
+
if (propName == "themes" && value.isObject()) {
|
181
|
+
jsi::Array themes = value.asObject(runtime).asArray(runtime);
|
182
|
+
std::vector<std::string> themesVector;
|
183
|
+
size_t length = themes.size(runtime);
|
184
|
+
|
185
|
+
for (size_t i = 0; i < length; ++i) {
|
186
|
+
jsi::Value element = themes.getValueAtIndex(runtime, i);
|
187
|
+
|
188
|
+
if (element.isString()) {
|
189
|
+
std::string theme = element.asString(runtime).utf8(runtime);
|
190
|
+
themesVector.push_back(theme);
|
191
|
+
}
|
192
|
+
}
|
193
|
+
|
194
|
+
if (themesVector.size() == 0) {
|
195
|
+
throw jsi::JSError(runtime, UnistylesErrorThemesCannotBeEmpty);
|
196
|
+
}
|
197
|
+
|
198
|
+
this->themes = themesVector;
|
199
|
+
|
200
|
+
bool hasLightTheme = std::find(themesVector.begin(), themesVector.end(), "light") != themesVector.end();
|
201
|
+
bool hasDarkTheme = std::find(themesVector.begin(), themesVector.end(), "dark") != themesVector.end();
|
202
|
+
|
203
|
+
this->supportsAutomaticColorScheme = hasLightTheme && hasDarkTheme;
|
204
|
+
|
205
|
+
return;
|
206
|
+
}
|
207
|
+
}
|
208
|
+
|
209
|
+
#pragma endregion
|
210
|
+
#pragma region Helpers
|
211
|
+
|
212
|
+
std::string UnistylesRuntime::getBreakpointFromScreenWidth(int width, const std::vector<std::pair<std::string, double>>& sortedBreakpointPairs) {
|
213
|
+
for (size_t i = 0; i < sortedBreakpointPairs.size(); ++i) {
|
214
|
+
const auto& [key, value] = sortedBreakpointPairs[i];
|
215
|
+
const double maxVal = (i + 1 < sortedBreakpointPairs.size()) ? sortedBreakpointPairs[i + 1].second : std::numeric_limits<double>::infinity();
|
216
|
+
|
217
|
+
if (width >= value && width < maxVal) {
|
218
|
+
return key;
|
219
|
+
}
|
220
|
+
}
|
221
|
+
|
222
|
+
return sortedBreakpointPairs.empty() ? "" : sortedBreakpointPairs.back().first;
|
223
|
+
}
|
224
|
+
|
225
|
+
void UnistylesRuntime::handleScreenSizeChange(int width, int height) {
|
226
|
+
std::string breakpoint = this->getBreakpointFromScreenWidth(width, this->sortedBreakpointPairs);
|
227
|
+
|
228
|
+
this->breakpoint = breakpoint;
|
229
|
+
this->screenWidth = width;
|
230
|
+
this->screenHeight = height;
|
231
|
+
|
232
|
+
int orientation = width > height
|
233
|
+
? UnistylesOrientationLandscape
|
234
|
+
: UnistylesOrientationPortrait;
|
235
|
+
|
236
|
+
this->onBreakpointChange(breakpoint, orientation, width, height);
|
237
|
+
}
|
238
|
+
|
239
|
+
void UnistylesRuntime::handleAppearanceChange(std::string colorScheme) {
|
240
|
+
this->colorScheme = colorScheme;
|
241
|
+
|
242
|
+
if (!this->supportsAutomaticColorScheme || !this->hasAdaptiveThemes) {
|
243
|
+
return;
|
244
|
+
}
|
245
|
+
|
246
|
+
this->themeName = this->colorScheme;
|
247
|
+
this->onThemeChange(this->themeName);
|
248
|
+
}
|
249
|
+
|
250
|
+
jsi::Value UnistylesRuntime::getThemeOrFail(jsi::Runtime& runtime) {
|
251
|
+
if (this->themes.size() == 1) {
|
252
|
+
std::string themeName = this->themes.at(0);
|
253
|
+
|
254
|
+
this->themeName = themeName;
|
255
|
+
|
256
|
+
return jsi::String::createFromUtf8(runtime, themeName);
|
257
|
+
}
|
258
|
+
|
259
|
+
return jsi::Value().undefined();
|
260
|
+
}
|
261
|
+
|
262
|
+
#pragma endregion
|
@@ -0,0 +1,61 @@
|
|
1
|
+
#pragma once
|
2
|
+
|
3
|
+
#include <jsi/jsi.h>
|
4
|
+
#include <vector>
|
5
|
+
|
6
|
+
using namespace facebook;
|
7
|
+
|
8
|
+
const int UnistylesOrientationPortrait = 1;
|
9
|
+
const int UnistylesOrientationLandscape = 2;
|
10
|
+
|
11
|
+
const std::string UnistylesDarkScheme = "dark";
|
12
|
+
const std::string UnistylesLightScheme = "light";
|
13
|
+
const std::string UnistylesUnspecifiedScheme = "unspecified";
|
14
|
+
|
15
|
+
const std::string UnistylesErrorBreakpointsCannotBeEmpty = "UNISTYLES_ERROR_BREAKPOINTS_CANNOT_BE_EMPTY'";
|
16
|
+
const std::string UnistylesErrorBreakpointsMustStartFromZero = "UNISTYLES_ERROR_BREAKPOINTS_MUST_START_FROM_ZER0";
|
17
|
+
const std::string UnistylesErrorThemesCannotBeEmpty = "UNISTYLES_ERROR_THEMES_CANNOT_BE_EMPTY";
|
18
|
+
|
19
|
+
typedef void(^UnistylesThemeChangeEvent)(std::string themeName);
|
20
|
+
typedef void(^UnistylesBreakpointChangeEvent)(std::string breakpoint, int layout, int screenWidth, int screenHeight);
|
21
|
+
|
22
|
+
class JSI_EXPORT UnistylesRuntime : public jsi::HostObject {
|
23
|
+
private:
|
24
|
+
UnistylesThemeChangeEvent onThemeChange;
|
25
|
+
UnistylesBreakpointChangeEvent onBreakpointChange;
|
26
|
+
|
27
|
+
int screenWidth;
|
28
|
+
int screenHeight;
|
29
|
+
std::string colorScheme;
|
30
|
+
|
31
|
+
public:
|
32
|
+
UnistylesRuntime(
|
33
|
+
UnistylesThemeChangeEvent onThemeChange,
|
34
|
+
UnistylesBreakpointChangeEvent onBreakpointChange,
|
35
|
+
int screenWidth,
|
36
|
+
int screenHeight,
|
37
|
+
std::string colorScheme
|
38
|
+
): onThemeChange(onThemeChange),
|
39
|
+
onBreakpointChange(onBreakpointChange),
|
40
|
+
screenWidth(screenWidth),
|
41
|
+
screenHeight(screenHeight),
|
42
|
+
colorScheme(colorScheme) {}
|
43
|
+
|
44
|
+
bool hasAdaptiveThemes;
|
45
|
+
bool supportsAutomaticColorScheme;
|
46
|
+
|
47
|
+
std::string themeName;
|
48
|
+
std::string breakpoint;
|
49
|
+
std::vector<std::string> themes;
|
50
|
+
std::vector<std::pair<std::string, double>> sortedBreakpointPairs;
|
51
|
+
|
52
|
+
jsi::Value get(jsi::Runtime&, const jsi::PropNameID& name) override;
|
53
|
+
void set(jsi::Runtime& runtime, const jsi::PropNameID& propNameId, const jsi::Value& value) override;
|
54
|
+
std::vector<jsi::PropNameID> getPropertyNames(jsi::Runtime& runtime) override;
|
55
|
+
|
56
|
+
void handleScreenSizeChange(int width, int height);
|
57
|
+
void handleAppearanceChange(std::string colorScheme);
|
58
|
+
|
59
|
+
jsi::Value getThemeOrFail(jsi::Runtime&);
|
60
|
+
std::string getBreakpointFromScreenWidth(int width, const std::vector<std::pair<std::string, double>>& sortedBreakpointEntries);
|
61
|
+
};
|
@@ -20,7 +20,7 @@ class Unistyles {
|
|
20
20
|
this._bridge = global.__UNISTYLES__;
|
21
21
|
this._registry = new _UnistyleRegistry.UnistyleRegistry(this._bridge);
|
22
22
|
this._runtime = new _UnistylesRuntime.UnistylesRuntime(this._bridge, this._registry);
|
23
|
-
this._engine = new _UnistylesEngine.
|
23
|
+
this._engine = new _UnistylesEngine.UnistylesBuiltInEngine(this._registry, this._runtime);
|
24
24
|
}
|
25
25
|
get registry() {
|
26
26
|
return this._registry;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_UnistylesModule","require","_UnistylesRuntime","_UnistylesEngine","_UnistyleRegistry","_types","Unistyles","constructor","isInstalled","UnistylesModule","install","Error","UnistylesError","RuntimeUnavailable","_bridge","global","__UNISTYLES__","_registry","UnistyleRegistry","_runtime","UnistylesRuntime","_engine","
|
1
|
+
{"version":3,"names":["_UnistylesModule","require","_UnistylesRuntime","_UnistylesEngine","_UnistyleRegistry","_types","Unistyles","constructor","isInstalled","UnistylesModule","install","Error","UnistylesError","RuntimeUnavailable","_bridge","global","__UNISTYLES__","_registry","UnistyleRegistry","_runtime","UnistylesRuntime","_engine","UnistylesBuiltInEngine","registry","runtime","engine","unistyles","exports"],"sourceRoot":"../../src","sources":["Unistyles.ts"],"mappings":";;;;;;AAAA,IAAAA,gBAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAD,OAAA;AACA,IAAAE,gBAAA,GAAAF,OAAA;AACA,IAAAG,iBAAA,GAAAH,OAAA;AAEA,IAAAI,MAAA,GAAAJ,OAAA;AAEA,MAAMK,SAAS,CAAC;EAMZC,WAAWA,CAAA,EAAG;IACV,MAAMC,WAAW,GAAGC,gCAAe,EAAEC,OAAO,CAAC,CAAC,IAAI,KAAK;IAEvD,IAAI,CAACF,WAAW,EAAE;MACd,MAAM,IAAIG,KAAK,CAACC,qBAAc,CAACC,kBAAkB,CAAC;IACtD;;IAEA;IACA,IAAI,CAACC,OAAO,GAAGC,MAAM,CAACC,aAAgC;IACtD,IAAI,CAACC,SAAS,GAAG,IAAIC,kCAAgB,CAAC,IAAI,CAACJ,OAAO,CAAC;IACnD,IAAI,CAACK,QAAQ,GAAG,IAAIC,kCAAgB,CAAC,IAAI,CAACN,OAAO,EAAE,IAAI,CAACG,SAAS,CAAC;IAClE,IAAI,CAACI,OAAO,GAAG,IAAIC,uCAAsB,CAAC,IAAI,CAACL,SAAS,EAAE,IAAI,CAACE,QAAQ,CAAC;EAC5E;EAEA,IAAWI,QAAQA,CAAA,EAAG;IAClB,OAAO,IAAI,CAACN,SAAS;EACzB;EAEA,IAAWO,OAAOA,CAAA,EAAG;IACjB,OAAO,IAAI,CAACL,QAAQ;EACxB;EAEA,IAAWM,MAAMA,CAAA,EAAG;IAChB,OAAO,IAAI,CAACJ,OAAO;EACvB;AACJ;AAEO,MAAMK,SAAS,GAAAC,OAAA,CAAAD,SAAA,GAAG,IAAIpB,SAAS,CAAC,CAAC"}
|
@@ -3,20 +3,24 @@
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
4
4
|
value: true
|
5
5
|
});
|
6
|
-
exports.
|
7
|
-
|
8
|
-
class
|
9
|
-
// @ts-ignore
|
6
|
+
exports.UnistylesBuiltInEngine = void 0;
|
7
|
+
var _utils = require("./utils");
|
8
|
+
class UnistylesBuiltInEngine {
|
10
9
|
constructor(registry, runtime) {
|
11
10
|
this.registry = registry;
|
12
11
|
this.runtime = runtime;
|
13
12
|
this.registry = registry;
|
14
13
|
this.runtime = runtime;
|
15
14
|
}
|
15
|
+
isMediaQuery = key => {
|
16
|
+
const regex = /(:w|:h)/;
|
17
|
+
return key.length > 0 && regex.test(key);
|
18
|
+
};
|
19
|
+
didMatchMediaQuery = keys => (0, _utils.getKeyForCustomMediaQuery)(keys, this.runtime.screen, this.registry.breakpoints);
|
16
20
|
|
17
21
|
// UnistylesEngine.parseStyleSheet
|
18
22
|
// UnistylesEngine.parseStyle
|
19
23
|
// UnistylesEngine.proxify
|
20
24
|
}
|
21
|
-
exports.
|
25
|
+
exports.UnistylesBuiltInEngine = UnistylesBuiltInEngine;
|
22
26
|
//# sourceMappingURL=UnistylesEngine.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["
|
1
|
+
{"version":3,"names":["_utils","require","UnistylesBuiltInEngine","constructor","registry","runtime","isMediaQuery","key","regex","length","test","didMatchMediaQuery","keys","getKeyForCustomMediaQuery","screen","breakpoints","exports"],"sourceRoot":"../../src","sources":["UnistylesEngine.ts"],"mappings":";;;;;;AAEA,IAAAA,MAAA,GAAAC,OAAA;AAGO,MAAMC,sBAAsB,CAA4B;EAC3DC,WAAWA,CAASC,QAA0B,EAAUC,OAAyB,EAAE;IAAA,KAA/DD,QAA0B,GAA1BA,QAA0B;IAAA,KAAUC,OAAyB,GAAzBA,OAAyB;IAC7E,IAAI,CAACD,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACC,OAAO,GAAGA,OAAO;EAC1B;EAEOC,YAAY,GAAIC,GAAW,IAAK;IACnC,MAAMC,KAAK,GAAG,SAAS;IAEvB,OAAOD,GAAG,CAACE,MAAM,GAAG,CAAC,IAAID,KAAK,CAACE,IAAI,CAACH,GAAG,CAAC;EAC5C,CAAC;EAEMI,kBAAkB,GAAIC,IAAgB,IACzC,IAAAC,gCAAyB,EAACD,IAAI,EAAE,IAAI,CAACP,OAAO,CAACS,MAAM,EAAE,IAAI,CAACV,QAAQ,CAACW,WAAW,CAAC;;EAEnF;EACA;EACA;AACJ;AAACC,OAAA,CAAAd,sBAAA,GAAAA,sBAAA"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["createStyleSheet","styles","exports"],"sourceRoot":"../../src","sources":["createStyleSheet.ts"],"mappings":";;;;;;
|
1
|
+
{"version":3,"names":["createStyleSheet","styles","exports"],"sourceRoot":"../../src","sources":["createStyleSheet.ts"],"mappings":";;;;;;AAEO,MAAMA,gBAAgB,GAAUC,MAA4F,IAAY;EAC3I,IAAI,OAAOA,MAAM,KAAK,UAAU,EAAE;IAC9B,OAAOA,MAAM;EACjB;EAEA,OAAOA,MAAM;AACjB,CAAC;AAAAC,OAAA,CAAAF,gBAAA,GAAAA,gBAAA"}
|
package/lib/commonjs/index.js
CHANGED
@@ -16,6 +16,12 @@ Object.defineProperty(exports, "createStyleSheet", {
|
|
16
16
|
return _createStyleSheet.createStyleSheet;
|
17
17
|
}
|
18
18
|
});
|
19
|
+
Object.defineProperty(exports, "mq", {
|
20
|
+
enumerable: true,
|
21
|
+
get: function () {
|
22
|
+
return _utils.mq;
|
23
|
+
}
|
24
|
+
});
|
19
25
|
Object.defineProperty(exports, "useInitialTheme", {
|
20
26
|
enumerable: true,
|
21
27
|
get: function () {
|
@@ -30,6 +36,7 @@ Object.defineProperty(exports, "useStyles", {
|
|
30
36
|
});
|
31
37
|
var _Unistyles = require("./Unistyles");
|
32
38
|
var _types = require("./types");
|
39
|
+
var _utils = require("./utils");
|
33
40
|
var _useInitialTheme = require("./useInitialTheme");
|
34
41
|
var _useStyles = require("./useStyles");
|
35
42
|
var _createStyleSheet = require("./createStyleSheet");
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_Unistyles","require","_types","_useInitialTheme","_useStyles","_createStyleSheet","addThemes","addBreakpoints","addConfig","unistyles","registry","UnistylesRuntime","exports","runtime","UnistylesRegistry","__dangerouslyUnregister","dangerouslyUnregister"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"
|
1
|
+
{"version":3,"names":["_Unistyles","require","_types","_utils","_useInitialTheme","_useStyles","_createStyleSheet","addThemes","addBreakpoints","addConfig","unistyles","registry","UnistylesRuntime","exports","runtime","UnistylesRegistry","__dangerouslyUnregister","dangerouslyUnregister"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AAEA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,gBAAA,GAAAH,OAAA;AAEA,IAAAI,UAAA,GAAAJ,OAAA;AACA,IAAAK,iBAAA,GAAAL,OAAA;AAEA,MAAM;EAAEM,SAAS;EAAEC,cAAc;EAAEC;AAAW,CAAC,GAAGC,oBAAS,CAACC,QAAQ;AACpE,MAAMC,gBAAgB,GAAAC,OAAA,CAAAD,gBAAA,GAAGF,oBAAS,CAACI,OAAO;AAC1C,MAAMC,iBAAiB,GAAAF,OAAA,CAAAE,iBAAA,GAAG;EACtBR,SAAS;EACTC,cAAc;EACdC;AACJ,CAAC;AAEM,MAAMO,uBAAuB,GAAAH,OAAA,CAAAG,uBAAA,GAAGN,oBAAS,CAACC,QAAQ,CAACM,qBAAqB"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["ScreenOrientation","exports","CxxUnistylesEventTypes","UnistylesError"],"sourceRoot":"../../../src","sources":["types/cxx.ts"],"mappings":";;;;;;
|
1
|
+
{"version":3,"names":["ScreenOrientation","exports","CxxUnistylesEventTypes","UnistylesError"],"sourceRoot":"../../../src","sources":["types/cxx.ts"],"mappings":";;;;;;IAYYA,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,0BAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAjBA,iBAAiB,CAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA;AAAA,IAyBjBE,sBAAsB,GAAAD,OAAA,CAAAC,sBAAA,0BAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAA,OAAtBA,sBAAsB;AAAA;AAAA,IAuBtBC,cAAc,GAAAF,OAAA,CAAAE,cAAA,0BAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAA,OAAdA,cAAc;AAAA"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_react","require","_reactNative","_utils","_useUnistyles","useStyles","stylesheet","theme","breakpoint","screenSize","useUnistyles","styles","parsedStyles","useMemo","dynamicStyleSheet","Object","entries","reduce","acc","_ref","key","value","style","proxifyFunction","StyleSheet","create","parseStyle","exports"],"sourceRoot":"../../src","sources":["useStyles.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AAEA,IAAAG,aAAA,GAAAH,OAAA;
|
1
|
+
{"version":3,"names":["_react","require","_reactNative","_utils","_useUnistyles","useStyles","stylesheet","theme","breakpoint","screenSize","useUnistyles","styles","parsedStyles","useMemo","dynamicStyleSheet","Object","entries","reduce","acc","_ref","key","value","style","proxifyFunction","StyleSheet","create","parseStyle","exports"],"sourceRoot":"../../src","sources":["useStyles.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AAEA,IAAAG,aAAA,GAAAH,OAAA;AAGO,MAAMI,SAAS,GAAsCC,UAAyD,IAAK;EACtH,MAAM;IAAEC,KAAK;IAAEC,UAAU;IAAEC;EAAW,CAAC,GAAG,IAAAC,0BAAY,EAAC,CAAC;EAExD,IAAI,CAACJ,UAAU,EAAE;IACb,OAAO;MACHC,KAAK;MACLC,UAAU;MACVG,MAAM,EAAE,CAAC;IACb,CAAC;EACL;EAEA,MAAMC,YAAY,GAAG,IAAAC,cAAO,EAAC,MAAM,OAAOP,UAAU,KAAK,UAAU,GAC7DA,UAAU,CAACC,KAAK,CAAC,GACjBD,UAAU,EAAE,CAACC,KAAK,EAAED,UAAU,CAAC,CAAC;EAEtC,MAAMQ,iBAAiB,GAAG,IAAAD,cAAO,EAAC,MAAME,MAAM,CACzCC,OAAO,CAACJ,YAAY,CAAC,CACrBK,MAAM,CAAC,CAACC,GAAG,EAAAC,IAAA,KAAmB;IAAA,IAAjB,CAACC,GAAG,EAAEC,KAAK,CAAC,GAAAF,IAAA;IACtB,MAAMG,KAAK,GAAGD,KAA8B;IAE5C,IAAI,OAAOA,KAAK,KAAK,UAAU,EAAE;MAC7B,OAAO;QACH,GAAGH,GAAG;QACN,CAACE,GAAG,GAAG,IAAAG,sBAAe,EAACF,KAAK,EAAEb,UAAU,EAAEC,UAAU;MACxD,CAAC;IACL;IAEA,OAAOe,uBAAU,CAACC,MAAM,CAAC;MACrB,GAAGP,GAAG;MACN,CAACE,GAAG,GAAG,IAAAM,iBAAU,EAAKJ,KAAK,EAAEd,UAAU,EAAEC,UAAU;IACvD,CAAC,CAAC;EACN,CAAC,EAAE,CAAC,CAAO,CAAC,EAAE,CAACD,UAAU,EAAEC,UAAU,EAAEG,YAAY,CAAC,CAAC;EAEzD,OAAO;IACHL,KAAK;IACLC,UAAU;IACVG,MAAM,EAAEG;EACZ,CAAC;AACL,CAAC;AAAAa,OAAA,CAAAtB,SAAA,GAAAA,SAAA"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_react","_types","_Unistyles","unistylesEvents","NativeEventEmitter","NativeModules","Unistyles","useUnistyles","orientation","setOrientation","useState","unistyles","runtime","theme","setTheme","getTheme","themeName","breakpoint","setBreakpoint","screenSize","setScreenSize","width","screen","height","useEffect","subscription","addListener","event","type","CxxUnistylesEventTypes","Theme","themeEvent","payload","Layout","layoutEvent","remove","exports"],"sourceRoot":"../../src","sources":["useUnistyles.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;
|
1
|
+
{"version":3,"names":["_reactNative","require","_react","_types","_Unistyles","unistylesEvents","NativeEventEmitter","NativeModules","Unistyles","useUnistyles","orientation","setOrientation","useState","unistyles","runtime","theme","setTheme","getTheme","themeName","breakpoint","setBreakpoint","screenSize","setScreenSize","width","screen","height","useEffect","subscription","addListener","event","type","CxxUnistylesEventTypes","Theme","themeEvent","payload","Layout","layoutEvent","remove","exports"],"sourceRoot":"../../src","sources":["useUnistyles.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AAQA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AAGA,MAAMI,eAAe,GAAG,IAAIC,+BAAkB,CAACC,0BAAa,CAACC,SAAS,CAAC;AAEhE,MAAMC,YAAY,GAAGA,CAAA,KAAM;EAC9B,MAAM,CAACC,WAAW,EAAEC,cAAc,CAAC,GAAG,IAAAC,eAAQ,EAAoBC,oBAAS,CAACC,OAAO,CAACJ,WAAW,CAAC;EAChG,MAAM,CAACK,KAAK,EAAEC,QAAQ,CAAC,GAAG,IAAAJ,eAAQ,EAAiBC,oBAAS,CAACC,OAAO,CAACG,QAAQ,CAACJ,oBAAS,CAACC,OAAO,CAACI,SAAS,CAAC,CAAC;EAC3G,MAAM,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAG,IAAAR,eAAQ,EAA6BC,oBAAS,CAACC,OAAO,CAACK,UAAU,CAAC;EACtG,MAAM,CAACE,UAAU,EAAEC,aAAa,CAAC,GAAG,IAAAV,eAAQ,EAAa;IACrDW,KAAK,EAAEV,oBAAS,CAACC,OAAO,CAACU,MAAM,CAACD,KAAK;IACrCE,MAAM,EAAEZ,oBAAS,CAACC,OAAO,CAACU,MAAM,CAACC;EACrC,CAAC,CAAC;EAEF,IAAAC,gBAAS,EAAC,MAAM;IACZ,MAAMC,YAAY,GAAGtB,eAAe,CAACuB,WAAW,CAC5C,UAAU,EACTC,KAAsB,IAAK;MACxB,QAAQA,KAAK,CAACC,IAAI;QACd,KAAKC,6BAAsB,CAACC,KAAK;UAAE;YAC/B,MAAMC,UAAU,GAAGJ,KAA4B;YAE/Cb,QAAQ,CAACH,oBAAS,CAACC,OAAO,CAACG,QAAQ,CAACgB,UAAU,CAACC,OAAO,CAAChB,SAAS,CAAC,CAAC;YAElE;UACJ;QACA,KAAKa,6BAAsB,CAACI,MAAM;UAAE;YAChC,MAAMC,WAAW,GAAGP,KAAmC;YAEvDT,aAAa,CAACgB,WAAW,CAACF,OAAO,CAACf,UAAU,CAAC;YAC7CR,cAAc,CAACyB,WAAW,CAACF,OAAO,CAACxB,WAAW,CAAC;YAC/CY,aAAa,CAACc,WAAW,CAACF,OAAO,CAACV,MAAM,CAAC;YAEzC;UACJ;QACA;UACI;MACR;IACJ,CACJ,CAAC;IAED,OAAOG,YAAY,CAACU,MAAM;EAC9B,CAAC,EAAE,EAAE,CAAC;EAEN,OAAO;IACHtB,KAAK;IACLL,WAAW;IACXS,UAAU;IACVE;EACJ,CAAC;AACL,CAAC;AAAAiB,OAAA,CAAA7B,YAAA,GAAAA,YAAA"}
|
@@ -7,26 +7,6 @@ exports.sortAndValidateBreakpoints = exports.getValueForBreakpoint = exports.get
|
|
7
7
|
var _Unistyles = require("../Unistyles");
|
8
8
|
var _common = require("./common");
|
9
9
|
var _types = require("../types");
|
10
|
-
var _mediaQueries = require("./mediaQueries");
|
11
|
-
/**
|
12
|
-
* Sorts the breakpoints object based on its numeric values in ascending order and validates them.
|
13
|
-
*
|
14
|
-
* This function takes an object where keys represent breakpoint names and values are numeric.
|
15
|
-
* It returns a new object with the same keys but sorted based on their corresponding numeric values.
|
16
|
-
* Additionally, it validates that:
|
17
|
-
* 1. The first breakpoint starts with a value of 0.
|
18
|
-
* 2. No duplicate breakpoint values exist.
|
19
|
-
*
|
20
|
-
* If the validation fails, appropriate error messages are logged to the console.
|
21
|
-
*
|
22
|
-
* @template B - An object type where keys are strings and values are numbers.
|
23
|
-
* @param {B} breakpoints - The breakpoints object to be sorted and validated.
|
24
|
-
* @returns {B} A new object with sorted and validated breakpoints.
|
25
|
-
*
|
26
|
-
* @example
|
27
|
-
* const input = { md: 768, lg: 1024, sm: 0 }
|
28
|
-
* sortAndValidateBreakpoints(input) // returns { sm: 0, md: 768, lg: 1024 }
|
29
|
-
*/
|
30
10
|
const sortAndValidateBreakpoints = breakpoints => {
|
31
11
|
const sortedPairs = Object.entries(breakpoints).sort((breakpoint1, breakpoint2) => {
|
32
12
|
const [, value1] = breakpoint1;
|
@@ -44,22 +24,6 @@ const sortAndValidateBreakpoints = breakpoints => {
|
|
44
24
|
}
|
45
25
|
return sortedBreakpoints;
|
46
26
|
};
|
47
|
-
|
48
|
-
/**
|
49
|
-
* Determines the appropriate breakpoint key for a given screen width based on provided breakpoints.
|
50
|
-
*
|
51
|
-
* This function takes a screen width and an object of breakpoints. It returns the key of the breakpoint
|
52
|
-
* that the screen width falls into. The breakpoints are assumed to be sorted in ascending order.
|
53
|
-
*
|
54
|
-
* @template B - An object type where keys are strings and values are numbers representing screen widths.
|
55
|
-
* @param {number} width - The screen width to determine the breakpoint for.
|
56
|
-
* @param breakpointEntries - sorted pairs of breakpoints
|
57
|
-
* @returns {keyof B & string} The key of the breakpoint that the screen width falls into.
|
58
|
-
*
|
59
|
-
* @example
|
60
|
-
* const breakpoints = { sm: 0, md: 768, lg: 1024 }
|
61
|
-
* getBreakpointFromScreenWidth(800, breakpoints) // returns 'md'
|
62
|
-
*/
|
63
27
|
exports.sortAndValidateBreakpoints = sortAndValidateBreakpoints;
|
64
28
|
const getBreakpointFromScreenWidth = (width, breakpointEntries) => {
|
65
29
|
const [key] = breakpointEntries.find((_ref, index, otherBreakpoints) => {
|
@@ -73,39 +37,15 @@ const getBreakpointFromScreenWidth = (width, breakpointEntries) => {
|
|
73
37
|
});
|
74
38
|
return key;
|
75
39
|
};
|
76
|
-
|
77
|
-
/**
|
78
|
-
* Retrieves the value associated with a given breakpoint or custom media query based on the provided screen size.
|
79
|
-
*
|
80
|
-
* The function first checks for custom media queries. If a matching custom media query is found, its associated value is returned.
|
81
|
-
* If no custom media query matches, the function then checks for a direct breakpoint match.
|
82
|
-
* If there's no direct breakpoint match, the function simulates CSS cascading to find the closest matching breakpoint.
|
83
|
-
*
|
84
|
-
* @template B - An object type where keys represent breakpoint names and values represent breakpoint values.
|
85
|
-
*
|
86
|
-
* @param {Record<keyof B & string, string | number>} value - An object containing values associated with breakpoints or custom media queries.
|
87
|
-
* @param {keyof B & string} breakpoint - The breakpoint name to check against.
|
88
|
-
* @param {ScreenSize} screenSize - An object representing the screen size to be checked against the media queries.
|
89
|
-
* @param breakpointPairs - sorted pairs of breakpoints
|
90
|
-
*
|
91
|
-
* @returns {string | number | undefined} Returns the value associated with the matching breakpoint or custom media query, or `undefined` if no match is found.
|
92
|
-
*
|
93
|
-
* @example
|
94
|
-
*
|
95
|
-
* const values = { ':w[200]': 'value1', sm: 'value2', md: 'value3' }
|
96
|
-
* const screenSize = { width: 250, height: 400 }
|
97
|
-
* const breakpoints = { sm: 300, md: 600, lg: 900 }
|
98
|
-
*
|
99
|
-
* getValueForBreakpoint(values, 'sm', screenSize, breakpoints); // 'value1'
|
100
|
-
*/
|
101
40
|
exports.getBreakpointFromScreenWidth = getBreakpointFromScreenWidth;
|
102
|
-
const getValueForBreakpoint =
|
41
|
+
const getValueForBreakpoint = value => {
|
103
42
|
// the highest priority is for custom media queries
|
104
43
|
const customMediaQueries = Object.entries(value).filter(_ref2 => {
|
105
44
|
let [key] = _ref2;
|
106
|
-
return
|
45
|
+
return _Unistyles.unistyles.engine.isMediaQuery(key);
|
107
46
|
});
|
108
|
-
const customMediaQueryKey =
|
47
|
+
// const customMediaQueryKey = getKeyForCustomMediaQuery(customMediaQueries, screenSize) as keyof typeof value
|
48
|
+
const customMediaQueryKey = _Unistyles.unistyles.engine.didMatchMediaQuery(customMediaQueries);
|
109
49
|
if (customMediaQueryKey && customMediaQueryKey in value) {
|
110
50
|
return value[customMediaQueryKey];
|
111
51
|
}
|
@@ -118,13 +58,16 @@ const getValueForBreakpoint = (value, breakpoint, screenSize) => {
|
|
118
58
|
if (!hasBreakpoints && _common.isMobile && (_common.Orientation.Landscape in value || _common.Orientation.Portrait in value)) {
|
119
59
|
return value[_Unistyles.unistyles.runtime.orientation === _types.ScreenOrientation.Portrait ? _common.Orientation.Portrait : _common.Orientation.Landscape];
|
120
60
|
}
|
61
|
+
const breakpoint = _Unistyles.unistyles.runtime.breakpoint;
|
62
|
+
if (!breakpoint) {
|
63
|
+
return undefined;
|
64
|
+
}
|
121
65
|
|
122
66
|
// if user defined breakpoints, then we look for the valid one
|
123
|
-
const
|
124
|
-
const directBreakpoint = value[unifiedKey];
|
67
|
+
const directBreakpoint = value[breakpoint];
|
125
68
|
|
126
69
|
// if there is a direct key like 'sm' or 'md', or value for this key exists but its undefined
|
127
|
-
if (directBreakpoint ||
|
70
|
+
if (directBreakpoint || breakpoint in value) {
|
128
71
|
return directBreakpoint;
|
129
72
|
}
|
130
73
|
|
@@ -132,7 +75,7 @@ const getValueForBreakpoint = (value, breakpoint, screenSize) => {
|
|
132
75
|
const breakpointPairs = _Unistyles.unistyles.runtime.sortedBreakpoints;
|
133
76
|
const currentBreakpoint = breakpointPairs.findIndex(_ref3 => {
|
134
77
|
let [key] = _ref3;
|
135
|
-
return key ===
|
78
|
+
return key === breakpoint;
|
136
79
|
});
|
137
80
|
const availableBreakpoints = breakpointPairs.filter((_ref4, index) => {
|
138
81
|
let [key] = _ref4;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_Unistyles","require","_common","_types","
|
1
|
+
{"version":3,"names":["_Unistyles","require","_common","_types","sortAndValidateBreakpoints","breakpoints","sortedPairs","Object","entries","sort","breakpoint1","breakpoint2","value1","value2","sortedBreakpoints","freeze","fromEntries","breakpointValues","values","firstBreakpoint","throwError","length","Set","size","exports","getBreakpointFromScreenWidth","width","breakpointEntries","key","find","_ref","index","otherBreakpoints","value","minVal","maxVal","getValueForBreakpoint","customMediaQueries","filter","_ref2","unistyles","engine","isMediaQuery","customMediaQueryKey","didMatchMediaQuery","hasBreakpoints","runtime","isMobile","Orientation","Landscape","Portrait","orientation","ScreenOrientation","breakpoint","undefined","directBreakpoint","breakpointPairs","currentBreakpoint","findIndex","_ref3","availableBreakpoints","_ref4","map","_ref5"],"sourceRoot":"../../../src","sources":["utils/breakpoints.ts"],"mappings":"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"}
|
@@ -3,7 +3,7 @@
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
4
4
|
value: true
|
5
5
|
});
|
6
|
-
exports.warn = exports.throwError = exports.isWeb = exports.isServer = exports.isMobile = exports.Orientation = void 0;
|
6
|
+
exports.warn = exports.throwError = exports.isWeb = exports.isServer = exports.isMobile = exports.isIOS = exports.isAndroid = exports.Orientation = void 0;
|
7
7
|
var _reactNative = require("react-native");
|
8
8
|
const throwError = message => {
|
9
9
|
throw new Error(`🦄 [react-native-unistyles]: ${message}`);
|
@@ -15,6 +15,8 @@ const warn = message => {
|
|
15
15
|
exports.warn = warn;
|
16
16
|
const isMobile = exports.isMobile = _reactNative.Platform.OS === 'android' || _reactNative.Platform.OS === 'ios';
|
17
17
|
const isWeb = exports.isWeb = _reactNative.Platform.OS === 'web';
|
18
|
+
const isIOS = exports.isIOS = _reactNative.Platform.OS === 'ios';
|
19
|
+
const isAndroid = exports.isAndroid = _reactNative.Platform.OS === 'android';
|
18
20
|
const isServer = exports.isServer = typeof window === 'undefined';
|
19
21
|
const Orientation = exports.Orientation = {
|
20
22
|
Landscape: 'landscape',
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_reactNative","require","throwError","message","Error","exports","warn","console","isMobile","Platform","OS","isWeb","isServer","window","Orientation","Landscape","Portrait"],"sourceRoot":"../../../src","sources":["utils/common.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEO,MAAMC,UAAU,GAAIC,OAAe,IAAK;EAC3C,MAAM,IAAIC,KAAK,CAAE,gCAA+BD,OAAQ,EAAC,CAAC;AAC9D,CAAC;AAAAE,OAAA,CAAAH,UAAA,GAAAA,UAAA;AAEM,MAAMI,IAAI,GAAIH,OAAe,IAAK;EACrCI,OAAO,CAACD,IAAI,CAAE,gCAA+BH,OAAQ,EAAC,CAAC;AAC3D,CAAC;AAAAE,OAAA,CAAAC,IAAA,GAAAA,IAAA;AAEM,MAAME,QAAQ,GAAAH,OAAA,CAAAG,QAAA,GAAGC,qBAAQ,CAACC,EAAE,KAAK,SAAS,IAAID,qBAAQ,CAACC,EAAE,KAAK,KAAK;AACnE,MAAMC,KAAK,GAAAN,OAAA,CAAAM,KAAA,GAAGF,qBAAQ,CAACC,EAAE,KAAK,KAAK;AACnC,MAAME,
|
1
|
+
{"version":3,"names":["_reactNative","require","throwError","message","Error","exports","warn","console","isMobile","Platform","OS","isWeb","isIOS","isAndroid","isServer","window","Orientation","Landscape","Portrait"],"sourceRoot":"../../../src","sources":["utils/common.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEO,MAAMC,UAAU,GAAIC,OAAe,IAAK;EAC3C,MAAM,IAAIC,KAAK,CAAE,gCAA+BD,OAAQ,EAAC,CAAC;AAC9D,CAAC;AAAAE,OAAA,CAAAH,UAAA,GAAAA,UAAA;AAEM,MAAMI,IAAI,GAAIH,OAAe,IAAK;EACrCI,OAAO,CAACD,IAAI,CAAE,gCAA+BH,OAAQ,EAAC,CAAC;AAC3D,CAAC;AAAAE,OAAA,CAAAC,IAAA,GAAAA,IAAA;AAEM,MAAME,QAAQ,GAAAH,OAAA,CAAAG,QAAA,GAAGC,qBAAQ,CAACC,EAAE,KAAK,SAAS,IAAID,qBAAQ,CAACC,EAAE,KAAK,KAAK;AACnE,MAAMC,KAAK,GAAAN,OAAA,CAAAM,KAAA,GAAGF,qBAAQ,CAACC,EAAE,KAAK,KAAK;AACnC,MAAME,KAAK,GAAAP,OAAA,CAAAO,KAAA,GAAGH,qBAAQ,CAACC,EAAE,KAAK,KAAK;AACnC,MAAMG,SAAS,GAAAR,OAAA,CAAAQ,SAAA,GAAGJ,qBAAQ,CAACC,EAAE,KAAK,SAAS;AAC3C,MAAMI,QAAQ,GAAAT,OAAA,CAAAS,QAAA,GAAG,OAAOC,MAAM,KAAK,WAAW;AAE9C,MAAMC,WAAW,GAAAX,OAAA,CAAAW,WAAA,GAAG;EACvBC,SAAS,EAAE,WAAW;EACtBC,QAAQ,EAAE;AACd,CAAU"}
|