react-native-unistyles 1.0.0-beta.1 → 1.0.0-beta.2
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 +81 -1
- package/lib/commonjs/utils/styles.js +4 -16
- package/lib/commonjs/utils/styles.js.map +1 -1
- package/lib/module/utils/styles.js +4 -16
- package/lib/module/utils/styles.js.map +1 -1
- package/lib/typescript/src/utils/styles.d.ts +1 -5
- package/lib/typescript/src/utils/styles.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/utils/styles.ts +5 -21
package/README.md
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
</picture>
|
8
8
|
|
9
9
|
## Features
|
10
|
-
- ⚡ Blazing fast, adds around ~
|
10
|
+
- ⚡ Blazing fast, adds around ~3ms on top of StyleSheet*
|
11
11
|
- 🎳 Share up to 100% of your styles across platforms in monorepo
|
12
12
|
- 🎯 Doesn't introduce new components
|
13
13
|
- 🖥️ Supports custom breakpoints and css-like media queries
|
@@ -230,6 +230,86 @@ const stylesheet = createStyles(theme => ({
|
|
230
230
|
}))
|
231
231
|
```
|
232
232
|
|
233
|
+
## Dynamic functions
|
234
|
+
|
235
|
+
Every style can be transformed to dynamic function to take additional parameters from JSX:
|
236
|
+
|
237
|
+
```tsx
|
238
|
+
export const ExampleUnistyles = () => {
|
239
|
+
const { styles } = useStyles(stylesheet)
|
240
|
+
|
241
|
+
return (
|
242
|
+
<ScrollView contentContainerStyle={styles.scrollContainer}>
|
243
|
+
{posts.map((post, index) => (
|
244
|
+
<View
|
245
|
+
key={post.key}
|
246
|
+
// call it as regular function
|
247
|
+
style={styles.post(index)}
|
248
|
+
>
|
249
|
+
<Text>
|
250
|
+
{post.title}
|
251
|
+
</Text>
|
252
|
+
</View>
|
253
|
+
))}
|
254
|
+
</ScrollView>
|
255
|
+
)
|
256
|
+
}
|
257
|
+
|
258
|
+
const stylesheet = createStyles({
|
259
|
+
scrollContainer: {
|
260
|
+
flex: 1,
|
261
|
+
justifyContent: 'center',
|
262
|
+
alignItems: 'center',
|
263
|
+
},
|
264
|
+
// dynamic function
|
265
|
+
post: (index: number) => ({
|
266
|
+
backgroundColor: index % 2 === 0 ? 'gold' : 'silver',
|
267
|
+
})
|
268
|
+
})
|
269
|
+
```
|
270
|
+
|
271
|
+
## Migrate from StyleSheet
|
272
|
+
|
273
|
+
`react-native-unistyles` embraces the simplicity of `StyleSheet`, making it easy to integrate into your project.
|
274
|
+
|
275
|
+
You can replace `StyleSheet.create` with `createStyles` and it will work exactly the same:
|
276
|
+
|
277
|
+
```diff
|
278
|
+
-const styles = StyleSheet.create({
|
279
|
+
+const styles = createStyles({
|
280
|
+
scrollContainer: {
|
281
|
+
flex: 1,
|
282
|
+
justifyContent: 'center',
|
283
|
+
alignItems: 'center',
|
284
|
+
}
|
285
|
+
})
|
286
|
+
```
|
287
|
+
|
288
|
+
If you need additional functionalities such as `breakpoints`, `media-queries` or `theme` you can incrementally pass `style(sheet)` into the `useStyles` hook:
|
289
|
+
|
290
|
+
```ts
|
291
|
+
export const ExampleUnistyles = () => {
|
292
|
+
const { styles } = useStyles(stylesheet)
|
293
|
+
// ... your component code
|
294
|
+
}
|
295
|
+
```
|
296
|
+
|
297
|
+
With the hook in place, you can now use `breakpoints` and `media-queries`.
|
298
|
+
|
299
|
+
Additionally, to access the `theme` use a function instead of an `object`:
|
300
|
+
|
301
|
+
```diff
|
302
|
+
-const stylesheet = createStyles({
|
303
|
+
+const stylesheet = createStyles(theme => ({
|
304
|
+
scrollContainer: {
|
305
|
+
flex: 1,
|
306
|
+
justifyContent: 'center',
|
307
|
+
alignItems: 'center',
|
308
|
+
backgroundColor: theme.colors.background
|
309
|
+
}
|
310
|
+
}))
|
311
|
+
```
|
312
|
+
|
233
313
|
## Example
|
234
314
|
|
235
315
|
In order to check out working example go to [example/](./example).
|
@@ -8,10 +8,6 @@ var _breakpoints = require("./breakpoints");
|
|
8
8
|
/**
|
9
9
|
* Proxies a function to parse its return value for custom media queries or breakpoints.
|
10
10
|
*
|
11
|
-
* If the function's string representation contains a custom media query or a defined breakpoint,
|
12
|
-
* the returned function will be proxied to parse its return value based on the provided screen size and breakpoints.
|
13
|
-
* If neither is found, the original function is returned.
|
14
|
-
*
|
15
11
|
* @template B - An object type where keys represent breakpoint names and values represent breakpoint values.
|
16
12
|
*
|
17
13
|
* @param {Function} fn - The function to be proxified.
|
@@ -19,7 +15,7 @@ var _breakpoints = require("./breakpoints");
|
|
19
15
|
* @param {ScreenSize} screenSize - An object representing the screen size to be checked against the media queries.
|
20
16
|
* @param {B} breakpoints - An object representing the defined breakpoints.
|
21
17
|
*
|
22
|
-
* @returns {Function} Returns the proxified function
|
18
|
+
* @returns {Function} Returns the proxified function
|
23
19
|
*
|
24
20
|
* @example
|
25
21
|
*
|
@@ -30,17 +26,9 @@ var _breakpoints = require("./breakpoints");
|
|
30
26
|
* const proxifiedFunction = proxifyFunction(myFunction, 'sm', screenSize, breakpoints)
|
31
27
|
* proxifiedFunction() // parsed style based on screenSize and breakpoints
|
32
28
|
*/
|
33
|
-
const proxifyFunction = (fn, breakpoint, screenSize, breakpoints) => {
|
34
|
-
|
35
|
-
|
36
|
-
const hasBreakpoint = Object.keys(breakpoints).some(bp => stringifiedFunction.includes(bp));
|
37
|
-
if (!hasCustomMediaQuery && !hasBreakpoint) {
|
38
|
-
return fn;
|
39
|
-
}
|
40
|
-
return new Proxy(fn, {
|
41
|
-
apply: (target, thisArg, argumentsList) => parseStyle(target.apply(thisArg, argumentsList), breakpoint, screenSize, breakpoints)
|
42
|
-
});
|
43
|
-
};
|
29
|
+
const proxifyFunction = (fn, breakpoint, screenSize, breakpoints) => new Proxy(fn, {
|
30
|
+
apply: (target, thisArg, argumentsList) => parseStyle(target.apply(thisArg, argumentsList), breakpoint, screenSize, breakpoints)
|
31
|
+
});
|
44
32
|
|
45
33
|
/**
|
46
34
|
* Parses a style object to resolve custom media queries or breakpoints based on the provided screen size and breakpoints.
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_breakpoints","require","proxifyFunction","fn","breakpoint","screenSize","breakpoints","
|
1
|
+
{"version":3,"names":["_breakpoints","require","proxifyFunction","fn","breakpoint","screenSize","breakpoints","Proxy","apply","target","thisArg","argumentsList","parseStyle","exports","style","Object","fromEntries","entries","map","_ref","key","value","isDynamicFunction","isValidStyle","valueWithBreakpoint","getValueForBreakpoint"],"sourceRoot":"../../../src","sources":["utils/styles.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,eAAe,GAAGA,CAC3BC,EAAY,EAAEC,UAA4B,EAC1CC,UAAsB,EACtBC,WAAc,KACH,IAAIC,KAAK,CAACJ,EAAE,EAAE;EACzBK,KAAK,EAAEA,CAACC,MAAM,EAAEC,OAAO,EAAEC,aAAa,KAClCC,UAAU,CAACH,MAAM,CAACD,KAAK,CAACE,OAAO,EAAEC,aAAa,CAAC,EAAEP,UAAU,EAAEC,UAAU,EAAEC,WAAW;AAC5F,CAAC,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAxBAO,OAAA,CAAAX,eAAA,GAAAA,eAAA;AAyBO,MAAMU,UAAU,GAAGA,CACtBE,KAA8B,EAC9BV,UAA4B,EAC5BC,UAAsB,EACtBC,WAAc,KACbS,MAAM,CACNC,WAAW,CAACD,MAAM,CACdE,OAAO,CAACH,KAAK,CAAC,CACdI,GAAG,CAACC,IAAA,IAAkB;EAAA,IAAjB,CAACC,GAAG,EAAEC,KAAK,CAAC,GAAAF,IAAA;EACd,MAAMG,iBAAiB,GAAG,OAAOD,KAAK,KAAK,UAAU;EACrD,MAAME,YAAY,GAAG,OAAOF,KAAK,KAAK,QAAQ,IAAID,GAAG,KAAK,WAAW;EAErE,IAAIE,iBAAiB,IAAIC,YAAY,EAAE;IACnC,OAAO,CAACH,GAAG,EAAEC,KAAK,CAAC;EACvB;EAEA,MAAMG,mBAAmB,GAAGH,KAAkD;EAE9E,OAAO,CAACD,GAAG,EAAE,IAAAK,kCAAqB,EAAID,mBAAmB,EAAEpB,UAAU,EAAEC,UAAU,EAAEC,WAAW,CAAC,CAAC;AACpG,CAAC,CACL,CAAC;AAAAO,OAAA,CAAAD,UAAA,GAAAA,UAAA"}
|
@@ -3,10 +3,6 @@ import { getValueForBreakpoint } from './breakpoints';
|
|
3
3
|
/**
|
4
4
|
* Proxies a function to parse its return value for custom media queries or breakpoints.
|
5
5
|
*
|
6
|
-
* If the function's string representation contains a custom media query or a defined breakpoint,
|
7
|
-
* the returned function will be proxied to parse its return value based on the provided screen size and breakpoints.
|
8
|
-
* If neither is found, the original function is returned.
|
9
|
-
*
|
10
6
|
* @template B - An object type where keys represent breakpoint names and values represent breakpoint values.
|
11
7
|
*
|
12
8
|
* @param {Function} fn - The function to be proxified.
|
@@ -14,7 +10,7 @@ import { getValueForBreakpoint } from './breakpoints';
|
|
14
10
|
* @param {ScreenSize} screenSize - An object representing the screen size to be checked against the media queries.
|
15
11
|
* @param {B} breakpoints - An object representing the defined breakpoints.
|
16
12
|
*
|
17
|
-
* @returns {Function} Returns the proxified function
|
13
|
+
* @returns {Function} Returns the proxified function
|
18
14
|
*
|
19
15
|
* @example
|
20
16
|
*
|
@@ -25,17 +21,9 @@ import { getValueForBreakpoint } from './breakpoints';
|
|
25
21
|
* const proxifiedFunction = proxifyFunction(myFunction, 'sm', screenSize, breakpoints)
|
26
22
|
* proxifiedFunction() // parsed style based on screenSize and breakpoints
|
27
23
|
*/
|
28
|
-
export const proxifyFunction = (fn, breakpoint, screenSize, breakpoints) => {
|
29
|
-
|
30
|
-
|
31
|
-
const hasBreakpoint = Object.keys(breakpoints).some(bp => stringifiedFunction.includes(bp));
|
32
|
-
if (!hasCustomMediaQuery && !hasBreakpoint) {
|
33
|
-
return fn;
|
34
|
-
}
|
35
|
-
return new Proxy(fn, {
|
36
|
-
apply: (target, thisArg, argumentsList) => parseStyle(target.apply(thisArg, argumentsList), breakpoint, screenSize, breakpoints)
|
37
|
-
});
|
38
|
-
};
|
24
|
+
export const proxifyFunction = (fn, breakpoint, screenSize, breakpoints) => new Proxy(fn, {
|
25
|
+
apply: (target, thisArg, argumentsList) => parseStyle(target.apply(thisArg, argumentsList), breakpoint, screenSize, breakpoints)
|
26
|
+
});
|
39
27
|
|
40
28
|
/**
|
41
29
|
* Parses a style object to resolve custom media queries or breakpoints based on the provided screen size and breakpoints.
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["getValueForBreakpoint","proxifyFunction","fn","breakpoint","screenSize","breakpoints","
|
1
|
+
{"version":3,"names":["getValueForBreakpoint","proxifyFunction","fn","breakpoint","screenSize","breakpoints","Proxy","apply","target","thisArg","argumentsList","parseStyle","style","Object","fromEntries","entries","map","_ref","key","value","isDynamicFunction","isValidStyle","valueWithBreakpoint"],"sourceRoot":"../../../src","sources":["utils/styles.ts"],"mappings":"AACA,SAASA,qBAAqB,QAAQ,eAAe;;AAErD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,eAAe,GAAGA,CAC3BC,EAAY,EAAEC,UAA4B,EAC1CC,UAAsB,EACtBC,WAAc,KACH,IAAIC,KAAK,CAACJ,EAAE,EAAE;EACzBK,KAAK,EAAEA,CAACC,MAAM,EAAEC,OAAO,EAAEC,aAAa,KAClCC,UAAU,CAACH,MAAM,CAACD,KAAK,CAACE,OAAO,EAAEC,aAAa,CAAC,EAAEP,UAAU,EAAEC,UAAU,EAAEC,WAAW;AAC5F,CAAC,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMM,UAAU,GAAGA,CACtBC,KAA8B,EAC9BT,UAA4B,EAC5BC,UAAsB,EACtBC,WAAc,KACbQ,MAAM,CACNC,WAAW,CAACD,MAAM,CACdE,OAAO,CAACH,KAAK,CAAC,CACdI,GAAG,CAACC,IAAA,IAAkB;EAAA,IAAjB,CAACC,GAAG,EAAEC,KAAK,CAAC,GAAAF,IAAA;EACd,MAAMG,iBAAiB,GAAG,OAAOD,KAAK,KAAK,UAAU;EACrD,MAAME,YAAY,GAAG,OAAOF,KAAK,KAAK,QAAQ,IAAID,GAAG,KAAK,WAAW;EAErE,IAAIE,iBAAiB,IAAIC,YAAY,EAAE;IACnC,OAAO,CAACH,GAAG,EAAEC,KAAK,CAAC;EACvB;EAEA,MAAMG,mBAAmB,GAAGH,KAAkD;EAE9E,OAAO,CAACD,GAAG,EAAElB,qBAAqB,CAAIsB,mBAAmB,EAAEnB,UAAU,EAAEC,UAAU,EAAEC,WAAW,CAAC,CAAC;AACpG,CAAC,CACL,CAAC"}
|
@@ -2,10 +2,6 @@ import type { CustomNamedStyles, ScreenSize } from '../types';
|
|
2
2
|
/**
|
3
3
|
* Proxies a function to parse its return value for custom media queries or breakpoints.
|
4
4
|
*
|
5
|
-
* If the function's string representation contains a custom media query or a defined breakpoint,
|
6
|
-
* the returned function will be proxied to parse its return value based on the provided screen size and breakpoints.
|
7
|
-
* If neither is found, the original function is returned.
|
8
|
-
*
|
9
5
|
* @template B - An object type where keys represent breakpoint names and values represent breakpoint values.
|
10
6
|
*
|
11
7
|
* @param {Function} fn - The function to be proxified.
|
@@ -13,7 +9,7 @@ import type { CustomNamedStyles, ScreenSize } from '../types';
|
|
13
9
|
* @param {ScreenSize} screenSize - An object representing the screen size to be checked against the media queries.
|
14
10
|
* @param {B} breakpoints - An object representing the defined breakpoints.
|
15
11
|
*
|
16
|
-
* @returns {Function} Returns the proxified function
|
12
|
+
* @returns {Function} Returns the proxified function
|
17
13
|
*
|
18
14
|
* @example
|
19
15
|
*
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../src/utils/styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAG7D
|
1
|
+
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../src/utils/styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAG7D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,eAAe,yCACpB,QAAQ,4CACA,UAAU,qBAEvB,QAGD,CAAA;AAEF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,UAAU,kHAGP,UAAU;;CAiBrB,CAAA"}
|
package/package.json
CHANGED
package/src/utils/styles.ts
CHANGED
@@ -4,10 +4,6 @@ import { getValueForBreakpoint } from './breakpoints'
|
|
4
4
|
/**
|
5
5
|
* Proxies a function to parse its return value for custom media queries or breakpoints.
|
6
6
|
*
|
7
|
-
* If the function's string representation contains a custom media query or a defined breakpoint,
|
8
|
-
* the returned function will be proxied to parse its return value based on the provided screen size and breakpoints.
|
9
|
-
* If neither is found, the original function is returned.
|
10
|
-
*
|
11
7
|
* @template B - An object type where keys represent breakpoint names and values represent breakpoint values.
|
12
8
|
*
|
13
9
|
* @param {Function} fn - The function to be proxified.
|
@@ -15,7 +11,7 @@ import { getValueForBreakpoint } from './breakpoints'
|
|
15
11
|
* @param {ScreenSize} screenSize - An object representing the screen size to be checked against the media queries.
|
16
12
|
* @param {B} breakpoints - An object representing the defined breakpoints.
|
17
13
|
*
|
18
|
-
* @returns {Function} Returns the proxified function
|
14
|
+
* @returns {Function} Returns the proxified function
|
19
15
|
*
|
20
16
|
* @example
|
21
17
|
*
|
@@ -30,22 +26,10 @@ export const proxifyFunction = <B extends Record<string, number>>(
|
|
30
26
|
fn: Function, breakpoint: keyof B & string,
|
31
27
|
screenSize: ScreenSize,
|
32
28
|
breakpoints: B
|
33
|
-
): Function => {
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
.keys(breakpoints)
|
38
|
-
.some(bp => stringifiedFunction.includes(bp))
|
39
|
-
|
40
|
-
if (!hasCustomMediaQuery && !hasBreakpoint) {
|
41
|
-
return fn
|
42
|
-
}
|
43
|
-
|
44
|
-
return new Proxy(fn, {
|
45
|
-
apply: (target, thisArg, argumentsList) =>
|
46
|
-
parseStyle(target.apply(thisArg, argumentsList), breakpoint, screenSize, breakpoints)
|
47
|
-
})
|
48
|
-
}
|
29
|
+
): Function => new Proxy(fn, {
|
30
|
+
apply: (target, thisArg, argumentsList) =>
|
31
|
+
parseStyle(target.apply(thisArg, argumentsList), breakpoint, screenSize, breakpoints)
|
32
|
+
})
|
49
33
|
|
50
34
|
/**
|
51
35
|
* Parses a style object to resolve custom media queries or breakpoints based on the provided screen size and breakpoints.
|