react-native-unistyles 3.6.0 → 3.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -9
- package/android/build.gradle +42 -0
- package/android/src/legacy/java/com/unistyles/NativePlatform+extraWindows.kt +16 -0
- package/android/src/main/cxx/NativeUnistylesModule.cpp +5 -11
- package/android/src/main/cxx/NativeUnistylesModule.h +0 -4
- package/android/src/main/java/com/unistyles/NativePlatform+android.kt +82 -39
- package/android/src/main/java/com/unistyles/NativePlatform+insets.kt +73 -0
- package/android/src/main/java/com/unistyles/UnistylesModule.kt +2 -13
- package/android/src/rn86/java/com/unistyles/NativePlatform+extraWindows.kt +28 -0
- package/cxx/common/PerformanceTracing.h +85 -0
- package/cxx/converters/BackgroundLayerConverter.cpp +523 -0
- package/cxx/converters/BackgroundLayerConverter.h +14 -0
- package/cxx/converters/FontVariationSettingsConverter.cpp +104 -0
- package/cxx/converters/FontVariationSettingsConverter.h +17 -0
- package/cxx/core/UnistyleWrapper.h +16 -1
- package/cxx/hybridObjects/HybridShadowRegistry.cpp +8 -0
- package/cxx/hybridObjects/HybridStyleSheet.cpp +11 -0
- package/cxx/hybridObjects/HybridStyleSheet.h +1 -0
- package/cxx/hybridObjects/HybridUnistylesRuntime.cpp +10 -30
- package/cxx/hybridObjects/HybridUnistylesRuntime.h +2 -2
- package/cxx/parser/Parser.cpp +75 -10
- package/cxx/shadowTree/ShadowTreeDiagnostics.cpp +74 -0
- package/cxx/shadowTree/ShadowTreeManager.cpp +3 -0
- package/lib/commonjs/components/NamedTheme.js +4 -4
- package/lib/commonjs/components/NamedTheme.js.map +1 -1
- package/lib/commonjs/components/ScopedThemeContext.js +3 -1
- package/lib/commonjs/components/ScopedThemeContext.js.map +1 -1
- package/lib/commonjs/core/createUnistylesImageBackground.js +6 -2
- package/lib/commonjs/core/createUnistylesImageBackground.js.map +1 -1
- package/lib/commonjs/core/withUnistyles/withUnistyles.js +10 -7
- package/lib/commonjs/core/withUnistyles/withUnistyles.js.map +1 -1
- package/lib/commonjs/core/withUnistyles/withUnistyles.native.js +22 -3
- package/lib/commonjs/core/withUnistyles/withUnistyles.native.js.map +1 -1
- package/lib/commonjs/mocks.js +27 -3
- package/lib/commonjs/mocks.js.map +1 -1
- package/lib/commonjs/specs/ShadowRegistry/index.js +13 -3
- package/lib/commonjs/specs/ShadowRegistry/index.js.map +1 -1
- package/lib/commonjs/specs/ShadowRegistry/tracing.js +26 -0
- package/lib/commonjs/specs/ShadowRegistry/tracing.js.map +1 -0
- package/lib/commonjs/utils.js +52 -1
- package/lib/commonjs/utils.js.map +1 -1
- package/lib/commonjs/web/convert/index.js +19 -1
- package/lib/commonjs/web/convert/index.js.map +1 -1
- package/lib/commonjs/web/convert/module.d.ts +3 -0
- package/lib/commonjs/web/convert/object/backgroundLayers.js +30 -0
- package/lib/commonjs/web/convert/object/backgroundLayers.js.map +1 -0
- package/lib/commonjs/web/convert/object/fontVariationSettings.js +12 -0
- package/lib/commonjs/web/convert/object/fontVariationSettings.js.map +1 -0
- package/lib/commonjs/web/convert/object/index.js +22 -0
- package/lib/commonjs/web/convert/object/index.js.map +1 -1
- package/lib/commonjs/web/convert/utils.js +7 -1
- package/lib/commonjs/web/convert/utils.js.map +1 -1
- package/lib/commonjs/web/registry.js +6 -4
- package/lib/commonjs/web/registry.js.map +1 -1
- package/lib/commonjs/web/runtime.js +9 -6
- package/lib/commonjs/web/runtime.js.map +1 -1
- package/lib/commonjs/web/utils/unistyle.js +1 -3
- package/lib/commonjs/web/utils/unistyle.js.map +1 -1
- package/lib/module/components/NamedTheme.js +4 -4
- package/lib/module/components/NamedTheme.js.map +1 -1
- package/lib/module/components/ScopedThemeContext.js +3 -1
- package/lib/module/components/ScopedThemeContext.js.map +1 -1
- package/lib/module/core/createUnistylesImageBackground.js +6 -2
- package/lib/module/core/createUnistylesImageBackground.js.map +1 -1
- package/lib/module/core/withUnistyles/withUnistyles.js +9 -6
- package/lib/module/core/withUnistyles/withUnistyles.js.map +1 -1
- package/lib/module/core/withUnistyles/withUnistyles.native.js +24 -5
- package/lib/module/core/withUnistyles/withUnistyles.native.js.map +1 -1
- package/lib/module/mocks.js +27 -3
- package/lib/module/mocks.js.map +1 -1
- package/lib/module/specs/ShadowRegistry/index.js +13 -3
- package/lib/module/specs/ShadowRegistry/index.js.map +1 -1
- package/lib/module/specs/ShadowRegistry/tracing.js +21 -0
- package/lib/module/specs/ShadowRegistry/tracing.js.map +1 -0
- package/lib/module/utils.js +50 -0
- package/lib/module/utils.js.map +1 -1
- package/lib/module/web/convert/index.js +22 -3
- package/lib/module/web/convert/index.js.map +1 -1
- package/lib/module/web/convert/module.d.ts +3 -0
- package/lib/module/web/convert/object/backgroundLayers.js +25 -0
- package/lib/module/web/convert/object/backgroundLayers.js.map +1 -0
- package/lib/module/web/convert/object/fontVariationSettings.js +7 -0
- package/lib/module/web/convert/object/fontVariationSettings.js.map +1 -0
- package/lib/module/web/convert/object/index.js +2 -0
- package/lib/module/web/convert/object/index.js.map +1 -1
- package/lib/module/web/convert/utils.js +4 -0
- package/lib/module/web/convert/utils.js.map +1 -1
- package/lib/module/web/registry.js +6 -4
- package/lib/module/web/registry.js.map +1 -1
- package/lib/module/web/runtime.js +9 -6
- package/lib/module/web/runtime.js.map +1 -1
- package/lib/module/web/utils/unistyle.js +2 -4
- package/lib/module/web/utils/unistyle.js.map +1 -1
- package/lib/typescript/src/components/ScopedThemeContext.d.ts +2 -1
- package/lib/typescript/src/components/ScopedThemeContext.d.ts.map +1 -1
- package/lib/typescript/src/core/createUnistylesImageBackground.d.ts.map +1 -1
- package/lib/typescript/src/core/withUnistyles/withUnistyles.d.ts +6 -3
- package/lib/typescript/src/core/withUnistyles/withUnistyles.d.ts.map +1 -1
- package/lib/typescript/src/core/withUnistyles/withUnistyles.native.d.ts +7 -4
- package/lib/typescript/src/core/withUnistyles/withUnistyles.native.d.ts.map +1 -1
- package/lib/typescript/src/specs/ShadowRegistry/index.d.ts.map +1 -1
- package/lib/typescript/src/specs/ShadowRegistry/tracing.d.ts +2 -0
- package/lib/typescript/src/specs/ShadowRegistry/tracing.d.ts.map +1 -0
- package/lib/typescript/src/utils.d.ts +1 -0
- package/lib/typescript/src/utils.d.ts.map +1 -1
- package/lib/typescript/src/web/convert/index.d.ts.map +1 -1
- package/lib/typescript/src/web/convert/object/backgroundLayers.d.ts +4 -0
- package/lib/typescript/src/web/convert/object/backgroundLayers.d.ts.map +1 -0
- package/lib/typescript/src/web/convert/object/fontVariationSettings.d.ts +4 -0
- package/lib/typescript/src/web/convert/object/fontVariationSettings.d.ts.map +1 -0
- package/lib/typescript/src/web/convert/object/index.d.ts +2 -0
- package/lib/typescript/src/web/convert/object/index.d.ts.map +1 -1
- package/lib/typescript/src/web/convert/utils.d.ts +2 -0
- package/lib/typescript/src/web/convert/utils.d.ts.map +1 -1
- package/lib/typescript/src/web/registry.d.ts.map +1 -1
- package/lib/typescript/src/web/runtime.d.ts +1 -0
- package/lib/typescript/src/web/runtime.d.ts.map +1 -1
- package/lib/typescript/src/web/utils/unistyle.d.ts.map +1 -1
- package/metro/babel-transformer.js +79 -17
- package/package.json +26 -26
- package/plugin/index.js +79 -17
- package/src/components/NamedTheme.tsx +5 -5
- package/src/components/ScopedThemeContext.ts +6 -2
- package/src/core/createUnistylesImageBackground.tsx +6 -2
- package/src/core/withUnistyles/withUnistyles.native.tsx +28 -6
- package/src/core/withUnistyles/withUnistyles.tsx +6 -6
- package/src/mocks.ts +14 -5
- package/src/specs/ShadowRegistry/index.ts +14 -3
- package/src/specs/ShadowRegistry/tracing.ts +23 -0
- package/src/utils.ts +51 -0
- package/src/web/convert/index.ts +39 -3
- package/src/web/convert/object/backgroundLayers.ts +33 -0
- package/src/web/convert/object/fontVariationSettings.ts +7 -0
- package/src/web/convert/object/index.ts +2 -0
- package/src/web/convert/utils.ts +11 -0
- package/src/web/registry.ts +7 -8
- package/src/web/runtime.ts +7 -7
- package/src/web/utils/unistyle.ts +2 -4
- package/lib/commonjs/web/convert/module.d.js +0 -2
- package/lib/commonjs/web/convert/module.d.js.map +0 -1
- package/lib/module/web/convert/module.d.js +0 -2
- package/lib/module/web/convert/module.d.js.map +0 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
#include "HybridShadowRegistry.h"
|
|
2
|
+
#include "PerformanceTracing.h"
|
|
2
3
|
|
|
3
4
|
using namespace margelo::nitro::unistyles;
|
|
4
5
|
using namespace facebook::react;
|
|
@@ -182,6 +183,8 @@ void HybridShadowRegistry::scheduleShadowTreeUpdate(jsi::Runtime& rt) {
|
|
|
182
183
|
return jsi::Value::undefined();
|
|
183
184
|
}
|
|
184
185
|
|
|
186
|
+
UNISTYLES_TRACE_SECTION("updateShadowTree");
|
|
187
|
+
|
|
185
188
|
shadow::ShadowTreeManager::updateShadowTree(rt);
|
|
186
189
|
|
|
187
190
|
return jsi::Value::undefined();
|
|
@@ -225,6 +228,8 @@ jsi::Value HybridShadowRegistry::flush(jsi::Runtime &rt, const jsi::Value &thisV
|
|
|
225
228
|
return jsi::Value::undefined();
|
|
226
229
|
}
|
|
227
230
|
|
|
231
|
+
UNISTYLES_TRACE_SECTION("flush");
|
|
232
|
+
|
|
228
233
|
shadow::ShadowTreeManager::updateShadowTree(rt);
|
|
229
234
|
|
|
230
235
|
return jsi::Value::undefined();
|
|
@@ -286,6 +291,9 @@ jsi::Value HybridShadowRegistry::refreshReactNodes(jsi::Runtime &rt, const jsi::
|
|
|
286
291
|
helpers::assertThat(rt, count == 1 && args[0].isObject(), "Unistyles: refreshReactNodes expected to be called with an array of shadow nodes.");
|
|
287
292
|
|
|
288
293
|
auto nodes = args[0].asObject(rt).asArray(rt);
|
|
294
|
+
|
|
295
|
+
UNISTYLES_TRACE_SECTION("refreshReactNodes", "nodes", static_cast<int64_t>(nodes.size(rt)));
|
|
296
|
+
|
|
289
297
|
std::unordered_map<SurfaceId, std::shared_ptr<const RootShadowNode>> roots;
|
|
290
298
|
|
|
291
299
|
UIManagerBinding::getBinding(rt)->getUIManager().getShadowTreeRegistry().enumerate([&roots](const ShadowTree& shadowTree, bool&) {
|
|
@@ -18,6 +18,8 @@ jsi::Value HybridStyleSheet::create(jsi::Runtime& rt, const jsi::Value &thisVal,
|
|
|
18
18
|
helpers::assertThat(rt, arguments[0].isObject(), "StyleSheet.create expected to be called with object or function.");
|
|
19
19
|
helpers::assertThat(rt, this->_unistylesRuntime->ownsRegistry(), helpers::RUNTIME_REPLACED_ERROR);
|
|
20
20
|
|
|
21
|
+
UNISTYLES_TRACE_SECTION("createStyleSheet");
|
|
22
|
+
|
|
21
23
|
auto thisStyleSheet = thisVal.asObject(rt);
|
|
22
24
|
auto& registry = core::UnistylesRegistry::get();
|
|
23
25
|
|
|
@@ -345,6 +347,8 @@ void HybridStyleSheet::onImeChange(UnistylesNativeMiniRuntime miniRuntime) {
|
|
|
345
347
|
}
|
|
346
348
|
|
|
347
349
|
void HybridStyleSheet::applyDependencyChanges(jsi::Runtime& rt, std::vector<UnistyleDependency>& dependencies, std::optional<UnistylesNativeMiniRuntime> maybeMiniRuntime) {
|
|
350
|
+
UNISTYLES_TRACE_SECTION("applyDependencyChanges", "dependencies", helpers::dependenciesToString(dependencies));
|
|
351
|
+
|
|
348
352
|
auto& registry = core::UnistylesRegistry::get();
|
|
349
353
|
auto parser = parser::Parser(this->_unistylesRuntime);
|
|
350
354
|
auto dependencyMap = registry.buildDependencyMap(dependencies);
|
|
@@ -355,10 +359,14 @@ void HybridStyleSheet::applyDependencyChanges(jsi::Runtime& rt, std::vector<Unis
|
|
|
355
359
|
|
|
356
360
|
// rebuild rawValue BEFORE notifying listeners so JS rerenders read fresh closures
|
|
357
361
|
if (!dependencyMap.empty() || !dependentStyleSheets.empty()) {
|
|
362
|
+
UNISTYLES_TRACE_SECTION("rebuildUnistyles");
|
|
363
|
+
|
|
358
364
|
parser.rebuildUnistylesInDependencyMap(rt, dependencyMap, dependentStyleSheets, maybeMiniRuntime);
|
|
359
365
|
}
|
|
360
366
|
|
|
361
367
|
if (!dependencyMap.empty()) {
|
|
368
|
+
UNISTYLES_TRACE_SECTION("rebuildShadowLeafUpdates");
|
|
369
|
+
|
|
362
370
|
parser.rebuildShadowLeafUpdates(rt, dependencyMap);
|
|
363
371
|
}
|
|
364
372
|
|
|
@@ -370,6 +378,9 @@ void HybridStyleSheet::applyDependencyChanges(jsi::Runtime& rt, std::vector<Unis
|
|
|
370
378
|
|
|
371
379
|
// after the commit, so listeners can point React at the committed nodes
|
|
372
380
|
registry.setCommittedInstanceHandles(std::move(committedInstanceHandles));
|
|
381
|
+
|
|
382
|
+
UNISTYLES_TRACE_SECTION("notifyListeners");
|
|
383
|
+
|
|
373
384
|
// also when no StyleSheet depends on the change, hooks (useUnistyles, withUnistyles, Display, Hide) may
|
|
374
385
|
this->notifyJSListeners(dependencies);
|
|
375
386
|
}
|
|
@@ -30,14 +30,8 @@ Dimensions HybridUnistylesRuntime::getScreen() {
|
|
|
30
30
|
return this->_nativePlatform->getScreenDimensions();
|
|
31
31
|
};
|
|
32
32
|
|
|
33
|
+
// app theme, like getTheme(). ScopedTheme is read from React Context (useUnistyles) (#1295)
|
|
33
34
|
std::optional<std::string> HybridUnistylesRuntime::getThemeName() {
|
|
34
|
-
auto& registry = core::UnistylesRegistry::get();
|
|
35
|
-
auto maybeScopedTheme = registry.getScopedTheme();
|
|
36
|
-
|
|
37
|
-
if (maybeScopedTheme.has_value()) {
|
|
38
|
-
return maybeScopedTheme.value();
|
|
39
|
-
}
|
|
40
|
-
|
|
41
35
|
return this->getState().getCurrentThemeName();
|
|
42
36
|
};
|
|
43
37
|
|
|
@@ -215,29 +209,13 @@ jsi::Value HybridUnistylesRuntime::createHybridNavigationBar(jsi::Runtime &rt, c
|
|
|
215
209
|
|
|
216
210
|
UnistylesCxxMiniRuntime HybridUnistylesRuntime::getMiniRuntime() {
|
|
217
211
|
UnistylesNativeMiniRuntime nativeMiniRuntime = this->_nativePlatform->getMiniRuntime();
|
|
218
|
-
UnistylesCxxMiniRuntime cxxMiniRuntime{
|
|
219
|
-
this->getThemeName(),
|
|
220
|
-
this->getBreakpoint(),
|
|
221
|
-
this->getHasAdaptiveThemes(),
|
|
222
|
-
nativeMiniRuntime.colorScheme,
|
|
223
|
-
nativeMiniRuntime.screen,
|
|
224
|
-
nativeMiniRuntime.contentSizeCategory,
|
|
225
|
-
nativeMiniRuntime.insets,
|
|
226
|
-
nativeMiniRuntime.pixelRatio,
|
|
227
|
-
nativeMiniRuntime.fontScale,
|
|
228
|
-
nativeMiniRuntime.rtl,
|
|
229
|
-
nativeMiniRuntime.statusBar,
|
|
230
|
-
nativeMiniRuntime.navigationBar,
|
|
231
|
-
nativeMiniRuntime.isPortrait,
|
|
232
|
-
nativeMiniRuntime.isLandscape
|
|
233
|
-
};
|
|
234
212
|
|
|
235
|
-
return
|
|
213
|
+
return this->buildMiniRuntimeFromNativeRuntime(nativeMiniRuntime, this->getThemeName());
|
|
236
214
|
}
|
|
237
215
|
|
|
238
|
-
UnistylesCxxMiniRuntime HybridUnistylesRuntime::buildMiniRuntimeFromNativeRuntime(UnistylesNativeMiniRuntime& nativeMiniRuntime) {
|
|
216
|
+
UnistylesCxxMiniRuntime HybridUnistylesRuntime::buildMiniRuntimeFromNativeRuntime(UnistylesNativeMiniRuntime& nativeMiniRuntime, std::optional<std::string> themeName) {
|
|
239
217
|
UnistylesCxxMiniRuntime cxxMiniRuntime{
|
|
240
|
-
|
|
218
|
+
themeName,
|
|
241
219
|
this->getBreakpoint(),
|
|
242
220
|
this->getHasAdaptiveThemes(),
|
|
243
221
|
nativeMiniRuntime.colorScheme,
|
|
@@ -256,11 +234,13 @@ UnistylesCxxMiniRuntime HybridUnistylesRuntime::buildMiniRuntimeFromNativeRuntim
|
|
|
256
234
|
return cxxMiniRuntime;
|
|
257
235
|
}
|
|
258
236
|
|
|
259
|
-
|
|
237
|
+
// themeName is passed by the caller, so it matches the theme the StyleSheet is called with
|
|
238
|
+
jsi::Value HybridUnistylesRuntime::getMiniRuntimeAsValue(jsi::Runtime& rt, std::optional<UnistylesNativeMiniRuntime> maybeMiniRuntime, std::optional<std::string> themeName) {
|
|
260
239
|
jsi::Object obj(rt);
|
|
261
|
-
auto
|
|
262
|
-
?
|
|
263
|
-
: this->getMiniRuntime();
|
|
240
|
+
auto nativeMiniRuntime = maybeMiniRuntime.has_value()
|
|
241
|
+
? maybeMiniRuntime.value()
|
|
242
|
+
: this->_nativePlatform->getMiniRuntime();
|
|
243
|
+
auto miniRuntime = this->buildMiniRuntimeFromNativeRuntime(nativeMiniRuntime, std::move(themeName));
|
|
264
244
|
|
|
265
245
|
// auto generated by nitro, but can't be accessed due to static inline function
|
|
266
246
|
obj.setProperty(rt, "themeName", JSIConverter<std::optional<std::string>>::toJSI(rt, miniRuntime.themeName));
|
|
@@ -71,8 +71,8 @@ struct HybridUnistylesRuntime: public HybridUnistylesRuntimeSpec {
|
|
|
71
71
|
|
|
72
72
|
core::UnistylesState& getState();
|
|
73
73
|
bool ownsRegistry() const;
|
|
74
|
-
UnistylesCxxMiniRuntime buildMiniRuntimeFromNativeRuntime(UnistylesNativeMiniRuntime& nativeMiniRuntime);
|
|
75
|
-
jsi::Value getMiniRuntimeAsValue(jsi::Runtime& rt, std::optional<UnistylesNativeMiniRuntime> maybeMiniRuntime);
|
|
74
|
+
UnistylesCxxMiniRuntime buildMiniRuntimeFromNativeRuntime(UnistylesNativeMiniRuntime& nativeMiniRuntime, std::optional<std::string> themeName);
|
|
75
|
+
jsi::Value getMiniRuntimeAsValue(jsi::Runtime& rt, std::optional<UnistylesNativeMiniRuntime> maybeMiniRuntime, std::optional<std::string> themeName);
|
|
76
76
|
void includeDependenciesForColorSchemeChange(std::vector<UnistyleDependency>& deps);
|
|
77
77
|
void calculateNewThemeAndDependencies(std::vector<UnistyleDependency>& deps);
|
|
78
78
|
std::function<void(std::function<void(jsi::Runtime&)>&&)> runOnJSThread;
|
package/cxx/parser/Parser.cpp
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
#include "Parser.h"
|
|
2
2
|
#include "UnistyleWrapper.h"
|
|
3
3
|
#include "BackgroundImageConverter.h"
|
|
4
|
+
#include "BackgroundLayerConverter.h"
|
|
5
|
+
#include "FontVariationSettingsConverter.h"
|
|
4
6
|
#include "TransformOriginConverter.h"
|
|
5
7
|
#include <iomanip>
|
|
6
8
|
#include <sstream>
|
|
@@ -113,7 +115,7 @@ jsi::Value parser::Parser::getParsedStyleSheetForScopedTheme(jsi::Runtime& rt, c
|
|
|
113
115
|
.asObject(rt);
|
|
114
116
|
}
|
|
115
117
|
|
|
116
|
-
auto miniRuntime = this->_unistylesRuntime->getMiniRuntimeAsValue(rt, std::nullopt);
|
|
118
|
+
auto miniRuntime = this->_unistylesRuntime->getMiniRuntimeAsValue(rt, std::nullopt, scopedTheme);
|
|
117
119
|
|
|
118
120
|
return unistyle->parent->rawValue
|
|
119
121
|
.asFunction(rt)
|
|
@@ -198,7 +200,7 @@ jsi::Object parser::Parser::unwrapStyleSheet(jsi::Runtime& rt, std::shared_ptr<S
|
|
|
198
200
|
|
|
199
201
|
// stylesheet also has a mini runtime dependency
|
|
200
202
|
// StyleSheetType::ThemableWithMiniRuntime
|
|
201
|
-
auto miniRuntime = this->_unistylesRuntime->getMiniRuntimeAsValue(rt, maybeMiniRuntime);
|
|
203
|
+
auto miniRuntime = this->_unistylesRuntime->getMiniRuntimeAsValue(rt, maybeMiniRuntime, state.getCurrentThemeName());
|
|
202
204
|
|
|
203
205
|
return styleSheet->rawValue
|
|
204
206
|
.asFunction(rt)
|
|
@@ -563,9 +565,28 @@ jsi::Object parser::Parser::parseFirstLevel(jsi::Runtime& rt, Unistyle::Shared u
|
|
|
563
565
|
return;
|
|
564
566
|
}
|
|
565
567
|
|
|
568
|
+
// { wght: 700 } is the object syntax, not breakpoints
|
|
569
|
+
if (converters::isFontVariationSettingsPropName(propertyName) && converters::isFontVariationSettingsObject(rt, propertyValueObject)) {
|
|
570
|
+
parsedStyle.setProperty(rt, jsi::PropNameID::forUtf8(rt, propertyName), propertyValue);
|
|
571
|
+
|
|
572
|
+
return;
|
|
573
|
+
}
|
|
574
|
+
|
|
575
|
+
if (converters::isBackgroundLayerPropName(propertyName) && propertyValueObject.isArray(rt)) {
|
|
576
|
+
parsedStyle.setProperty(rt, jsi::PropNameID::forUtf8(rt, propertyName), propertyValue);
|
|
577
|
+
|
|
578
|
+
return;
|
|
579
|
+
}
|
|
580
|
+
|
|
566
581
|
// 'mq' or 'breakpoints'
|
|
567
582
|
auto valueFromBreakpoint = getValueFromBreakpoints(rt, unistyle, propertyValueObject);
|
|
568
583
|
|
|
584
|
+
if (converters::isBackgroundLayerPropName(propertyName) && valueFromBreakpoint.isObject() && valueFromBreakpoint.asObject(rt).isArray(rt)) {
|
|
585
|
+
parsedStyle.setProperty(rt, jsi::PropNameID::forUtf8(rt, propertyName), valueFromBreakpoint);
|
|
586
|
+
|
|
587
|
+
return;
|
|
588
|
+
}
|
|
589
|
+
|
|
569
590
|
parsedStyle.setProperty(rt, jsi::PropNameID::forUtf8(rt, propertyName), this->parseSecondLevel(rt, unistyle, valueFromBreakpoint));
|
|
570
591
|
});
|
|
571
592
|
|
|
@@ -1026,8 +1047,21 @@ jsi::Value parser::Parser::parseSecondLevel(jsi::Runtime &rt, Unistyle::Shared u
|
|
|
1026
1047
|
return;
|
|
1027
1048
|
}
|
|
1028
1049
|
|
|
1050
|
+
// { wght: 700 } is the object syntax, not breakpoints
|
|
1051
|
+
if (converters::isFontVariationSettingsPropName(propertyName) && converters::isFontVariationSettingsObject(rt, nestedObjectStyle)) {
|
|
1052
|
+
parsedStyle.setProperty(rt, propertyName.c_str(), propertyValue);
|
|
1053
|
+
|
|
1054
|
+
return;
|
|
1055
|
+
}
|
|
1056
|
+
|
|
1029
1057
|
auto isArray = nestedObjectStyle.isArray(rt);
|
|
1030
1058
|
|
|
1059
|
+
if (converters::isBackgroundLayerPropName(propertyName) && isArray) {
|
|
1060
|
+
parsedStyle.setProperty(rt, propertyName.c_str(), propertyValue);
|
|
1061
|
+
|
|
1062
|
+
return;
|
|
1063
|
+
}
|
|
1064
|
+
|
|
1031
1065
|
if (!isArray) {
|
|
1032
1066
|
parsedStyle.setProperty(rt, propertyName.c_str(), this->getValueFromBreakpoints(rt, unistyle, nestedObjectStyle));
|
|
1033
1067
|
}
|
|
@@ -1071,7 +1105,7 @@ jsi::Value parser::Parser::parseSecondLevel(jsi::Runtime &rt, Unistyle::Shared u
|
|
|
1071
1105
|
folly::dynamic parser::Parser::parseStylesToShadowTreeStyles(jsi::Runtime& rt, const std::vector<std::shared_ptr<UnistyleData>>& unistyles) {
|
|
1072
1106
|
jsi::Object convertedStyles(rt);
|
|
1073
1107
|
auto& state = core::UnistylesRegistry::get().getState();
|
|
1074
|
-
std::unordered_set<std::string>
|
|
1108
|
+
std::unordered_set<std::string> skippedPropNames;
|
|
1075
1109
|
|
|
1076
1110
|
for (const auto& unistyleData : unistyles) {
|
|
1077
1111
|
if (!unistyleData->parsedStyle.has_value()) {
|
|
@@ -1081,10 +1115,9 @@ folly::dynamic parser::Parser::parseStylesToShadowTreeStyles(jsi::Runtime& rt, c
|
|
|
1081
1115
|
helpers::enumerateJSIObject(
|
|
1082
1116
|
rt,
|
|
1083
1117
|
unistyleData->parsedStyle.value(),
|
|
1084
|
-
[this, &rt, &state, &convertedStyles, &
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
}
|
|
1118
|
+
[this, &rt, &state, &convertedStyles, &skippedPropNames](const std::string& propertyName, jsi::Value& propertyValue) {
|
|
1119
|
+
// a later style replaces a skipped value
|
|
1120
|
+
skippedPropNames.erase(propertyName);
|
|
1088
1121
|
|
|
1089
1122
|
if (converters::isBackgroundImagePropName(propertyName) && propertyValue.isString()) {
|
|
1090
1123
|
// React Native parses the raw string natively and reads an array as the unprocessed syntax
|
|
@@ -1112,7 +1145,39 @@ folly::dynamic parser::Parser::parseStylesToShadowTreeStyles(jsi::Runtime& rt, c
|
|
|
1112
1145
|
|
|
1113
1146
|
// without a converter (React Native < 0.83) a raw string reads as no background image,
|
|
1114
1147
|
// so leave the prop to React, which processes it in JS
|
|
1115
|
-
|
|
1148
|
+
skippedPropNames.insert(propertyName);
|
|
1149
|
+
|
|
1150
|
+
return;
|
|
1151
|
+
}
|
|
1152
|
+
|
|
1153
|
+
// React Native processes these strings in JS, its native props only read the processed arrays
|
|
1154
|
+
if (converters::isBackgroundLayerPropName(propertyName) && propertyValue.isString()) {
|
|
1155
|
+
convertedStyles.setProperty(
|
|
1156
|
+
rt,
|
|
1157
|
+
propertyName.c_str(),
|
|
1158
|
+
jsi::valueFromDynamic(rt, converters::parseBackgroundLayerString(propertyName, propertyValue.asString(rt).utf8(rt)))
|
|
1159
|
+
);
|
|
1160
|
+
|
|
1161
|
+
return;
|
|
1162
|
+
}
|
|
1163
|
+
|
|
1164
|
+
// React Native converts the object syntax in JS, its native props only read the string
|
|
1165
|
+
if (converters::isFontVariationSettingsPropName(propertyName) && propertyValue.isObject()) {
|
|
1166
|
+
auto fontVariationSettings = propertyValue.asObject(rt);
|
|
1167
|
+
auto maybeFontVariationSettings = converters::fontVariationSettingsToString(rt, fontVariationSettings);
|
|
1168
|
+
|
|
1169
|
+
if (maybeFontVariationSettings.has_value()) {
|
|
1170
|
+
convertedStyles.setProperty(
|
|
1171
|
+
rt,
|
|
1172
|
+
propertyName.c_str(),
|
|
1173
|
+
jsi::String::createFromUtf8(rt, maybeFontVariationSettings.value())
|
|
1174
|
+
);
|
|
1175
|
+
|
|
1176
|
+
return;
|
|
1177
|
+
}
|
|
1178
|
+
|
|
1179
|
+
// React throws for an invalid value, so leave the prop to React
|
|
1180
|
+
skippedPropNames.insert(propertyName);
|
|
1116
1181
|
|
|
1117
1182
|
return;
|
|
1118
1183
|
}
|
|
@@ -1289,9 +1354,9 @@ folly::dynamic parser::Parser::parseStylesToShadowTreeStyles(jsi::Runtime& rt, c
|
|
|
1289
1354
|
|
|
1290
1355
|
auto props = jsi::dynamicFromValue(rt, jsi::Value(rt, convertedStyles));
|
|
1291
1356
|
|
|
1292
|
-
// a skipped
|
|
1357
|
+
// a skipped value still wins over earlier styles in React,
|
|
1293
1358
|
// so drop the prop instead of writing an earlier style's value
|
|
1294
|
-
for (const auto& propName :
|
|
1359
|
+
for (const auto& propName : skippedPropNames) {
|
|
1295
1360
|
props.erase(propName);
|
|
1296
1361
|
}
|
|
1297
1362
|
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
#include <array>
|
|
4
4
|
#include <cstdio>
|
|
5
|
+
#include <cxxreact/ReactNativeVersion.h>
|
|
5
6
|
#include <folly/Conv.h>
|
|
6
7
|
#include <react/renderer/components/image/ImageProps.h>
|
|
7
8
|
// ParagraphProps is platform specific and not exposed by the Android prefab
|
|
@@ -13,6 +14,13 @@
|
|
|
13
14
|
#endif
|
|
14
15
|
#include <react/renderer/components/text/TextProps.h>
|
|
15
16
|
#include <react/renderer/components/view/BaseViewProps.h>
|
|
17
|
+
// background size, position and repeat exist since React Native 0.83
|
|
18
|
+
#if __has_include(<react/renderer/graphics/BackgroundSize.h>)
|
|
19
|
+
#include <react/renderer/graphics/BackgroundPosition.h>
|
|
20
|
+
#include <react/renderer/graphics/BackgroundRepeat.h>
|
|
21
|
+
#include <react/renderer/graphics/BackgroundSize.h>
|
|
22
|
+
#define UNISTYLES_HAS_BACKGROUND_LAYER_PROPS 1
|
|
23
|
+
#endif
|
|
16
24
|
#include <react/renderer/uimanager/UIManagerBinding.h>
|
|
17
25
|
#include <string_view>
|
|
18
26
|
#include "Parser.h"
|
|
@@ -74,6 +82,64 @@ std::string serialize(const std::optional<FontWeight>& fontWeight) {
|
|
|
74
82
|
return fontWeight ? std::to_string(static_cast<int>(*fontWeight)) : "undefined";
|
|
75
83
|
}
|
|
76
84
|
|
|
85
|
+
#if UNISTYLES_HAS_BACKGROUND_LAYER_PROPS
|
|
86
|
+
std::string serialize(const ValueUnit& valueUnit) {
|
|
87
|
+
switch (valueUnit.unit) {
|
|
88
|
+
case UnitType::Point:
|
|
89
|
+
return serialize(valueUnit.value) + "px";
|
|
90
|
+
case UnitType::Percent:
|
|
91
|
+
return serialize(valueUnit.value) + "%";
|
|
92
|
+
default:
|
|
93
|
+
return "undefined";
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
std::string serialize(const std::variant<std::monostate, ValueUnit>& value) {
|
|
98
|
+
return std::holds_alternative<ValueUnit>(value) ? serialize(std::get<ValueUnit>(value)) : "auto";
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
std::string serialize(const BackgroundSize& backgroundSize) {
|
|
102
|
+
if (std::holds_alternative<BackgroundSizeKeyword>(backgroundSize)) {
|
|
103
|
+
return std::get<BackgroundSizeKeyword>(backgroundSize) == BackgroundSizeKeyword::Cover ? "cover" : "contain";
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
const auto& size = std::get<BackgroundSizeLengthPercentage>(backgroundSize);
|
|
107
|
+
|
|
108
|
+
return serialize(size.x) + " " + serialize(size.y);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
std::string serialize(const BackgroundPosition& backgroundPosition) {
|
|
112
|
+
std::string result;
|
|
113
|
+
auto append = [&result](const char* edge, const std::optional<ValueUnit>& value) {
|
|
114
|
+
if (value) {
|
|
115
|
+
result += (result.empty() ? "" : " ") + std::string(edge) + " " + serialize(*value);
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
append("top", backgroundPosition.top);
|
|
120
|
+
append("left", backgroundPosition.left);
|
|
121
|
+
append("right", backgroundPosition.right);
|
|
122
|
+
append("bottom", backgroundPosition.bottom);
|
|
123
|
+
|
|
124
|
+
return result;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
std::string serialize(const BackgroundRepeat& backgroundRepeat) {
|
|
128
|
+
return std::to_string(static_cast<int>(backgroundRepeat.x)) + " " + std::to_string(static_cast<int>(backgroundRepeat.y));
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
template <typename T>
|
|
132
|
+
std::string serialize(const std::vector<T>& values) {
|
|
133
|
+
std::string result;
|
|
134
|
+
|
|
135
|
+
for (const auto& value : values) {
|
|
136
|
+
result += (result.empty() ? "" : ", ") + serialize(value);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
return "[" + result + "]";
|
|
140
|
+
}
|
|
141
|
+
#endif
|
|
142
|
+
|
|
77
143
|
RectangleEdges<SharedColor> borderColors(const BaseViewProps& props) {
|
|
78
144
|
return props.borderColors.resolve(false, {});
|
|
79
145
|
}
|
|
@@ -87,6 +153,11 @@ const VerifiedProps<BaseViewProps> viewProps{
|
|
|
87
153
|
{"borderBottomColor", [](const BaseViewProps& props) { return serialize(borderColors(props).bottom); }},
|
|
88
154
|
{"opacity", [](const BaseViewProps& props) { return serialize(props.opacity); }},
|
|
89
155
|
{"shadowColor", [](const BaseViewProps& props) { return serialize(props.shadowColor); }},
|
|
156
|
+
#if UNISTYLES_HAS_BACKGROUND_LAYER_PROPS
|
|
157
|
+
{"backgroundSize", [](const BaseViewProps& props) { return serialize(props.backgroundSize); }},
|
|
158
|
+
{"backgroundPosition", [](const BaseViewProps& props) { return serialize(props.backgroundPosition); }},
|
|
159
|
+
{"backgroundRepeat", [](const BaseViewProps& props) { return serialize(props.backgroundRepeat); }},
|
|
160
|
+
#endif
|
|
90
161
|
};
|
|
91
162
|
|
|
92
163
|
const VerifiedProps<BaseTextProps> textProps{
|
|
@@ -95,6 +166,9 @@ const VerifiedProps<BaseTextProps> textProps{
|
|
|
95
166
|
{"fontSize", [](const BaseTextProps& props) { return serialize(props.textAttributes.fontSize); }},
|
|
96
167
|
{"fontWeight", [](const BaseTextProps& props) { return serialize(props.textAttributes.fontWeight); }},
|
|
97
168
|
{"textDecorationColor", [](const BaseTextProps& props) { return serialize(props.textAttributes.textDecorationColor); }},
|
|
169
|
+
#if REACT_NATIVE_VERSION_MAJOR > 0 || REACT_NATIVE_VERSION_MINOR >= 88
|
|
170
|
+
{"fontVariationSettings", [](const BaseTextProps& props) { return props.textAttributes.fontVariationSettings.value_or("undefined"); }},
|
|
171
|
+
#endif
|
|
98
172
|
};
|
|
99
173
|
|
|
100
174
|
const VerifiedProps<ImageProps> imageProps{
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
#include "ShadowTreeManager.h"
|
|
2
|
+
#include "PerformanceTracing.h"
|
|
2
3
|
|
|
3
4
|
using namespace margelo::nitro::unistyles;
|
|
4
5
|
using namespace facebook::react;
|
|
@@ -19,6 +20,8 @@ std::vector<InstanceHandle::Shared> shadow::ShadowTreeManager::updateShadowTree(
|
|
|
19
20
|
return;
|
|
20
21
|
}
|
|
21
22
|
|
|
23
|
+
UNISTYLES_TRACE_SECTION("commit", "nodes", static_cast<int64_t>(updates.size()));
|
|
24
|
+
|
|
22
25
|
std::unordered_map<Tag, folly::dynamic> tagToProps;
|
|
23
26
|
|
|
24
27
|
committedInstanceHandles.reserve(updates.size());
|
|
@@ -19,6 +19,10 @@ const NamedTheme = ({
|
|
|
19
19
|
const scope = (0, _react.useMemo)(() => ({
|
|
20
20
|
name
|
|
21
21
|
}), [name]);
|
|
22
|
+
(0, _react.useLayoutEffect)(() => {
|
|
23
|
+
// this will affect only scoped styles as other styles are not yet mounted
|
|
24
|
+
_specs.UnistylesShadowRegistry.flush();
|
|
25
|
+
});
|
|
22
26
|
const mappedChildren = [/*#__PURE__*/(0, _jsxRuntime.jsx)(_ApplyScopedTheme.ApplyScopedTheme, {
|
|
23
27
|
name: name
|
|
24
28
|
}, "apply"), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ScopedThemeContext.ScopedThemeContext.Provider, {
|
|
@@ -27,10 +31,6 @@ const NamedTheme = ({
|
|
|
27
31
|
}, "scope"), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ApplyScopedTheme.ApplyScopedTheme, {
|
|
28
32
|
name: previousScopedTheme
|
|
29
33
|
}, "dispose")];
|
|
30
|
-
(0, _react.useLayoutEffect)(() => {
|
|
31
|
-
// this will affect only scoped styles as other styles are not yet mounted
|
|
32
|
-
_specs.UnistylesShadowRegistry.flush();
|
|
33
|
-
});
|
|
34
34
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_react.default.Fragment, {
|
|
35
35
|
children: mappedChildren
|
|
36
36
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_specs","_ApplyScopedTheme","_scopeChildren","_ScopedThemeContext","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","NamedTheme","name","children","previousScopedTheme","scope","useMemo","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_specs","_ApplyScopedTheme","_scopeChildren","_ScopedThemeContext","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","NamedTheme","name","children","previousScopedTheme","scope","useMemo","useLayoutEffect","UnistylesShadowRegistry","flush","mappedChildren","jsx","ApplyScopedTheme","ScopedThemeContext","Provider","value","scopeChildren","Fragment","exports"],"sourceRoot":"../../../src","sources":["components/NamedTheme.tsx"],"mappings":";;;;;;AAEA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AAIA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,iBAAA,GAAAF,OAAA;AACA,IAAAG,cAAA,GAAAH,OAAA;AACA,IAAAI,mBAAA,GAAAJ,OAAA;AAAyD,IAAAK,WAAA,GAAAL,OAAA;AAAA,SAAAD,wBAAAO,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAT,uBAAA,YAAAA,CAAAO,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAOlD,MAAMkB,UAAoD,GAAGA,CAAC;EAAEC,IAAI;EAAEC,QAAQ;EAAEC;AAAoB,CAAC,KAAK;EAC7G,MAAMC,KAAK,GAAG,IAAAC,cAAO,EAAC,OAAO;IAAEJ;EAAK,CAAC,CAAC,EAAE,CAACA,IAAI,CAAC,CAAC;EAE/C,IAAAK,sBAAe,EAAC,MAAM;IAClB;IACAC,8BAAuB,CAACC,KAAK,CAAC,CAAC;EACnC,CAAC,CAAC;EAEF,MAAMC,cAAc,GAAG,cACnB,IAAA7B,WAAA,CAAA8B,GAAA,EAACjC,iBAAA,CAAAkC,gBAAgB;IAAaV,IAAI,EAAEA;EAAK,GAAnB,OAAqB,CAAC,eAC5C,IAAArB,WAAA,CAAA8B,GAAA,EAAC/B,mBAAA,CAAAiC,kBAAkB,CAACC,QAAQ;IAAaC,KAAK,EAAEV,KAAM;IAAAF,QAAA,EACjD,IAAAa,4BAAa,EAACd,IAAI,EAAEC,QAAQ;EAAC,GADD,OAEJ,CAAC,eAC9B,IAAAtB,WAAA,CAAA8B,GAAA,EAACjC,iBAAA,CAAAkC,gBAAgB;IAAeV,IAAI,EAAEE;EAAyD,GAAzE,SAA2E,CAAC,CACrG;EAED,oBAAO,IAAAvB,WAAA,CAAA8B,GAAA,EAACrC,MAAA,CAAAkB,OAAK,CAACyB,QAAQ;IAAAd,QAAA,EAAEO;EAAc,CAAiB,CAAC;AAC5D,CAAC;AAAAQ,OAAA,CAAAjB,UAAA,GAAAA,UAAA","ignoreList":[]}
|
|
@@ -5,5 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.ScopedThemeContext = void 0;
|
|
7
7
|
var _react = require("react");
|
|
8
|
-
|
|
8
|
+
// React Server Components load a React build without createContext (or useContext). The Next.js App Router
|
|
9
|
+
// setup imports Unistyles from the root layout, a server component, and nothing can read this context there.
|
|
10
|
+
const ScopedThemeContext = exports.ScopedThemeContext = typeof _react.createContext === 'function' ? /*#__PURE__*/(0, _react.createContext)(null) : null;
|
|
9
11
|
//# sourceMappingURL=ScopedThemeContext.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","ScopedThemeContext","exports","createContext"],"sourceRoot":"../../../src","sources":["components/ScopedThemeContext.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;
|
|
1
|
+
{"version":3,"names":["_react","require","ScopedThemeContext","exports","createContext"],"sourceRoot":"../../../src","sources":["components/ScopedThemeContext.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAQA;AACA;AACO,MAAMC,kBAAkB,GAAAC,OAAA,CAAAD,kBAAA,GAC3B,OAAOE,oBAAa,KAAK,UAAU,gBAAG,IAAAA,oBAAa,EAAe,IAAI,CAAC,GAAG,IACpD","ignoreList":[]}
|
|
@@ -14,7 +14,11 @@ var _warn = require("./warn");
|
|
|
14
14
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
15
15
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
16
16
|
const createUnistylesImageBackground = Component => {
|
|
17
|
-
const UnistylesImageBackground =
|
|
17
|
+
const UnistylesImageBackground = ({
|
|
18
|
+
ref,
|
|
19
|
+
...props
|
|
20
|
+
}) => {
|
|
21
|
+
const forwardedRef = ref ?? null;
|
|
18
22
|
const scope = (0, _react.useContext)(_ScopedThemeContext.ScopedThemeContext);
|
|
19
23
|
|
|
20
24
|
// @ts-expect-error we don't know the type of the component
|
|
@@ -43,7 +47,7 @@ const createUnistylesImageBackground = Component => {
|
|
|
43
47
|
ref: (0, _hasUnistyles.hasUnistyles)(props.style) ? linkRef : forwardedRef,
|
|
44
48
|
imageRef: (0, _hasUnistyles.hasUnistyles)(props.imageStyle) ? linkImageRef : props.imageRef
|
|
45
49
|
});
|
|
46
|
-
}
|
|
50
|
+
};
|
|
47
51
|
return (0, _utils.copyComponentProperties)(Component, UnistylesImageBackground);
|
|
48
52
|
};
|
|
49
53
|
exports.createUnistylesImageBackground = createUnistylesImageBackground;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_ScopedThemeContext","_specs","_utils","_hasUnistyles","_passForwardRef","_warn","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","createUnistylesImageBackground","Component","UnistylesImageBackground","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_ScopedThemeContext","_specs","_utils","_hasUnistyles","_passForwardRef","_warn","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","createUnistylesImageBackground","Component","UnistylesImageBackground","ref","props","forwardedRef","scope","useContext","ScopedThemeContext","maybeWarnAboutMultipleUnistyles","style","imageStyle","linkRef","passForwardedRef","UnistylesShadowRegistry","add","remove","linkImageRef","jsx","hasUnistyles","imageRef","copyComponentProperties","exports"],"sourceRoot":"../../../src","sources":["core/createUnistylesImageBackground.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,21 +4,24 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.withUnistyles = void 0;
|
|
7
|
-
var _react =
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
8
|
var _utils = require("../../utils");
|
|
9
9
|
var _getClassname = require("../getClassname");
|
|
10
10
|
var _useProxifiedUnistyles = require("../useProxifiedUnistyles");
|
|
11
11
|
var _warn = require("../warn");
|
|
12
12
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
13
|
-
function
|
|
13
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
14
|
// @ts-expect-error
|
|
15
15
|
|
|
16
16
|
// @ts-expect-error
|
|
17
17
|
|
|
18
18
|
const withUnistyles = (Component, mappings) => {
|
|
19
|
-
return
|
|
19
|
+
return ({
|
|
20
|
+
ref,
|
|
21
|
+
...props
|
|
22
|
+
}) => {
|
|
20
23
|
const narrowedProps = props;
|
|
21
|
-
const
|
|
24
|
+
const [classNames, animatedStyles] = (0, _getClassname.getClassName)(narrowedProps.style, true) ?? [];
|
|
22
25
|
const contentContainerStyleClassNames = (0, _getClassname.getClassName)(narrowedProps.contentContainerStyle);
|
|
23
26
|
const {
|
|
24
27
|
proxifiedRuntime,
|
|
@@ -37,7 +40,8 @@ const withUnistyles = (Component, mappings) => {
|
|
|
37
40
|
...(0, _utils.deepMergeObjects)(mappingsProps, unistyleProps, props),
|
|
38
41
|
...(narrowedProps.style ? {
|
|
39
42
|
// Override default component styles with undefined values to reset them
|
|
40
|
-
|
|
43
|
+
// animated styles can't be a class, so they stay inline
|
|
44
|
+
style: animatedStyles?.length ? [emptyStyles, ...animatedStyles] : emptyStyles
|
|
41
45
|
} : {}),
|
|
42
46
|
...(narrowedProps.contentContainerStyle ? {
|
|
43
47
|
contentContainerStyle: contentContainerStyleClassNames
|
|
@@ -51,7 +55,6 @@ const withUnistyles = (Component, mappings) => {
|
|
|
51
55
|
// prettier-ignore
|
|
52
56
|
(0, _warn.maybeWarnAboutMultipleUnistyles)(narrowedProps.contentContainerStyle, `withUnistyles(${Component.displayName ?? Component.name ?? 'Unknown'})`);
|
|
53
57
|
const NativeComponent = Component;
|
|
54
|
-
const [classNames] = styleClassNames ?? [];
|
|
55
58
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
56
59
|
className: classNames?.hash,
|
|
57
60
|
style: {
|
|
@@ -62,7 +65,7 @@ const withUnistyles = (Component, mappings) => {
|
|
|
62
65
|
ref: ref
|
|
63
66
|
}, uniPropsKey || mappingsKey)
|
|
64
67
|
});
|
|
65
|
-
}
|
|
68
|
+
};
|
|
66
69
|
};
|
|
67
70
|
exports.withUnistyles = withUnistyles;
|
|
68
71
|
//# sourceMappingURL=withUnistyles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_utils","_getClassname","_useProxifiedUnistyles","_warn","_jsxRuntime","e","__esModule","default","withUnistyles","Component","mappings","ref","props","narrowedProps","classNames","animatedStyles","getClassName","style","contentContainerStyleClassNames","contentContainerStyle","proxifiedRuntime","proxifiedTheme","useProxifiedUnistyles","key","mappingsKey","mappingsProps","uniPropsKey","unistyleProps","uniProps","emptyStyles","Object","fromEntries","entries","getOwnPropertyDescriptors","filter","startsWith","map","undefined","combinedProps","deepMergeObjects","length","maybeWarnAboutMultipleUnistyles","displayName","name","NativeComponent","jsx","className","hash","display","children","exports"],"sourceRoot":"../../../../src","sources":["core/withUnistyles/withUnistyles.tsx"],"mappings":"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","ignoreList":[]}
|