react-native-unistyles 3.0.0-nightly-20250603 → 3.0.0-nightly-20250604

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 CHANGED
@@ -29,7 +29,7 @@ yarn add react-native-edge-to-edge react-native-nitro-modules@0.25.2
29
29
  | react-native-unistyles | react-native-nitro-modules | other requirements |
30
30
  |------------------------|----------------------------|----- |
31
31
  | 3.0.0-nightly-20250520 | 0.25.2 |
32
- | 3.0.0-nightly-20250529 | 0.25.2 | React >= 19 and React Native >= 0.78 |
32
+ | 3.0.0-nightly-20250603 | 0.25.2 | React >= 19 and React Native >= 0.78 |
33
33
  | 3.0.0-rc.4 | 0.25.2 | |
34
34
 
35
35
  Then follow [installation guides](https://unistyl.es/v3/start/getting-started) for your platform.
@@ -95,6 +95,10 @@ void core::UnistylesState::registerProcessColorFunction(jsi::Function&& fn) {
95
95
  this->_processColorFn = std::make_shared<jsi::Function>(std::move(fn));
96
96
  }
97
97
 
98
+ void core::UnistylesState::registerParseBoxShadowString(jsi::Function&& fn) {
99
+ this->_parseBoxShadowStringFn = std::make_shared<jsi::Function>(std::move(fn));
100
+ }
101
+
98
102
  int core::UnistylesState::parseColor(jsi::Value& maybeColor) {
99
103
  if (!maybeColor.isString()) {
100
104
  return 0;
@@ -114,3 +118,9 @@ int core::UnistylesState::parseColor(jsi::Value& maybeColor) {
114
118
 
115
119
  return this->_colorCache[colorString.utf8(*_rt).c_str()];
116
120
  }
121
+
122
+ jsi::Array core::UnistylesState::parseBoxShadowString(std::string&& boxShadowString) {
123
+ jsi::Value result = this->_parseBoxShadowStringFn.get()->call(*_rt, boxShadowString);
124
+
125
+ return result.asObject(*_rt).asArray(*_rt);
126
+ }
@@ -32,8 +32,10 @@ struct UnistylesState {
32
32
  jsi::Object getCurrentJSTheme();
33
33
  jsi::Object getJSThemeByName(std::string& themeName);
34
34
  int parseColor(jsi::Value& color);
35
+ jsi::Array parseBoxShadowString(std::string&& boxShadowString);
35
36
  void computeCurrentBreakpoint(int screenWidth);
36
37
  void registerProcessColorFunction(jsi::Function&& fn);
38
+ void registerParseBoxShadowString(jsi::Function&& fn);
37
39
 
38
40
  private:
39
41
  jsi::Runtime* _rt;
@@ -45,6 +47,7 @@ private:
45
47
  std::vector<std::string> _registeredThemeNames{};
46
48
  std::optional<std::string> _currentThemeName = std::nullopt;
47
49
  std::shared_ptr<jsi::Function> _processColorFn;
50
+ std::shared_ptr<jsi::Function> _parseBoxShadowStringFn;
48
51
  std::unordered_map<std::string, uint32_t> _colorCache{};
49
52
 
50
53
  friend class UnistylesRegistry;
@@ -251,12 +251,18 @@ void HybridStyleSheet::loadExternalMethods(const jsi::Value& thisValue, jsi::Run
251
251
  auto maybeProcessColorFn = jsMethods.asObject(rt).getProperty(rt, "processColor");
252
252
 
253
253
  helpers::assertThat(rt, maybeProcessColorFn.isObject(), "Unistyles: Can't load processColor function from JS.");
254
+
255
+ auto maybeParseBoxShadowStringFn = jsMethods.asObject(rt).getProperty(rt, "parseBoxShadowString");
256
+
257
+ helpers::assertThat(rt, maybeParseBoxShadowStringFn.isObject(), "Unistyles: Can't load parseBoxShadowString function from JS.");
254
258
 
255
259
  auto processColorFn = maybeProcessColorFn.asObject(rt).asFunction(rt);
260
+ auto parseBoxShadowStringFn = maybeParseBoxShadowStringFn.asObject(rt).asFunction(rt);
256
261
  auto& registry = core::UnistylesRegistry::get();
257
262
  auto& state = registry.getState(rt);
258
263
 
259
264
  state.registerProcessColorFunction(std::move(processColorFn));
265
+ state.registerParseBoxShadowString(std::move(parseBoxShadowStringFn));
260
266
  }
261
267
 
262
268
  void HybridStyleSheet::onPlatformDependenciesChange(std::vector<UnistyleDependency> dependencies) {
@@ -424,6 +424,13 @@ jsi::Object parser::Parser::parseFirstLevel(jsi::Runtime& rt, Unistyle::Shared u
424
424
  return;
425
425
  }
426
426
 
427
+ // special case as we need to convert it to jsi::Array<jsi::Object>
428
+ if (propertyName == "boxShadow" && propertyValue.isString()) {
429
+ parsedStyle.setProperty(rt, jsi::PropNameID::forUtf8(rt, propertyName), parseBoxShadowString(rt, propertyValue.asString(rt).utf8(rt)));
430
+
431
+ return;
432
+ }
433
+
427
434
  // primitives
428
435
  if (propertyValue.isNumber() || propertyValue.isString() || propertyValue.isUndefined() || propertyValue.isNull()) {
429
436
  parsedStyle.setProperty(rt, jsi::PropNameID::forUtf8(rt, propertyName), propertyValue);
@@ -618,6 +625,13 @@ jsi::Value parser::Parser::parseBoxShadow(jsi::Runtime &rt, Unistyle::Shared uni
618
625
  return result;
619
626
  }
620
627
 
628
+ jsi::Array parser::Parser::parseBoxShadowString(jsi::Runtime& rt, std::string&& boxShadowString) {
629
+ auto& registry = core::UnistylesRegistry::get();
630
+ auto& state = registry.getState(rt);
631
+
632
+ return state.parseBoxShadowString(std::move(boxShadowString));
633
+ }
634
+
621
635
  // eg. [{ brightness: 0.5 }, { opacity: 0.25 }]
622
636
  jsi::Value parser::Parser::parseFilters(jsi::Runtime &rt, Unistyle::Shared unistyle, jsi::Object &obj) {
623
637
  std::vector<jsi::Value> parsedFilters{};
@@ -40,6 +40,7 @@ private:
40
40
  std::vector<UnistyleDependency> parseDependencies(jsi::Runtime &rt, jsi::Object&& dependencies);
41
41
  jsi::Value parseTransforms(jsi::Runtime& rt, Unistyle::Shared unistyle, jsi::Object& obj);
42
42
  jsi::Value parseBoxShadow(jsi::Runtime& rt, Unistyle::Shared unistyle, jsi::Object& obj);
43
+ jsi::Array parseBoxShadowString(jsi::Runtime& rt, std::string&& boxShadowString);
43
44
  jsi::Value parseFilters(jsi::Runtime& rt, Unistyle::Shared unistyle, jsi::Object& obj);
44
45
  jsi::Value getValueFromBreakpoints(jsi::Runtime& rt, Unistyle::Shared unistyle, jsi::Object& obj);
45
46
  jsi::Object parseVariants(jsi::Runtime& rt, Unistyle::Shared unistyle, jsi::Object& obj, Variants& variants);
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.parseBoxShadowString = void 0;
7
+ const isValue = str => str && (str === '0' || str.endsWith('px'));
8
+ const parseBoxShadow = str => {
9
+ if (str === 'none') {
10
+ return undefined;
11
+ }
12
+
13
+ // split by space, but not if it's inside of ()
14
+ const parts = str.split(/\s+(?![^(]*\))/);
15
+ const lastIndex = parts.length - 1;
16
+ const insetIndex = parts.findIndex(part => part === 'inset');
17
+
18
+ // inset can only be at the start or end
19
+ if (![-1, 0, lastIndex].includes(insetIndex)) {
20
+ return undefined;
21
+ }
22
+
23
+ // if there is no inset, color can only be at the start or end
24
+ const maybeColorsIndexes = insetIndex === -1 ? [0, lastIndex] : insetIndex === lastIndex ? [0, lastIndex - 1] : [1, lastIndex];
25
+ const colorIndex = maybeColorsIndexes.find(index => !isValue(parts[index])) ?? -1;
26
+ const color = colorIndex !== -1 ? parts[colorIndex] : undefined;
27
+ const values = parts.filter((_, index) => index !== colorIndex && index !== insetIndex);
28
+
29
+ // at this point there can be only 4 values
30
+ if (values.length > 4) {
31
+ return undefined;
32
+ }
33
+ const [offsetX, offsetY, blurRadius, spreadRadius] = values;
34
+ if (!isValue(offsetX) || !isValue(offsetY)) {
35
+ return undefined;
36
+ }
37
+ return {
38
+ inset: insetIndex !== -1 ? true : undefined,
39
+ offsetX: Number.parseFloat(offsetX),
40
+ offsetY: Number.parseFloat(offsetY),
41
+ blurRadius: isValue(blurRadius) ? Number.parseFloat(blurRadius) : undefined,
42
+ spreadRadius: isValue(spreadRadius) ? Number.parseFloat(spreadRadius) : undefined,
43
+ color
44
+ };
45
+ };
46
+ const parseBoxShadowString = str => {
47
+ const parts = str.split(/,(?![^()]*\))/).map(part => part.trim().replace('\n', '')).filter(Boolean).map(parseBoxShadow).filter(Boolean);
48
+ return parts;
49
+ };
50
+ exports.parseBoxShadowString = parseBoxShadowString;
51
+ //# sourceMappingURL=parseBoxShadow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["isValue","str","endsWith","parseBoxShadow","undefined","parts","split","lastIndex","length","insetIndex","findIndex","part","includes","maybeColorsIndexes","colorIndex","find","index","color","values","filter","_","offsetX","offsetY","blurRadius","spreadRadius","inset","Number","parseFloat","parseBoxShadowString","map","trim","replace","Boolean","exports"],"sourceRoot":"../../../src","sources":["core/parseBoxShadow.ts"],"mappings":";;;;;;AASA,MAAMA,OAAO,GAAIC,GAAuB,IAAKA,GAAG,KAAKA,GAAG,KAAK,GAAG,IAAIA,GAAG,CAACC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAEvF,MAAMC,cAAc,GAAIF,GAAW,IAA4B;EAC3D,IAAIA,GAAG,KAAK,MAAM,EAAE;IAChB,OAAOG,SAAS;EACpB;;EAEA;EACA,MAAMC,KAAK,GAAGJ,GAAG,CAACK,KAAK,CAAC,gBAAgB,CAAC;EACzC,MAAMC,SAAS,GAAGF,KAAK,CAACG,MAAM,GAAG,CAAC;EAClC,MAAMC,UAAU,GAAGJ,KAAK,CAACK,SAAS,CAACC,IAAI,IAAIA,IAAI,KAAK,OAAO,CAAC;;EAE5D;EACA,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAEJ,SAAS,CAAC,CAACK,QAAQ,CAACH,UAAU,CAAC,EAAE;IAC1C,OAAOL,SAAS;EACpB;;EAEA;EACA,MAAMS,kBAAkB,GAAGJ,UAAU,KAAK,CAAC,CAAC,GACtC,CAAC,CAAC,EAAEF,SAAS,CAAC,GACdE,UAAU,KAAKF,SAAS,GACpB,CAAC,CAAC,EAAEA,SAAS,GAAG,CAAC,CAAC,GAClB,CAAC,CAAC,EAAEA,SAAS,CAAC;EAExB,MAAMO,UAAU,GAAGD,kBAAkB,CAACE,IAAI,CAACC,KAAK,IAAI,CAAChB,OAAO,CAACK,KAAK,CAACW,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EACjF,MAAMC,KAAK,GAAGH,UAAU,KAAK,CAAC,CAAC,GACzBT,KAAK,CAACS,UAAU,CAAC,GACjBV,SAAS;EACf,MAAMc,MAAM,GAAGb,KAAK,CAACc,MAAM,CAAC,CAACC,CAAC,EAAEJ,KAAK,KAAKA,KAAK,KAAKF,UAAU,IAAIE,KAAK,KAAKP,UAAU,CAAC;;EAEvF;EACA,IAAIS,MAAM,CAACV,MAAM,GAAG,CAAC,EAAE;IACnB,OAAOJ,SAAS;EACpB;EAEA,MAAM,CAACiB,OAAO,EAAEC,OAAO,EAAEC,UAAU,EAAEC,YAAY,CAAC,GAAGN,MAAM;EAE3D,IAAI,CAAClB,OAAO,CAACqB,OAAO,CAAC,IAAI,CAACrB,OAAO,CAACsB,OAAO,CAAC,EAAE;IACxC,OAAOlB,SAAS;EACpB;EAEA,OAAO;IACHqB,KAAK,EAAEhB,UAAU,KAAK,CAAC,CAAC,GAClB,IAAI,GACJL,SAAS;IACfiB,OAAO,EAAEK,MAAM,CAACC,UAAU,CAACN,OAAiB,CAAC;IAC7CC,OAAO,EAAEI,MAAM,CAACC,UAAU,CAACL,OAAiB,CAAC;IAC7CC,UAAU,EAAEvB,OAAO,CAACuB,UAAU,CAAC,GACzBG,MAAM,CAACC,UAAU,CAACJ,UAAoB,CAAC,GACvCnB,SAAS;IACfoB,YAAY,EAAExB,OAAO,CAACwB,YAAY,CAAC,GAC7BE,MAAM,CAACC,UAAU,CAACH,YAAsB,CAAC,GACzCpB,SAAS;IACfa;EACJ,CAAC;AACL,CAAC;AAEM,MAAMW,oBAAoB,GAAI3B,GAAW,IAAuB;EACnE,MAAMI,KAAK,GAAGJ,GAAG,CACZK,KAAK,CAAC,eAAe,CAAC,CACtBuB,GAAG,CAAClB,IAAI,IAAIA,IAAI,CAACmB,IAAI,CAAC,CAAC,CAACC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAC1CZ,MAAM,CAACa,OAAO,CAAC,CACfH,GAAG,CAAC1B,cAAc,CAAC,CACnBgB,MAAM,CAACa,OAAO,CAAqB;EAExC,OAAO3B,KAAK;AAChB,CAAC;AAAA4B,OAAA,CAAAL,oBAAA,GAAAA,oBAAA","ignoreList":[]}
@@ -187,7 +187,8 @@ jest.mock('react-native-unistyles', () => {
187
187
  }
188
188
  },
189
189
  jsMethods: {
190
- processColor: () => null
190
+ processColor: () => null,
191
+ parseBoxShadowString: () => []
191
192
  },
192
193
  hairlineWidth: 1,
193
194
  unid: -1,
@@ -1 +1 @@
1
- {"version":3,"names":["jest","mock","NitroModules","createHybridObject","add","init","createHybridStatusBar","setStyle","createHybridNavigationBar","React","require","_REGISTRY","themes","breakpoints","miniRuntime","themeName","undefined","breakpoint","hasAdaptiveThemes","colorScheme","contentSizeCategory","insets","top","left","right","bottom","ime","pixelRatio","fontScale","rtl","isLandscape","isPortrait","navigationBar","width","height","screen","statusBar","unistylesRuntime","orientation","dispose","equals","name","setHidden","getTheme","Object","values","at","setTheme","updateTheme","setRootViewBackgroundColor","_setRootViewBackgroundColor","setAdaptiveThemes","setImmersiveMode","Hide","Display","ScopedTheme","withUnistyles","Component","mapper","props","createElement","mq","only","and","useUnistyles","theme","rt","StyleSheet","absoluteFillObject","position","absoluteFill","compose","styles","flatten","create","useVariants","configure","config","jsMethods","processColor","hairlineWidth","unid","addChangeListener","UnistylesRuntime"],"sourceRoot":"../../src","sources":["mocks.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["jest","mock","NitroModules","createHybridObject","add","init","createHybridStatusBar","setStyle","createHybridNavigationBar","React","require","_REGISTRY","themes","breakpoints","miniRuntime","themeName","undefined","breakpoint","hasAdaptiveThemes","colorScheme","contentSizeCategory","insets","top","left","right","bottom","ime","pixelRatio","fontScale","rtl","isLandscape","isPortrait","navigationBar","width","height","screen","statusBar","unistylesRuntime","orientation","dispose","equals","name","setHidden","getTheme","Object","values","at","setTheme","updateTheme","setRootViewBackgroundColor","_setRootViewBackgroundColor","setAdaptiveThemes","setImmersiveMode","Hide","Display","ScopedTheme","withUnistyles","Component","mapper","props","createElement","mq","only","and","useUnistyles","theme","rt","StyleSheet","absoluteFillObject","position","absoluteFill","compose","styles","flatten","create","useVariants","configure","config","jsMethods","processColor","parseBoxShadowString","hairlineWidth","unid","addChangeListener","UnistylesRuntime"],"sourceRoot":"../../src","sources":["mocks.ts"],"mappings":"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","ignoreList":[]}
@@ -6,13 +6,15 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.StyleSheet = void 0;
7
7
  var _reactNative = require("react-native");
8
8
  var _reactNativeNitroModules = require("react-native-nitro-modules");
9
+ var _parseBoxShadow = require("../../core/parseBoxShadow");
9
10
  const HybridUnistylesStyleSheet = _reactNativeNitroModules.NitroModules.createHybridObject('UnistylesStyleSheet');
10
11
  HybridUnistylesStyleSheet.absoluteFillObject = _reactNative.StyleSheet.absoluteFillObject;
11
12
  HybridUnistylesStyleSheet.absoluteFill = _reactNative.StyleSheet.absoluteFill;
12
13
  HybridUnistylesStyleSheet.flatten = _reactNative.StyleSheet.flatten;
13
14
  HybridUnistylesStyleSheet.compose = _reactNative.StyleSheet.compose;
14
15
  HybridUnistylesStyleSheet.jsMethods = {
15
- processColor: _reactNative.processColor
16
+ processColor: _reactNative.processColor,
17
+ parseBoxShadowString: _parseBoxShadow.parseBoxShadowString
16
18
  };
17
19
  HybridUnistylesStyleSheet.init();
18
20
  const StyleSheet = exports.StyleSheet = HybridUnistylesStyleSheet;
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_reactNativeNitroModules","HybridUnistylesStyleSheet","NitroModules","createHybridObject","absoluteFillObject","NativeStyleSheet","absoluteFill","flatten","compose","jsMethods","processColor","init","StyleSheet","exports"],"sourceRoot":"../../../../src","sources":["specs/StyleSheet/index.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA,IAAAC,wBAAA,GAAAD,OAAA;AAqCA,MAAME,yBAAyB,GAAGC,qCAAY,CACzCC,kBAAkB,CAAsB,qBAAqB,CAAC;AAEnEF,yBAAyB,CAACG,kBAAkB,GAAGC,uBAAgB,CAACD,kBAAkB;AAClFH,yBAAyB,CAACK,YAAY,GAAGD,uBAAgB,CAACC,YAAY;AACtEL,yBAAyB,CAACM,OAAO,GAAGF,uBAAgB,CAACE,OAAO;AAC5DN,yBAAyB,CAACO,OAAO,GAAGH,uBAAgB,CAACG,OAAO;AAC5DP,yBAAyB,CAACQ,SAAS,GAAG;EAClCC,YAAY,EAAZA;AACJ,CAAC;AAEDT,yBAAyB,CAACU,IAAI,CAAC,CAAC;AAIzB,MAAMC,UAAU,GAAAC,OAAA,CAAAD,UAAA,GAAGX,yBAAsE","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_reactNativeNitroModules","_parseBoxShadow","HybridUnistylesStyleSheet","NitroModules","createHybridObject","absoluteFillObject","NativeStyleSheet","absoluteFill","flatten","compose","jsMethods","processColor","parseBoxShadowString","init","StyleSheet","exports"],"sourceRoot":"../../../../src","sources":["specs/StyleSheet/index.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA,IAAAC,wBAAA,GAAAD,OAAA;AACA,IAAAE,eAAA,GAAAF,OAAA;AAsCA,MAAMG,yBAAyB,GAAGC,qCAAY,CACzCC,kBAAkB,CAAsB,qBAAqB,CAAC;AAEnEF,yBAAyB,CAACG,kBAAkB,GAAGC,uBAAgB,CAACD,kBAAkB;AAClFH,yBAAyB,CAACK,YAAY,GAAGD,uBAAgB,CAACC,YAAY;AACtEL,yBAAyB,CAACM,OAAO,GAAGF,uBAAgB,CAACE,OAAO;AAC5DN,yBAAyB,CAACO,OAAO,GAAGH,uBAAgB,CAACG,OAAO;AAC5DP,yBAAyB,CAACQ,SAAS,GAAG;EAClCC,YAAY,EAAZA,yBAAY;EACZC,oBAAoB,EAApBA;AACJ,CAAC;AAEDV,yBAAyB,CAACW,IAAI,CAAC,CAAC;AAIzB,MAAMC,UAAU,GAAAC,OAAA,CAAAD,UAAA,GAAGZ,yBAAsE","ignoreList":[]}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+
3
+ const isValue = str => str && (str === '0' || str.endsWith('px'));
4
+ const parseBoxShadow = str => {
5
+ if (str === 'none') {
6
+ return undefined;
7
+ }
8
+
9
+ // split by space, but not if it's inside of ()
10
+ const parts = str.split(/\s+(?![^(]*\))/);
11
+ const lastIndex = parts.length - 1;
12
+ const insetIndex = parts.findIndex(part => part === 'inset');
13
+
14
+ // inset can only be at the start or end
15
+ if (![-1, 0, lastIndex].includes(insetIndex)) {
16
+ return undefined;
17
+ }
18
+
19
+ // if there is no inset, color can only be at the start or end
20
+ const maybeColorsIndexes = insetIndex === -1 ? [0, lastIndex] : insetIndex === lastIndex ? [0, lastIndex - 1] : [1, lastIndex];
21
+ const colorIndex = maybeColorsIndexes.find(index => !isValue(parts[index])) ?? -1;
22
+ const color = colorIndex !== -1 ? parts[colorIndex] : undefined;
23
+ const values = parts.filter((_, index) => index !== colorIndex && index !== insetIndex);
24
+
25
+ // at this point there can be only 4 values
26
+ if (values.length > 4) {
27
+ return undefined;
28
+ }
29
+ const [offsetX, offsetY, blurRadius, spreadRadius] = values;
30
+ if (!isValue(offsetX) || !isValue(offsetY)) {
31
+ return undefined;
32
+ }
33
+ return {
34
+ inset: insetIndex !== -1 ? true : undefined,
35
+ offsetX: Number.parseFloat(offsetX),
36
+ offsetY: Number.parseFloat(offsetY),
37
+ blurRadius: isValue(blurRadius) ? Number.parseFloat(blurRadius) : undefined,
38
+ spreadRadius: isValue(spreadRadius) ? Number.parseFloat(spreadRadius) : undefined,
39
+ color
40
+ };
41
+ };
42
+ export const parseBoxShadowString = str => {
43
+ const parts = str.split(/,(?![^()]*\))/).map(part => part.trim().replace('\n', '')).filter(Boolean).map(parseBoxShadow).filter(Boolean);
44
+ return parts;
45
+ };
46
+ //# sourceMappingURL=parseBoxShadow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["isValue","str","endsWith","parseBoxShadow","undefined","parts","split","lastIndex","length","insetIndex","findIndex","part","includes","maybeColorsIndexes","colorIndex","find","index","color","values","filter","_","offsetX","offsetY","blurRadius","spreadRadius","inset","Number","parseFloat","parseBoxShadowString","map","trim","replace","Boolean"],"sourceRoot":"../../../src","sources":["core/parseBoxShadow.ts"],"mappings":";;AASA,MAAMA,OAAO,GAAIC,GAAuB,IAAKA,GAAG,KAAKA,GAAG,KAAK,GAAG,IAAIA,GAAG,CAACC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAEvF,MAAMC,cAAc,GAAIF,GAAW,IAA4B;EAC3D,IAAIA,GAAG,KAAK,MAAM,EAAE;IAChB,OAAOG,SAAS;EACpB;;EAEA;EACA,MAAMC,KAAK,GAAGJ,GAAG,CAACK,KAAK,CAAC,gBAAgB,CAAC;EACzC,MAAMC,SAAS,GAAGF,KAAK,CAACG,MAAM,GAAG,CAAC;EAClC,MAAMC,UAAU,GAAGJ,KAAK,CAACK,SAAS,CAACC,IAAI,IAAIA,IAAI,KAAK,OAAO,CAAC;;EAE5D;EACA,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAEJ,SAAS,CAAC,CAACK,QAAQ,CAACH,UAAU,CAAC,EAAE;IAC1C,OAAOL,SAAS;EACpB;;EAEA;EACA,MAAMS,kBAAkB,GAAGJ,UAAU,KAAK,CAAC,CAAC,GACtC,CAAC,CAAC,EAAEF,SAAS,CAAC,GACdE,UAAU,KAAKF,SAAS,GACpB,CAAC,CAAC,EAAEA,SAAS,GAAG,CAAC,CAAC,GAClB,CAAC,CAAC,EAAEA,SAAS,CAAC;EAExB,MAAMO,UAAU,GAAGD,kBAAkB,CAACE,IAAI,CAACC,KAAK,IAAI,CAAChB,OAAO,CAACK,KAAK,CAACW,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EACjF,MAAMC,KAAK,GAAGH,UAAU,KAAK,CAAC,CAAC,GACzBT,KAAK,CAACS,UAAU,CAAC,GACjBV,SAAS;EACf,MAAMc,MAAM,GAAGb,KAAK,CAACc,MAAM,CAAC,CAACC,CAAC,EAAEJ,KAAK,KAAKA,KAAK,KAAKF,UAAU,IAAIE,KAAK,KAAKP,UAAU,CAAC;;EAEvF;EACA,IAAIS,MAAM,CAACV,MAAM,GAAG,CAAC,EAAE;IACnB,OAAOJ,SAAS;EACpB;EAEA,MAAM,CAACiB,OAAO,EAAEC,OAAO,EAAEC,UAAU,EAAEC,YAAY,CAAC,GAAGN,MAAM;EAE3D,IAAI,CAAClB,OAAO,CAACqB,OAAO,CAAC,IAAI,CAACrB,OAAO,CAACsB,OAAO,CAAC,EAAE;IACxC,OAAOlB,SAAS;EACpB;EAEA,OAAO;IACHqB,KAAK,EAAEhB,UAAU,KAAK,CAAC,CAAC,GAClB,IAAI,GACJL,SAAS;IACfiB,OAAO,EAAEK,MAAM,CAACC,UAAU,CAACN,OAAiB,CAAC;IAC7CC,OAAO,EAAEI,MAAM,CAACC,UAAU,CAACL,OAAiB,CAAC;IAC7CC,UAAU,EAAEvB,OAAO,CAACuB,UAAU,CAAC,GACzBG,MAAM,CAACC,UAAU,CAACJ,UAAoB,CAAC,GACvCnB,SAAS;IACfoB,YAAY,EAAExB,OAAO,CAACwB,YAAY,CAAC,GAC7BE,MAAM,CAACC,UAAU,CAACH,YAAsB,CAAC,GACzCpB,SAAS;IACfa;EACJ,CAAC;AACL,CAAC;AAED,OAAO,MAAMW,oBAAoB,GAAI3B,GAAW,IAAuB;EACnE,MAAMI,KAAK,GAAGJ,GAAG,CACZK,KAAK,CAAC,eAAe,CAAC,CACtBuB,GAAG,CAAClB,IAAI,IAAIA,IAAI,CAACmB,IAAI,CAAC,CAAC,CAACC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAC1CZ,MAAM,CAACa,OAAO,CAAC,CACfH,GAAG,CAAC1B,cAAc,CAAC,CACnBgB,MAAM,CAACa,OAAO,CAAqB;EAExC,OAAO3B,KAAK;AAChB,CAAC","ignoreList":[]}
@@ -184,7 +184,8 @@ jest.mock('react-native-unistyles', () => {
184
184
  }
185
185
  },
186
186
  jsMethods: {
187
- processColor: () => null
187
+ processColor: () => null,
188
+ parseBoxShadowString: () => []
188
189
  },
189
190
  hairlineWidth: 1,
190
191
  unid: -1,
@@ -1 +1 @@
1
- {"version":3,"names":["jest","mock","NitroModules","createHybridObject","add","init","createHybridStatusBar","setStyle","createHybridNavigationBar","React","require","_REGISTRY","themes","breakpoints","miniRuntime","themeName","undefined","breakpoint","hasAdaptiveThemes","colorScheme","contentSizeCategory","insets","top","left","right","bottom","ime","pixelRatio","fontScale","rtl","isLandscape","isPortrait","navigationBar","width","height","screen","statusBar","unistylesRuntime","orientation","dispose","equals","name","setHidden","getTheme","Object","values","at","setTheme","updateTheme","setRootViewBackgroundColor","_setRootViewBackgroundColor","setAdaptiveThemes","setImmersiveMode","Hide","Display","ScopedTheme","withUnistyles","Component","mapper","props","createElement","mq","only","and","useUnistyles","theme","rt","StyleSheet","absoluteFillObject","position","absoluteFill","compose","styles","flatten","create","useVariants","configure","config","jsMethods","processColor","hairlineWidth","unid","addChangeListener","UnistylesRuntime"],"sourceRoot":"../../src","sources":["mocks.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["jest","mock","NitroModules","createHybridObject","add","init","createHybridStatusBar","setStyle","createHybridNavigationBar","React","require","_REGISTRY","themes","breakpoints","miniRuntime","themeName","undefined","breakpoint","hasAdaptiveThemes","colorScheme","contentSizeCategory","insets","top","left","right","bottom","ime","pixelRatio","fontScale","rtl","isLandscape","isPortrait","navigationBar","width","height","screen","statusBar","unistylesRuntime","orientation","dispose","equals","name","setHidden","getTheme","Object","values","at","setTheme","updateTheme","setRootViewBackgroundColor","_setRootViewBackgroundColor","setAdaptiveThemes","setImmersiveMode","Hide","Display","ScopedTheme","withUnistyles","Component","mapper","props","createElement","mq","only","and","useUnistyles","theme","rt","StyleSheet","absoluteFillObject","position","absoluteFill","compose","styles","flatten","create","useVariants","configure","config","jsMethods","processColor","parseBoxShadowString","hairlineWidth","unid","addChangeListener","UnistylesRuntime"],"sourceRoot":"../../src","sources":["mocks.ts"],"mappings":"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","ignoreList":[]}
@@ -2,13 +2,15 @@
2
2
 
3
3
  import { StyleSheet as NativeStyleSheet, processColor } from 'react-native';
4
4
  import { NitroModules } from 'react-native-nitro-modules';
5
+ import { parseBoxShadowString } from '../../core/parseBoxShadow';
5
6
  const HybridUnistylesStyleSheet = NitroModules.createHybridObject('UnistylesStyleSheet');
6
7
  HybridUnistylesStyleSheet.absoluteFillObject = NativeStyleSheet.absoluteFillObject;
7
8
  HybridUnistylesStyleSheet.absoluteFill = NativeStyleSheet.absoluteFill;
8
9
  HybridUnistylesStyleSheet.flatten = NativeStyleSheet.flatten;
9
10
  HybridUnistylesStyleSheet.compose = NativeStyleSheet.compose;
10
11
  HybridUnistylesStyleSheet.jsMethods = {
11
- processColor
12
+ processColor,
13
+ parseBoxShadowString
12
14
  };
13
15
  HybridUnistylesStyleSheet.init();
14
16
  export const StyleSheet = HybridUnistylesStyleSheet;
@@ -1 +1 @@
1
- {"version":3,"names":["StyleSheet","NativeStyleSheet","processColor","NitroModules","HybridUnistylesStyleSheet","createHybridObject","absoluteFillObject","absoluteFill","flatten","compose","jsMethods","init"],"sourceRoot":"../../../../src","sources":["specs/StyleSheet/index.ts"],"mappings":";;AAAA,SAASA,UAAU,IAAIC,gBAAgB,EAAEC,YAAY,QAAQ,cAAc;AAE3E,SAASC,YAAY,QAAQ,4BAA4B;AAqCzD,MAAMC,yBAAyB,GAAGD,YAAY,CACzCE,kBAAkB,CAAsB,qBAAqB,CAAC;AAEnED,yBAAyB,CAACE,kBAAkB,GAAGL,gBAAgB,CAACK,kBAAkB;AAClFF,yBAAyB,CAACG,YAAY,GAAGN,gBAAgB,CAACM,YAAY;AACtEH,yBAAyB,CAACI,OAAO,GAAGP,gBAAgB,CAACO,OAAO;AAC5DJ,yBAAyB,CAACK,OAAO,GAAGR,gBAAgB,CAACQ,OAAO;AAC5DL,yBAAyB,CAACM,SAAS,GAAG;EAClCR;AACJ,CAAC;AAEDE,yBAAyB,CAACO,IAAI,CAAC,CAAC;AAIhC,OAAO,MAAMX,UAAU,GAAGI,yBAAsE","ignoreList":[]}
1
+ {"version":3,"names":["StyleSheet","NativeStyleSheet","processColor","NitroModules","parseBoxShadowString","HybridUnistylesStyleSheet","createHybridObject","absoluteFillObject","absoluteFill","flatten","compose","jsMethods","init"],"sourceRoot":"../../../../src","sources":["specs/StyleSheet/index.ts"],"mappings":";;AAAA,SAASA,UAAU,IAAIC,gBAAgB,EAAEC,YAAY,QAAQ,cAAc;AAE3E,SAASC,YAAY,QAAQ,4BAA4B;AACzD,SAASC,oBAAoB,QAAQ,2BAA2B;AAsChE,MAAMC,yBAAyB,GAAGF,YAAY,CACzCG,kBAAkB,CAAsB,qBAAqB,CAAC;AAEnED,yBAAyB,CAACE,kBAAkB,GAAGN,gBAAgB,CAACM,kBAAkB;AAClFF,yBAAyB,CAACG,YAAY,GAAGP,gBAAgB,CAACO,YAAY;AACtEH,yBAAyB,CAACI,OAAO,GAAGR,gBAAgB,CAACQ,OAAO;AAC5DJ,yBAAyB,CAACK,OAAO,GAAGT,gBAAgB,CAACS,OAAO;AAC5DL,yBAAyB,CAACM,SAAS,GAAG;EAClCT,YAAY;EACZE;AACJ,CAAC;AAEDC,yBAAyB,CAACO,IAAI,CAAC,CAAC;AAIhC,OAAO,MAAMZ,UAAU,GAAGK,yBAAsE","ignoreList":[]}
@@ -0,0 +1,11 @@
1
+ type BoxShadow = {
2
+ inset?: boolean;
3
+ offsetX?: number;
4
+ offsetY?: number;
5
+ blurRadius?: number;
6
+ spreadRadius?: number;
7
+ color?: string;
8
+ };
9
+ export declare const parseBoxShadowString: (str: string) => Array<BoxShadow>;
10
+ export {};
11
+ //# sourceMappingURL=parseBoxShadow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseBoxShadow.d.ts","sourceRoot":"","sources":["../../../../src/core/parseBoxShadow.ts"],"names":[],"mappings":"AAAA,KAAK,SAAS,GAAG;IACb,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AA2DD,eAAO,MAAM,oBAAoB,GAAI,KAAK,MAAM,KAAG,KAAK,CAAC,SAAS,CASjE,CAAA"}
@@ -1,5 +1,6 @@
1
1
  import { processColor } from 'react-native';
2
2
  import type { StyleSheet as NativeStyleSheetType } from 'react-native';
3
+ import { parseBoxShadowString } from '../../core/parseBoxShadow';
3
4
  import type { UnistylesBreakpoints, UnistylesThemes } from '../../global';
4
5
  import type { CreateUnistylesStyleSheet } from '../../types';
5
6
  import type { UnistylesStyleSheet as UnistylesStyleSheetSpec } from './UnistylesStyleSheet.nitro';
@@ -27,6 +28,7 @@ export interface UnistylesStyleSheet extends UnistylesStyleSheetSpec {
27
28
  configure(config: UnistylesConfig): void;
28
29
  jsMethods: {
29
30
  processColor: typeof processColor;
31
+ parseBoxShadowString: typeof parseBoxShadowString;
30
32
  };
31
33
  }
32
34
  type PrivateMethods = 'jsMethods' | 'addChangeListener' | 'init';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/specs/StyleSheet/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3E,OAAO,KAAK,EAAE,UAAU,IAAI,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAEtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACzE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAA;AAC5D,OAAO,KAAK,EAAE,mBAAmB,IAAI,uBAAuB,EAAE,MAAM,6BAA6B,CAAA;AAEjG,KAAK,sBAAsB,GAAG;IAC1B,YAAY,EAAE,CAAC,MAAM,MAAM,eAAe,CAAC,GAAG,MAAM,eAAe,CAAA;CACtE,GAAG;IACA,cAAc,EAAE,OAAO,CAAA;CAC1B,CAAA;AAED,KAAK,iBAAiB,GAAG,sBAAsB,GAAG;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,qBAAqB,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;CAC9C,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC1B,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,WAAW,CAAC,EAAE,oBAAoB,CAAA;CACrC,CAAA;AAED,MAAM,WAAW,mBAAoB,SAAQ,uBAAuB;IAChE,kBAAkB,EAAE,OAAO,oBAAoB,CAAC,kBAAkB,CAAC;IACnE,YAAY,EAAE,OAAO,oBAAoB,CAAC,YAAY,CAAC;IACvD,OAAO,EAAE,OAAO,oBAAoB,CAAC,OAAO,CAAC;IAC7C,OAAO,EAAE,OAAO,oBAAoB,CAAC,OAAO,CAAC;IAG7C,IAAI,IAAI,IAAI,CAAC;IACb,MAAM,EAAE,yBAAyB,CAAC;IAClC,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;IACzC,SAAS,EAAE;QACP,YAAY,EAAE,OAAO,YAAY,CAAA;KACpC,CAAA;CACJ;AAeD,KAAK,cAAc,GAAG,WAAW,GAAG,mBAAmB,GAAG,MAAM,CAAA;AAEhE,eAAO,MAAM,UAAU,EAAgC,IAAI,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/specs/StyleSheet/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3E,OAAO,KAAK,EAAE,UAAU,IAAI,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAEtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,KAAK,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACzE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAA;AAC5D,OAAO,KAAK,EAAE,mBAAmB,IAAI,uBAAuB,EAAE,MAAM,6BAA6B,CAAA;AAEjG,KAAK,sBAAsB,GAAG;IAC1B,YAAY,EAAE,CAAC,MAAM,MAAM,eAAe,CAAC,GAAG,MAAM,eAAe,CAAA;CACtE,GAAG;IACA,cAAc,EAAE,OAAO,CAAA;CAC1B,CAAA;AAED,KAAK,iBAAiB,GAAG,sBAAsB,GAAG;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,qBAAqB,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;CAC9C,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC1B,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,WAAW,CAAC,EAAE,oBAAoB,CAAA;CACrC,CAAA;AAED,MAAM,WAAW,mBAAoB,SAAQ,uBAAuB;IAChE,kBAAkB,EAAE,OAAO,oBAAoB,CAAC,kBAAkB,CAAC;IACnE,YAAY,EAAE,OAAO,oBAAoB,CAAC,YAAY,CAAC;IACvD,OAAO,EAAE,OAAO,oBAAoB,CAAC,OAAO,CAAC;IAC7C,OAAO,EAAE,OAAO,oBAAoB,CAAC,OAAO,CAAC;IAG7C,IAAI,IAAI,IAAI,CAAC;IACb,MAAM,EAAE,yBAAyB,CAAC;IAClC,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;IACzC,SAAS,EAAE;QACP,YAAY,EAAE,OAAO,YAAY,CAAC;QAClC,oBAAoB,EAAE,OAAO,oBAAoB,CAAA;KACpD,CAAA;CACJ;AAgBD,KAAK,cAAc,GAAG,WAAW,GAAG,mBAAmB,GAAG,MAAM,CAAA;AAEhE,eAAO,MAAM,UAAU,EAAgC,IAAI,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-unistyles",
3
- "version": "3.0.0-nightly-20250603",
3
+ "version": "3.0.0-nightly-20250604",
4
4
  "description": "Level up your React Native StyleSheet",
5
5
  "scripts": {
6
6
  "test": "NODE_ENV=babel-test jest ./plugin",
@@ -0,0 +1,76 @@
1
+ type BoxShadow = {
2
+ inset?: boolean
3
+ offsetX?: number
4
+ offsetY?: number
5
+ blurRadius?: number
6
+ spreadRadius?: number
7
+ color?: string
8
+ }
9
+
10
+ const isValue = (str: string | undefined) => str && (str === '0' || str.endsWith('px'))
11
+
12
+ const parseBoxShadow = (str: string): BoxShadow | undefined => {
13
+ if (str === 'none') {
14
+ return undefined
15
+ }
16
+
17
+ // split by space, but not if it's inside of ()
18
+ const parts = str.split(/\s+(?![^(]*\))/)
19
+ const lastIndex = parts.length - 1
20
+ const insetIndex = parts.findIndex(part => part === 'inset')
21
+
22
+ // inset can only be at the start or end
23
+ if (![-1, 0, lastIndex].includes(insetIndex)) {
24
+ return undefined
25
+ }
26
+
27
+ // if there is no inset, color can only be at the start or end
28
+ const maybeColorsIndexes = insetIndex === -1
29
+ ? [0, lastIndex]
30
+ : insetIndex === lastIndex
31
+ ? [0, lastIndex - 1]
32
+ : [1, lastIndex]
33
+
34
+ const colorIndex = maybeColorsIndexes.find(index => !isValue(parts[index])) ?? -1
35
+ const color = colorIndex !== -1
36
+ ? parts[colorIndex]
37
+ : undefined
38
+ const values = parts.filter((_, index) => index !== colorIndex && index !== insetIndex)
39
+
40
+ // at this point there can be only 4 values
41
+ if (values.length > 4) {
42
+ return undefined
43
+ }
44
+
45
+ const [offsetX, offsetY, blurRadius, spreadRadius] = values
46
+
47
+ if (!isValue(offsetX) || !isValue(offsetY)) {
48
+ return undefined
49
+ }
50
+
51
+ return {
52
+ inset: insetIndex !== -1
53
+ ? true
54
+ : undefined,
55
+ offsetX: Number.parseFloat(offsetX as string),
56
+ offsetY: Number.parseFloat(offsetY as string),
57
+ blurRadius: isValue(blurRadius)
58
+ ? Number.parseFloat(blurRadius as string)
59
+ : undefined,
60
+ spreadRadius: isValue(spreadRadius)
61
+ ? Number.parseFloat(spreadRadius as string)
62
+ : undefined,
63
+ color
64
+ }
65
+ }
66
+
67
+ export const parseBoxShadowString = (str: string): Array<BoxShadow> => {
68
+ const parts = str
69
+ .split(/,(?![^()]*\))/)
70
+ .map(part => part.trim().replace('\n', ''))
71
+ .filter(Boolean)
72
+ .map(parseBoxShadow)
73
+ .filter(Boolean) as Array<BoxShadow>
74
+
75
+ return parts
76
+ }
package/src/mocks.ts CHANGED
@@ -200,7 +200,8 @@ jest.mock('react-native-unistyles', () => {
200
200
  }
201
201
  },
202
202
  jsMethods: {
203
- processColor: () => null
203
+ processColor: () => null,
204
+ parseBoxShadowString: () => []
204
205
  },
205
206
  hairlineWidth: 1,
206
207
  unid: -1,
@@ -1,6 +1,7 @@
1
1
  import { StyleSheet as NativeStyleSheet, processColor } from 'react-native'
2
2
  import type { StyleSheet as NativeStyleSheetType } from 'react-native'
3
3
  import { NitroModules } from 'react-native-nitro-modules'
4
+ import { parseBoxShadowString } from '../../core/parseBoxShadow'
4
5
  import type { UnistylesBreakpoints, UnistylesThemes } from '../../global'
5
6
  import type { CreateUnistylesStyleSheet } from '../../types'
6
7
  import type { UnistylesStyleSheet as UnistylesStyleSheetSpec } from './UnistylesStyleSheet.nitro'
@@ -33,7 +34,8 @@ export interface UnistylesStyleSheet extends UnistylesStyleSheetSpec {
33
34
  create: CreateUnistylesStyleSheet,
34
35
  configure(config: UnistylesConfig): void,
35
36
  jsMethods: {
36
- processColor: typeof processColor
37
+ processColor: typeof processColor,
38
+ parseBoxShadowString: typeof parseBoxShadowString
37
39
  }
38
40
  }
39
41
 
@@ -45,7 +47,8 @@ HybridUnistylesStyleSheet.absoluteFill = NativeStyleSheet.absoluteFill
45
47
  HybridUnistylesStyleSheet.flatten = NativeStyleSheet.flatten
46
48
  HybridUnistylesStyleSheet.compose = NativeStyleSheet.compose
47
49
  HybridUnistylesStyleSheet.jsMethods = {
48
- processColor
50
+ processColor,
51
+ parseBoxShadowString
49
52
  }
50
53
 
51
54
  HybridUnistylesStyleSheet.init()