@oxyhq/bloom 1.10.0 → 1.10.1

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.
@@ -21,13 +21,21 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
21
21
  }
22
22
 
23
23
  /**
24
- * On web, the single `asChild` child is frequently a react-native-web
25
- * component (e.g. RN `<View>`) whose `style` prop is a *style array* (or a
26
- * numeric registered-style id), not a plain `React.CSSProperties` object.
27
- * react-native-web flattens nested style arrays, so the cloned child must
28
- * receive an array spreading an array into an object literal would copy its
29
- * numeric indices as keys and crash RNW when it commits them to the DOM
30
- * (`Failed to set an indexed property [0] on 'CSSStyleDeclaration'`).
24
+ * On web, the single `asChild` child can be either kind of element, and the two
25
+ * kinds want different `style` shapes:
26
+ *
27
+ * - A react-native-web component (RN `<View>`, `<Pressable>`) may already
28
+ * carry a style ARRAY or a numeric registered-style id. Spreading that into
29
+ * an object literal copies its numeric indices as keys, and RNW then commits
30
+ * `0`, `1`, to the DOM. RNW flattens arrays, so it gets an array.
31
+ * - Anything that ends on a DOM element — an `<a>`, a router `<Link>`, any
32
+ * component that forwards `style` to its host node — hands the prop straight
33
+ * to React DOM, which walks the own keys of whatever it is given. An array
34
+ * there throws `Failed to set an indexed property [0] on
35
+ * 'CSSStyleDeclaration'` during commit, blanking the tree.
36
+ *
37
+ * So the array form is used only when the child's own style is already
38
+ * RN-shaped; every other child gets a plain object, which both runtimes accept.
31
39
  */
32
40
 
33
41
  function BloomColorScope({
@@ -68,13 +76,17 @@ function BloomColorScope({
68
76
  if (! /*#__PURE__*/(0, _react.isValidElement)(child)) {
69
77
  throw new Error('BloomColorScope with `asChild` requires a single React element child that accepts a `style` prop.');
70
78
  }
71
- // Merge as a style ARRAY (the RNW-safe form): scope vars first, then the
72
- // caller's `style`, then the child's own `style` last so its explicit
73
- // styles win. react-native-web flattens nested arrays correctly; spreading
74
- // the child's style (which is often an RN style array or numeric id) into an
75
- // object literal would copy numeric indices as keys and crash RNW.
79
+ // Scope vars first, then the caller's `style`, then the child's own so its
80
+ // explicit styles win. The shape follows the child: an array only when the
81
+ // child's style is already RN-shaped (see the note above), an object
82
+ // otherwise an array reaching a DOM node throws on commit.
76
83
  const childStyle = child.props.style;
77
- const mergedStyle = [varsStyle, style, childStyle];
84
+ const childIsRnStyled = Array.isArray(childStyle) || typeof childStyle === 'number';
85
+ const mergedStyle = childIsRnStyled ? [varsStyle, style, childStyle] : {
86
+ ...varsStyle,
87
+ ...style,
88
+ ...(childStyle || undefined)
89
+ };
78
90
  content = /*#__PURE__*/(0, _react.cloneElement)(child, {
79
91
  style: mergedStyle
80
92
  });
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_BloomThemeProvider","_buildTheme","_styleBuilder","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","buildWebScopeVars","colorPreset","mode","buildScopeVars","BloomColorScope","asChild","style","children","parent","useContext","BloomThemeContext","resolvedMode","theme","contextValue","useMemo","buildTheme","varsStyle","Error","jsx","Fragment","content","child","Children","only","isValidElement","childStyle","props","mergedStyle","cloneElement","Provider","value","useColorScopeStyle","scopeStyle"],"sourceRoot":"../../../../src","sources":["theme/color-scope/ColorScope.web.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_BloomThemeProvider","_buildTheme","_styleBuilder","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","buildWebScopeVars","colorPreset","mode","buildScopeVars","BloomColorScope","asChild","style","children","parent","useContext","BloomThemeContext","resolvedMode","theme","contextValue","useMemo","buildTheme","varsStyle","Error","jsx","Fragment","content","child","Children","only","isValidElement","childStyle","props","childIsRnStyled","Array","isArray","mergedStyle","undefined","cloneElement","Provider","value","useColorScopeStyle","scopeStyle"],"sourceRoot":"../../../../src","sources":["theme/color-scope/ColorScope.web.tsx"],"mappings":"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","ignoreList":[]}
@@ -17,13 +17,21 @@ function buildWebScopeVars(colorPreset, mode) {
17
17
  }
18
18
 
19
19
  /**
20
- * On web, the single `asChild` child is frequently a react-native-web
21
- * component (e.g. RN `<View>`) whose `style` prop is a *style array* (or a
22
- * numeric registered-style id), not a plain `React.CSSProperties` object.
23
- * react-native-web flattens nested style arrays, so the cloned child must
24
- * receive an array spreading an array into an object literal would copy its
25
- * numeric indices as keys and crash RNW when it commits them to the DOM
26
- * (`Failed to set an indexed property [0] on 'CSSStyleDeclaration'`).
20
+ * On web, the single `asChild` child can be either kind of element, and the two
21
+ * kinds want different `style` shapes:
22
+ *
23
+ * - A react-native-web component (RN `<View>`, `<Pressable>`) may already
24
+ * carry a style ARRAY or a numeric registered-style id. Spreading that into
25
+ * an object literal copies its numeric indices as keys, and RNW then commits
26
+ * `0`, `1`, to the DOM. RNW flattens arrays, so it gets an array.
27
+ * - Anything that ends on a DOM element — an `<a>`, a router `<Link>`, any
28
+ * component that forwards `style` to its host node — hands the prop straight
29
+ * to React DOM, which walks the own keys of whatever it is given. An array
30
+ * there throws `Failed to set an indexed property [0] on
31
+ * 'CSSStyleDeclaration'` during commit, blanking the tree.
32
+ *
33
+ * So the array form is used only when the child's own style is already
34
+ * RN-shaped; every other child gets a plain object, which both runtimes accept.
27
35
  */
28
36
 
29
37
  export function BloomColorScope({
@@ -64,13 +72,17 @@ export function BloomColorScope({
64
72
  if (! /*#__PURE__*/isValidElement(child)) {
65
73
  throw new Error('BloomColorScope with `asChild` requires a single React element child that accepts a `style` prop.');
66
74
  }
67
- // Merge as a style ARRAY (the RNW-safe form): scope vars first, then the
68
- // caller's `style`, then the child's own `style` last so its explicit
69
- // styles win. react-native-web flattens nested arrays correctly; spreading
70
- // the child's style (which is often an RN style array or numeric id) into an
71
- // object literal would copy numeric indices as keys and crash RNW.
75
+ // Scope vars first, then the caller's `style`, then the child's own so its
76
+ // explicit styles win. The shape follows the child: an array only when the
77
+ // child's style is already RN-shaped (see the note above), an object
78
+ // otherwise an array reaching a DOM node throws on commit.
72
79
  const childStyle = child.props.style;
73
- const mergedStyle = [varsStyle, style, childStyle];
80
+ const childIsRnStyled = Array.isArray(childStyle) || typeof childStyle === 'number';
81
+ const mergedStyle = childIsRnStyled ? [varsStyle, style, childStyle] : {
82
+ ...varsStyle,
83
+ ...style,
84
+ ...(childStyle || undefined)
85
+ };
74
86
  content = /*#__PURE__*/cloneElement(child, {
75
87
  style: mergedStyle
76
88
  });
@@ -1 +1 @@
1
- {"version":3,"names":["React","Children","cloneElement","isValidElement","useContext","useMemo","BloomThemeContext","buildTheme","buildScopeVars","Fragment","_Fragment","jsx","_jsx","buildWebScopeVars","colorPreset","mode","BloomColorScope","asChild","style","children","parent","resolvedMode","theme","contextValue","varsStyle","Error","content","child","only","childStyle","props","mergedStyle","Provider","value","useColorScopeStyle","scopeStyle"],"sourceRoot":"../../../../src","sources":["theme/color-scope/ColorScope.web.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","Children","cloneElement","isValidElement","useContext","useMemo","BloomThemeContext","buildTheme","buildScopeVars","Fragment","_Fragment","jsx","_jsx","buildWebScopeVars","colorPreset","mode","BloomColorScope","asChild","style","children","parent","resolvedMode","theme","contextValue","varsStyle","Error","content","child","only","childStyle","props","childIsRnStyled","Array","isArray","mergedStyle","undefined","Provider","value","useColorScopeStyle","scopeStyle"],"sourceRoot":"../../../../src","sources":["theme/color-scope/ColorScope.web.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"ColorScope.web.d.ts","sourceRoot":"","sources":["../../../../../src/theme/color-scope/ColorScope.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsE,MAAM,OAAO,CAAC;AAI3F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAgBrD,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,WAAW,EAAE,YAAY,GAAG,SAAS,CAAC;IACtC;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yGAAyG;IACzG,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAuBD,wBAAgB,eAAe,CAAC,EAC9B,WAAW,EACX,OAAe,EACf,KAAK,EACL,QAAQ,GACT,EAAE,oBAAoB,2CAoDtB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,YAAY,GAAG,KAAK,CAAC,aAAa,CAYjF"}
1
+ {"version":3,"file":"ColorScope.web.d.ts","sourceRoot":"","sources":["../../../../../src/theme/color-scope/ColorScope.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsE,MAAM,OAAO,CAAC;AAI3F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAgBrD,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,WAAW,EAAE,YAAY,GAAG,SAAS,CAAC;IACtC;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yGAAyG;IACzG,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AA+BD,wBAAgB,eAAe,CAAC,EAC9B,WAAW,EACX,OAAe,EACf,KAAK,EACL,QAAQ,GACT,EAAE,oBAAoB,2CAsDtB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,YAAY,GAAG,KAAK,CAAC,aAAa,CAYjF"}
@@ -1 +1 @@
1
- {"version":3,"file":"ColorScope.web.d.ts","sourceRoot":"","sources":["../../../../../src/theme/color-scope/ColorScope.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsE,MAAM,OAAO,CAAC;AAI3F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAgBrD,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,WAAW,EAAE,YAAY,GAAG,SAAS,CAAC;IACtC;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yGAAyG;IACzG,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAuBD,wBAAgB,eAAe,CAAC,EAC9B,WAAW,EACX,OAAe,EACf,KAAK,EACL,QAAQ,GACT,EAAE,oBAAoB,2CAoDtB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,YAAY,GAAG,KAAK,CAAC,aAAa,CAYjF"}
1
+ {"version":3,"file":"ColorScope.web.d.ts","sourceRoot":"","sources":["../../../../../src/theme/color-scope/ColorScope.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsE,MAAM,OAAO,CAAC;AAI3F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAgBrD,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,WAAW,EAAE,YAAY,GAAG,SAAS,CAAC;IACtC;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yGAAyG;IACzG,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AA+BD,wBAAgB,eAAe,CAAC,EAC9B,WAAW,EACX,OAAe,EACf,KAAK,EACL,QAAQ,GACT,EAAE,oBAAoB,2CAsDtB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,YAAY,GAAG,KAAK,CAAC,aAAa,CAYjF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oxyhq/bloom",
3
- "version": "1.10.0",
3
+ "version": "1.10.1",
4
4
  "packageManager": "bun@1.3.14",
5
5
  "description": "Bloom UI — Oxy ecosystem component library for React Native + Expo + Web",
6
6
  "main": "lib/commonjs/index.js",
@@ -35,13 +35,21 @@ export interface BloomColorScopeProps {
35
35
  }
36
36
 
37
37
  /**
38
- * On web, the single `asChild` child is frequently a react-native-web
39
- * component (e.g. RN `<View>`) whose `style` prop is a *style array* (or a
40
- * numeric registered-style id), not a plain `React.CSSProperties` object.
41
- * react-native-web flattens nested style arrays, so the cloned child must
42
- * receive an array spreading an array into an object literal would copy its
43
- * numeric indices as keys and crash RNW when it commits them to the DOM
44
- * (`Failed to set an indexed property [0] on 'CSSStyleDeclaration'`).
38
+ * On web, the single `asChild` child can be either kind of element, and the two
39
+ * kinds want different `style` shapes:
40
+ *
41
+ * - A react-native-web component (RN `<View>`, `<Pressable>`) may already
42
+ * carry a style ARRAY or a numeric registered-style id. Spreading that into
43
+ * an object literal copies its numeric indices as keys, and RNW then commits
44
+ * `0`, `1`, to the DOM. RNW flattens arrays, so it gets an array.
45
+ * - Anything that ends on a DOM element — an `<a>`, a router `<Link>`, any
46
+ * component that forwards `style` to its host node — hands the prop straight
47
+ * to React DOM, which walks the own keys of whatever it is given. An array
48
+ * there throws `Failed to set an indexed property [0] on
49
+ * 'CSSStyleDeclaration'` during commit, blanking the tree.
50
+ *
51
+ * So the array form is used only when the child's own style is already
52
+ * RN-shaped; every other child gets a plain object, which both runtimes accept.
45
53
  */
46
54
  type WebStyle =
47
55
  | React.CSSProperties
@@ -96,13 +104,15 @@ export function BloomColorScope({
96
104
  'BloomColorScope with `asChild` requires a single React element child that accepts a `style` prop.',
97
105
  );
98
106
  }
99
- // Merge as a style ARRAY (the RNW-safe form): scope vars first, then the
100
- // caller's `style`, then the child's own `style` last so its explicit
101
- // styles win. react-native-web flattens nested arrays correctly; spreading
102
- // the child's style (which is often an RN style array or numeric id) into an
103
- // object literal would copy numeric indices as keys and crash RNW.
107
+ // Scope vars first, then the caller's `style`, then the child's own so its
108
+ // explicit styles win. The shape follows the child: an array only when the
109
+ // child's style is already RN-shaped (see the note above), an object
110
+ // otherwise an array reaching a DOM node throws on commit.
104
111
  const childStyle = child.props.style;
105
- const mergedStyle: WebStyle = [varsStyle, style, childStyle];
112
+ const childIsRnStyled = Array.isArray(childStyle) || typeof childStyle === 'number';
113
+ const mergedStyle: WebStyle = childIsRnStyled
114
+ ? [varsStyle, style, childStyle]
115
+ : { ...varsStyle, ...style, ...(childStyle || undefined) };
106
116
  content = cloneElement(child, { style: mergedStyle });
107
117
  } else {
108
118
  // A plain DOM `<div>` does NOT accept style arrays — only the cloned child