react-native-unistyles 3.0.0-alpha.42 → 3.0.0-alpha.44
Sign up to get free protection for your applications and to get access to all the features.
- package/lib/commonjs/components/Pressable.js +15 -5
- package/lib/commonjs/components/Pressable.js.map +1 -1
- package/lib/commonjs/components/Pressable.web.js +35 -17
- package/lib/commonjs/components/Pressable.web.js.map +1 -1
- package/lib/commonjs/web/create.js +6 -1
- package/lib/commonjs/web/create.js.map +1 -1
- package/lib/commonjs/web/shadowRegistry.js +49 -48
- package/lib/commonjs/web/shadowRegistry.js.map +1 -1
- package/lib/commonjs/web/{variants/getVariants.js → variants.js} +2 -2
- package/lib/commonjs/web/variants.js.map +1 -0
- package/lib/module/components/Pressable.js +15 -5
- package/lib/module/components/Pressable.js.map +1 -1
- package/lib/module/components/Pressable.web.js +35 -17
- package/lib/module/components/Pressable.web.js.map +1 -1
- package/lib/module/web/create.js +7 -2
- package/lib/module/web/create.js.map +1 -1
- package/lib/module/web/shadowRegistry.js +49 -48
- package/lib/module/web/shadowRegistry.js.map +1 -1
- package/lib/module/web/{variants/getVariants.js → variants.js} +2 -2
- package/lib/module/web/variants.js.map +1 -0
- package/lib/typescript/src/components/Pressable.d.ts +2 -1
- package/lib/typescript/src/components/Pressable.d.ts.map +1 -1
- package/lib/typescript/src/components/Pressable.web.d.ts +2 -1
- package/lib/typescript/src/components/Pressable.web.d.ts.map +1 -1
- package/lib/typescript/src/web/create.d.ts.map +1 -1
- package/lib/typescript/src/web/shadowRegistry.d.ts +1 -1
- package/lib/typescript/src/web/{variants/getVariants.d.ts → variants.d.ts} +2 -2
- package/lib/typescript/src/web/variants.d.ts.map +1 -0
- package/package.json +1 -1
- package/plugin/index.js +1 -1
- package/plugin/ref.js +1 -1
- package/plugin/style.js +282 -99
- package/plugin/stylesheet.js +1 -1
- package/src/components/Pressable.tsx +24 -7
- package/src/components/Pressable.web.tsx +54 -28
- package/src/web/create.ts +7 -2
- package/src/web/shadowRegistry.ts +47 -47
- package/src/web/{variants/getVariants.ts → variants.ts} +2 -2
- package/lib/commonjs/web/variants/getVariants.js.map +0 -1
- package/lib/commonjs/web/variants/index.js +0 -28
- package/lib/commonjs/web/variants/index.js.map +0 -1
- package/lib/commonjs/web/variants/useVariants.js +0 -59
- package/lib/commonjs/web/variants/useVariants.js.map +0 -1
- package/lib/module/web/variants/getVariants.js.map +0 -1
- package/lib/module/web/variants/index.js +0 -5
- package/lib/module/web/variants/index.js.map +0 -1
- package/lib/module/web/variants/useVariants.js +0 -54
- package/lib/module/web/variants/useVariants.js.map +0 -1
- package/lib/typescript/src/web/variants/getVariants.d.ts.map +0 -1
- package/lib/typescript/src/web/variants/index.d.ts +0 -3
- package/lib/typescript/src/web/variants/index.d.ts.map +0 -1
- package/lib/typescript/src/web/variants/useVariants.d.ts +0 -3
- package/lib/typescript/src/web/variants/useVariants.d.ts.map +0 -1
- package/src/web/variants/index.ts +0 -2
- package/src/web/variants/useVariants.ts +0 -65
@@ -9,9 +9,11 @@ type WebPressableState = {
|
|
9
9
|
focused: boolean
|
10
10
|
}
|
11
11
|
|
12
|
+
type WebPressableStyle = ((state: WebPressableState) => ViewStyle) | ViewStyle
|
13
|
+
|
12
14
|
type PressableProps = Props & {
|
13
15
|
variants?: Record<string, string | boolean>
|
14
|
-
style?:
|
16
|
+
style?: WebPressableStyle,
|
15
17
|
}
|
16
18
|
|
17
19
|
const initialState: WebPressableState = {
|
@@ -29,8 +31,46 @@ const events = {
|
|
29
31
|
'blur': { focused: false }
|
30
32
|
} satisfies Partial<Record<keyof HTMLElementEventMap, Partial<WebPressableState>>>
|
31
33
|
|
34
|
+
type UpdateStylesProps = {
|
35
|
+
ref: View | null,
|
36
|
+
style: WebPressableStyle,
|
37
|
+
variants?: Record<string, string | boolean>,
|
38
|
+
state: WebPressableState
|
39
|
+
}
|
40
|
+
|
41
|
+
const isFunctionWithBoundArgs = (fn: any): fn is Function & { getBoundArgs: Function } => {
|
42
|
+
return typeof fn === 'function' && 'getBoundArgs' in fn
|
43
|
+
}
|
44
|
+
|
45
|
+
const extractFunctionArgs = (styleResult: any) => {
|
46
|
+
return isFunctionWithBoundArgs(styleResult)
|
47
|
+
? [styleResult.getBoundArgs()]
|
48
|
+
: Array.isArray(styleResult)
|
49
|
+
? styleResult.map(style => isFunctionWithBoundArgs(style) ? style.getBoundArgs() : [])
|
50
|
+
: []
|
51
|
+
}
|
52
|
+
|
53
|
+
const extractStyleResult = (style: any) => {
|
54
|
+
return typeof style === 'function'
|
55
|
+
? [style()]
|
56
|
+
: Array.isArray(style)
|
57
|
+
? style.map(style => typeof style === 'function' ? style() : style)
|
58
|
+
: [style]
|
59
|
+
}
|
60
|
+
|
61
|
+
const updateStyles = ({ ref, style, variants, state }: UpdateStylesProps) => {
|
62
|
+
const styleResult = typeof style === 'function'
|
63
|
+
? style(state)
|
64
|
+
: style
|
65
|
+
const fnArgs = extractFunctionArgs(styleResult)
|
66
|
+
const extractedResult = extractStyleResult(styleResult)
|
67
|
+
|
68
|
+
// @ts-expect-error - this is hidden from TS
|
69
|
+
UnistylesShadowRegistry.add(ref, extractedResult, variants, fnArgs)
|
70
|
+
}
|
71
|
+
|
32
72
|
export const Pressable = forwardRef<View, PressableProps>(({ variants, style, ...props }, passedRef) => {
|
33
|
-
const storedRef = useRef<View | null>()
|
73
|
+
const storedRef = useRef<View | null>(null)
|
34
74
|
const state = useRef<WebPressableState>(initialState)
|
35
75
|
const styleRef = useRef(style)
|
36
76
|
|
@@ -42,19 +82,12 @@ export const Pressable = forwardRef<View, PressableProps>(({ variants, style, ..
|
|
42
82
|
const handler = (newState: Partial<WebPressableState>) => () => {
|
43
83
|
state.current = { ...state.current, ...newState }
|
44
84
|
|
45
|
-
|
46
|
-
|
47
|
-
: styleRef.current
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
: []
|
52
|
-
const extractedResult = typeof styleResult === 'function'
|
53
|
-
? (styleResult as Function)()
|
54
|
-
: styleResult
|
55
|
-
|
56
|
-
// @ts-expect-error - this is hidden from TS
|
57
|
-
UnistylesShadowRegistry.add(storedRef.current, [extractedResult], variants, [fnArgs])
|
85
|
+
updateStyles({
|
86
|
+
ref: storedRef.current,
|
87
|
+
style: styleRef.current as WebPressableStyle,
|
88
|
+
variants,
|
89
|
+
state: state.current
|
90
|
+
})
|
58
91
|
}
|
59
92
|
|
60
93
|
if (!storedRef.current) {
|
@@ -80,23 +113,16 @@ export const Pressable = forwardRef<View, PressableProps>(({ variants, style, ..
|
|
80
113
|
{...props}
|
81
114
|
ref={ref => {
|
82
115
|
storedRef.current = ref
|
83
|
-
|
84
|
-
|
85
|
-
: style
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
: []
|
90
|
-
const extractedResult = typeof styleResult === 'function'
|
91
|
-
? (styleResult as Function)()
|
92
|
-
: styleResult
|
116
|
+
updateStyles({
|
117
|
+
ref,
|
118
|
+
style: style as WebPressableStyle,
|
119
|
+
variants,
|
120
|
+
state: initialState
|
121
|
+
})
|
93
122
|
|
94
123
|
if (typeof passedRef === 'object' && passedRef !== null) {
|
95
124
|
passedRef.current = ref
|
96
125
|
}
|
97
|
-
|
98
|
-
// @ts-expect-error - this is hidden from TS
|
99
|
-
UnistylesShadowRegistry.add(ref, [extractedResult], variants, [fnArgs])
|
100
126
|
}}
|
101
127
|
/>
|
102
128
|
)
|
package/src/web/create.ts
CHANGED
@@ -3,7 +3,7 @@ import type { StyleSheetWithSuperPowers, StyleSheet } from '../types/stylesheet'
|
|
3
3
|
import { assignSecrets, reduceObject, getStyles, error } from './utils'
|
4
4
|
import { deepMergeObjects } from '../utils'
|
5
5
|
import { UnistylesRuntime } from './runtime'
|
6
|
-
import {
|
6
|
+
import { getVariants } from './variants'
|
7
7
|
|
8
8
|
export const create = (stylesheet: StyleSheetWithSuperPowers<StyleSheet>, id?: string) => {
|
9
9
|
if (!id) {
|
@@ -46,7 +46,12 @@ export const create = (stylesheet: StyleSheetWithSuperPowers<StyleSheet>, id?: s
|
|
46
46
|
}) as ReactNativeStyleSheet<StyleSheet>
|
47
47
|
|
48
48
|
// Inject useVariants hook to styles
|
49
|
-
|
49
|
+
Object.defineProperty(styles, 'useVariants', {
|
50
|
+
value: (variants: Record<string, string | boolean>) => {
|
51
|
+
Object.entries(variants).forEach(([key, value]) => selectedVariants.set(key, value))
|
52
|
+
},
|
53
|
+
configurable: false,
|
54
|
+
})
|
50
55
|
|
51
56
|
return styles
|
52
57
|
}
|
@@ -21,17 +21,15 @@ class UnistylesShadowRegistryBuilder {
|
|
21
21
|
private hashMap = new Map<HTMLElement, string>()
|
22
22
|
private classNamesMap = new Map<HTMLElement, Array<string>>()
|
23
23
|
|
24
|
-
add = (ref: any,
|
25
|
-
//
|
26
|
-
if (!
|
24
|
+
add = (ref: any, styles: Array<Style>, _variants: Record<string, any> | undefined, _args: Array<Array<any>>) => {
|
25
|
+
// Styles are not provided
|
26
|
+
if (!styles) {
|
27
27
|
return
|
28
28
|
}
|
29
29
|
|
30
30
|
// Ref is unmounted, remove style tags from the document
|
31
31
|
if (ref === null) {
|
32
|
-
|
33
|
-
|
34
|
-
secrets.forEach(({ __uni__refs }) => {
|
32
|
+
extractSecrets(styles).forEach(({ __uni__refs }) => {
|
35
33
|
__uni__refs.forEach(ref => {
|
36
34
|
if (isInDocument(ref)) {
|
37
35
|
return
|
@@ -55,56 +53,58 @@ class UnistylesShadowRegistryBuilder {
|
|
55
53
|
return
|
56
54
|
}
|
57
55
|
|
58
|
-
const
|
59
|
-
|
60
|
-
// No unistyles
|
61
|
-
if (styles.length === 0) {
|
62
|
-
return
|
63
|
-
}
|
56
|
+
const parsedStyles = styles.flatMap((style, styleIndex) => {
|
57
|
+
const secrets = extractSecrets(style)
|
64
58
|
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
const style = newComputedStylesheet[__uni__key] as (UnistylesValues | ((...args: any) => UnistylesValues))
|
69
|
-
const variants = _variants && Object.keys(_variants).length > 0 ? _variants : __uni__variants
|
70
|
-
const args = _args[styleIndex] ? _args[styleIndex] : __uni__args
|
71
|
-
const result = typeof style === 'function'
|
72
|
-
? style(...args)
|
73
|
-
: style
|
74
|
-
const { variantsResult } = Object.fromEntries(getVariants({ variantsResult: result }, variants))
|
75
|
-
const resultWithVariants = deepMergeObjects(result, variantsResult ?? {})
|
76
|
-
const dependencies = extractUnistyleDependencies(resultWithVariants)
|
77
|
-
|
78
|
-
if (typeof __uni__stylesheet === 'function') {
|
79
|
-
// Add dependencies from dynamic styles to stylesheet
|
80
|
-
UnistylesRegistry.addDependenciesToStylesheet(__uni__stylesheet, dependencies)
|
59
|
+
// Regular style
|
60
|
+
if (secrets.length === 0) {
|
61
|
+
return style as UnistylesValues
|
81
62
|
}
|
82
63
|
|
83
|
-
|
64
|
+
return secrets.map(secret => {
|
65
|
+
const { __uni__key, __uni__stylesheet, __uni__variants, __uni__args = [], __uni__refs } = secret
|
66
|
+
const newComputedStylesheet = UnistylesRegistry.getComputedStylesheet(__uni__stylesheet)
|
67
|
+
const style = newComputedStylesheet[__uni__key] as (UnistylesValues | ((...args: any) => UnistylesValues))
|
68
|
+
const variants = _variants && Object.keys(_variants).length > 0 ? _variants : __uni__variants
|
69
|
+
const args = _args[styleIndex] && _args[styleIndex].length > 0 ? _args[styleIndex] : __uni__args
|
70
|
+
const result = typeof style === 'function'
|
71
|
+
? style(...args)
|
72
|
+
: style
|
73
|
+
const { variantsResult } = Object.fromEntries(getVariants({ variantsResult: result }, variants))
|
74
|
+
const resultWithVariants = deepMergeObjects(result, variantsResult ?? {})
|
75
|
+
const dependencies = extractUnistyleDependencies(resultWithVariants)
|
76
|
+
|
77
|
+
if (typeof __uni__stylesheet === 'function') {
|
78
|
+
// Add dependencies from dynamic styles to stylesheet
|
79
|
+
UnistylesRegistry.addDependenciesToStylesheet(__uni__stylesheet, dependencies)
|
80
|
+
}
|
84
81
|
|
85
|
-
|
86
|
-
const hash = this.hashMap.get(ref)
|
82
|
+
__uni__refs.add(ref)
|
87
83
|
|
88
|
-
|
89
|
-
|
90
|
-
dispose()
|
84
|
+
const dispose = UnistylesListener.addListeners(extractUnistyleDependencies(resultWithVariants), () => {
|
85
|
+
const hash = this.hashMap.get(ref)
|
91
86
|
|
92
|
-
|
93
|
-
|
87
|
+
// Dispose listener if there is no hash
|
88
|
+
if (!hash) {
|
89
|
+
dispose()
|
94
90
|
|
95
|
-
|
96
|
-
|
97
|
-
const result = typeof newValue === 'function'
|
98
|
-
? newValue(...args)
|
99
|
-
: newValue
|
100
|
-
const { variantsResult } = Object.fromEntries(getVariants({ variantsResult: result }, variants))
|
101
|
-
const resultWithVariants = deepMergeObjects(result, variantsResult ?? {})
|
91
|
+
return
|
92
|
+
}
|
102
93
|
|
103
|
-
|
104
|
-
|
94
|
+
const newComputedStyleSheet = UnistylesRegistry.getComputedStylesheet(__uni__stylesheet)
|
95
|
+
const newValue = newComputedStyleSheet[__uni__key] as (UnistylesValues | ((...args: any) => UnistylesValues))
|
96
|
+
const result = typeof newValue === 'function'
|
97
|
+
? newValue(...args)
|
98
|
+
: newValue
|
99
|
+
const { variantsResult } = Object.fromEntries(getVariants({ variantsResult: result }, variants))
|
100
|
+
const resultWithVariants = deepMergeObjects(result, variantsResult ?? {})
|
101
|
+
|
102
|
+
UnistylesRegistry.applyStyles(hash, convertUnistyles(resultWithVariants))
|
103
|
+
})
|
105
104
|
|
106
|
-
|
107
|
-
|
105
|
+
return resultWithVariants as UnistylesValues
|
106
|
+
})
|
107
|
+
})
|
108
108
|
const combinedStyles = deepMergeObjects(...parsedStyles)
|
109
109
|
const oldStyles = this.resultsMap.get(ref)
|
110
110
|
|
@@ -1,5 +1,5 @@
|
|
1
|
-
import type { ReactNativeStyleSheet, StyleSheet } from '
|
2
|
-
import { deepMergeObjects } from '
|
1
|
+
import type { ReactNativeStyleSheet, StyleSheet } from '../types'
|
2
|
+
import { deepMergeObjects } from '../utils'
|
3
3
|
|
4
4
|
type StylesWithVariants = {
|
5
5
|
variants: Record<string, any>,
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["_utils","require","hasVariants","value","getVariants","styles","selectedVariants","Object","entries","filter","_key","variants","keys","some","variant","map","key","compoundVariants","variantStyles","flatMap","selectedVariant","selectedVariantStyles","default","compoundVariantStyles","compoundVariant","conditions","String","mergedVariantStyles","deepMergeObjects","exports"],"sourceRoot":"../../../../src","sources":["web/variants/getVariants.ts"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AAQA,MAAMC,WAAW,GAAsBC,KAAkB,IAAgD,UAAU,IAAIA,KAAK,CAAC,CAAC,CAAC;AAExH,MAAMC,WAAW,GAAGA,CAACC,MAAyC,EAAEC,gBAAqC,KAAK;EAC7G,OAAOC,MAAM,CAACC,OAAO,CAACH,MAAM,CAAC,CACxBI,MAAM,CAACP,WAAW,CAAC,CACnBO,MAAM,CAAC,CAAC,CAACC,IAAI,EAAE;IAAEC;EAAS,CAAC,CAAC,KAAKJ,MAAM,CAACK,IAAI,CAACD,QAAQ,CAAC,CAACE,IAAI,CAACC,OAAO,IAAIA,OAAO,IAAIH,QAAQ,CAAC,CAAC,CAC5FI,GAAG,CAAC,CAAC,CAACC,GAAG,EAAE;IAAEL,QAAQ;IAAEM,gBAAgB,GAAG;EAAG,CAAC,CAAC,KAAK;IACjD,MAAMC,aAAa,GAAGX,MAAM,CAACC,OAAO,CAACG,QAAQ,CAAC,CAACQ,OAAO,CAAC,CAAC,CAACL,OAAO,EAAET,MAAM,CAAC,KAAK;MAC1E,MAAMe,eAAe,GAAGd,gBAAgB,CAACQ,OAAO,CAAC;MACjD,MAAMO,qBAAqB,GAAGhB,MAAM,CAACe,eAAe,CAAC,IAAIf,MAAM,CAACiB,OAAO;MAEvE,IAAI,CAACD,qBAAqB,EAAE;QACxB,OAAO,EAAE;MACb;MAEA,OAAOA,qBAAqB;IAChC,CAAC,CAAC;IAEF,MAAME,qBAAqB,GAAGN,gBAAgB,CAACE,OAAO,CAACK,eAAe,IAAI;MACtE,MAAM;QAAEnB,MAAM;QAAE,GAAGoB;MAAW,CAAC,GAAGD,eAAe;MAEjD,IAAIjB,MAAM,CAACC,OAAO,CAACiB,UAAU,CAAC,CAACZ,IAAI,CAAC,CAAC,CAACC,OAAO,EAAEX,KAAK,CAAC,KAAKuB,MAAM,CAACpB,gBAAgB,CAACQ,OAAO,CAAC,CAAC,KAAKY,MAAM,CAACvB,KAAK,CAAC,CAAC,EAAE;QAC5G,OAAO,EAAE;MACb;MAEA,OAAOE,MAAM;IACjB,CAAC,CAAC;IAEF,MAAMsB,mBAAmB,GAAG,IAAAC,uBAAgB,EAAC,GAAGV,aAAa,EAAE,GAAGK,qBAAqB,CAAC;IAExF,OAAO,CAACP,GAAG,EAAEW,mBAAmB,CAAC;EACrC,CAAC,CAAC;AACV,CAAC;AAAAE,OAAA,CAAAzB,WAAA,GAAAA,WAAA","ignoreList":[]}
|
@@ -1,28 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
4
|
-
value: true
|
5
|
-
});
|
6
|
-
var _useVariants = require("./useVariants");
|
7
|
-
Object.keys(_useVariants).forEach(function (key) {
|
8
|
-
if (key === "default" || key === "__esModule") return;
|
9
|
-
if (key in exports && exports[key] === _useVariants[key]) return;
|
10
|
-
Object.defineProperty(exports, key, {
|
11
|
-
enumerable: true,
|
12
|
-
get: function () {
|
13
|
-
return _useVariants[key];
|
14
|
-
}
|
15
|
-
});
|
16
|
-
});
|
17
|
-
var _getVariants = require("./getVariants");
|
18
|
-
Object.keys(_getVariants).forEach(function (key) {
|
19
|
-
if (key === "default" || key === "__esModule") return;
|
20
|
-
if (key in exports && exports[key] === _getVariants[key]) return;
|
21
|
-
Object.defineProperty(exports, key, {
|
22
|
-
enumerable: true,
|
23
|
-
get: function () {
|
24
|
-
return _getVariants[key];
|
25
|
-
}
|
26
|
-
});
|
27
|
-
});
|
28
|
-
//# sourceMappingURL=index.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["_useVariants","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_getVariants"],"sourceRoot":"../../../../src","sources":["web/variants/index.ts"],"mappings":";;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,YAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,YAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,YAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,YAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,YAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,YAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,YAAA,CAAAL,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
|
@@ -1,59 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
4
|
-
value: true
|
5
|
-
});
|
6
|
-
exports.createUseVariants = void 0;
|
7
|
-
var _react = require("react");
|
8
|
-
var _utils = require("../utils");
|
9
|
-
var _getVariants = require("./getVariants");
|
10
|
-
const createUseVariants = (styles, setSelectedVariants) => {
|
11
|
-
const useVariants = selectedVariants => {
|
12
|
-
const [selectedVariantStylesMap] = (0, _react.useState)(() => new Map());
|
13
|
-
const lastSelectedVariantsRef = (0, _react.useRef)();
|
14
|
-
// Variable that determines if variants have changed, and we need to recalculate styles
|
15
|
-
const variantsChanged = !(0, _utils.equal)(lastSelectedVariantsRef.current, selectedVariants);
|
16
|
-
if (variantsChanged) {
|
17
|
-
lastSelectedVariantsRef.current = selectedVariants;
|
18
|
-
setSelectedVariants(selectedVariants);
|
19
|
-
}
|
20
|
-
const combinedVariantStyles = (0, _react.useMemo)(() => {
|
21
|
-
const result = (0, _getVariants.getVariants)(styles, selectedVariants);
|
22
|
-
result.forEach(([key, value]) => {
|
23
|
-
selectedVariantStylesMap.set(key, value);
|
24
|
-
});
|
25
|
-
return result;
|
26
|
-
}, [lastSelectedVariantsRef.current]);
|
27
|
-
combinedVariantStyles.forEach(([key]) => {
|
28
|
-
const styleEntry = styles[key];
|
29
|
-
if (!styleEntry) {
|
30
|
-
return;
|
31
|
-
}
|
32
|
-
const selectedVariantStyles = selectedVariantStylesMap.get(key);
|
33
|
-
Object.defineProperties(styleEntry, (0, _utils.reduceObject)(selectedVariantStyles ?? {}, value => ({
|
34
|
-
value,
|
35
|
-
enumerable: false,
|
36
|
-
configurable: true
|
37
|
-
})));
|
38
|
-
|
39
|
-
// Add __uni__variants to static styles
|
40
|
-
Object.keys(styleEntry).forEach(key => {
|
41
|
-
if (!key.startsWith('__uni__secrets__')) {
|
42
|
-
return;
|
43
|
-
}
|
44
|
-
const secret = (0, _utils.keyInObject)(styleEntry, key) ? styleEntry[key] : undefined;
|
45
|
-
if (!secret) {
|
46
|
-
return;
|
47
|
-
}
|
48
|
-
Object.defineProperty(secret, '__uni__variants', {
|
49
|
-
value: selectedVariants
|
50
|
-
});
|
51
|
-
});
|
52
|
-
});
|
53
|
-
};
|
54
|
-
Object.defineProperty(styles, 'useVariants', {
|
55
|
-
value: useVariants
|
56
|
-
});
|
57
|
-
};
|
58
|
-
exports.createUseVariants = createUseVariants;
|
59
|
-
//# sourceMappingURL=useVariants.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["_react","require","_utils","_getVariants","createUseVariants","styles","setSelectedVariants","useVariants","selectedVariants","selectedVariantStylesMap","useState","Map","lastSelectedVariantsRef","useRef","variantsChanged","equal","current","combinedVariantStyles","useMemo","result","getVariants","forEach","key","value","set","styleEntry","selectedVariantStyles","get","Object","defineProperties","reduceObject","enumerable","configurable","keys","startsWith","secret","keyInObject","undefined","defineProperty","exports"],"sourceRoot":"../../../../src","sources":["web/variants/useVariants.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,YAAA,GAAAF,OAAA;AAEO,MAAMG,iBAAiB,GAAGA,CAACC,MAAyC,EAAEC,mBAA4D,KAAK;EAC1I,MAAMC,WAAW,GAAIC,gBAAqC,IAAK;IAC3D,MAAM,CAACC,wBAAwB,CAAC,GAAG,IAAAC,eAAQ,EAAC,MAAM,IAAIC,GAAG,CAA8B,CAAC,CAAC;IACzF,MAAMC,uBAAuB,GAAG,IAAAC,aAAM,EAAsB,CAAC;IAC7D;IACA,MAAMC,eAAe,GAAG,CAAC,IAAAC,YAAK,EAACH,uBAAuB,CAACI,OAAO,EAAER,gBAAgB,CAAC;IAEjF,IAAIM,eAAe,EAAE;MACjBF,uBAAuB,CAACI,OAAO,GAAGR,gBAAgB;MAClDF,mBAAmB,CAACE,gBAAgB,CAAC;IACzC;IAEA,MAAMS,qBAAqB,GAAG,IAAAC,cAAO,EAAC,MAAM;MACxC,MAAMC,MAAM,GAAG,IAAAC,wBAAW,EAACf,MAAM,EAAEG,gBAAgB,CAAC;MAEpDW,MAAM,CAACE,OAAO,CAAC,CAAC,CAACC,GAAG,EAAEC,KAAK,CAAC,KAAK;QAC7Bd,wBAAwB,CAACe,GAAG,CAACF,GAAG,EAAEC,KAAK,CAAC;MAC5C,CAAC,CAAC;MAEF,OAAOJ,MAAM;IACjB,CAAC,EAAE,CAACP,uBAAuB,CAACI,OAAO,CAAC,CAAC;IAErCC,qBAAqB,CAACI,OAAO,CAAC,CAAC,CAACC,GAAG,CAAC,KAAK;MACrC,MAAMG,UAAU,GAAGpB,MAAM,CAACiB,GAAG,CAAC;MAE9B,IAAI,CAACG,UAAU,EAAE;QACb;MACJ;MAEA,MAAMC,qBAAqB,GAAGjB,wBAAwB,CAACkB,GAAG,CAACL,GAAG,CAAC;MAE/DM,MAAM,CAACC,gBAAgB,CAACJ,UAAU,EAAE,IAAAK,mBAAY,EAACJ,qBAAqB,IAAI,CAAC,CAAC,EAAEH,KAAK,KAAK;QACpFA,KAAK;QACLQ,UAAU,EAAE,KAAK;QACjBC,YAAY,EAAE;MAClB,CAAC,CAAC,CAAC,CAAC;;MAEJ;MACAJ,MAAM,CAACK,IAAI,CAACR,UAAU,CAAC,CAACJ,OAAO,CAACC,GAAG,IAAI;QACnC,IAAI,CAACA,GAAG,CAACY,UAAU,CAAC,kBAAkB,CAAC,EAAE;UACrC;QACJ;QAEA,MAAMC,MAAM,GAAG,IAAAC,kBAAW,EAACX,UAAU,EAAEH,GAAG,CAAC,GAAGG,UAAU,CAACH,GAAG,CAAC,GAAGe,SAAS;QAEzE,IAAI,CAACF,MAAM,EAAE;UACT;QACJ;QAEAP,MAAM,CAACU,cAAc,CAACH,MAAM,EAAE,iBAAiB,EAAE;UAC7CZ,KAAK,EAAEf;QACX,CAAC,CAAC;MACN,CAAC,CAAC;IACN,CAAC,CAAC;EACN,CAAC;EAEDoB,MAAM,CAACU,cAAc,CAACjC,MAAM,EAAE,aAAa,EAAE;IACzCkB,KAAK,EAAEhB;EACX,CAAC,CAAC;AACN,CAAC;AAAAgC,OAAA,CAAAnC,iBAAA,GAAAA,iBAAA","ignoreList":[]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["deepMergeObjects","hasVariants","value","getVariants","styles","selectedVariants","Object","entries","filter","_key","variants","keys","some","variant","map","key","compoundVariants","variantStyles","flatMap","selectedVariant","selectedVariantStyles","default","compoundVariantStyles","compoundVariant","conditions","String","mergedVariantStyles"],"sourceRoot":"../../../../src","sources":["web/variants/getVariants.ts"],"mappings":";;AACA,SAASA,gBAAgB,QAAQ,aAAa;AAQ9C,MAAMC,WAAW,GAAsBC,KAAkB,IAAgD,UAAU,IAAIA,KAAK,CAAC,CAAC,CAAC;AAE/H,OAAO,MAAMC,WAAW,GAAGA,CAACC,MAAyC,EAAEC,gBAAqC,KAAK;EAC7G,OAAOC,MAAM,CAACC,OAAO,CAACH,MAAM,CAAC,CACxBI,MAAM,CAACP,WAAW,CAAC,CACnBO,MAAM,CAAC,CAAC,CAACC,IAAI,EAAE;IAAEC;EAAS,CAAC,CAAC,KAAKJ,MAAM,CAACK,IAAI,CAACD,QAAQ,CAAC,CAACE,IAAI,CAACC,OAAO,IAAIA,OAAO,IAAIH,QAAQ,CAAC,CAAC,CAC5FI,GAAG,CAAC,CAAC,CAACC,GAAG,EAAE;IAAEL,QAAQ;IAAEM,gBAAgB,GAAG;EAAG,CAAC,CAAC,KAAK;IACjD,MAAMC,aAAa,GAAGX,MAAM,CAACC,OAAO,CAACG,QAAQ,CAAC,CAACQ,OAAO,CAAC,CAAC,CAACL,OAAO,EAAET,MAAM,CAAC,KAAK;MAC1E,MAAMe,eAAe,GAAGd,gBAAgB,CAACQ,OAAO,CAAC;MACjD,MAAMO,qBAAqB,GAAGhB,MAAM,CAACe,eAAe,CAAC,IAAIf,MAAM,CAACiB,OAAO;MAEvE,IAAI,CAACD,qBAAqB,EAAE;QACxB,OAAO,EAAE;MACb;MAEA,OAAOA,qBAAqB;IAChC,CAAC,CAAC;IAEF,MAAME,qBAAqB,GAAGN,gBAAgB,CAACE,OAAO,CAACK,eAAe,IAAI;MACtE,MAAM;QAAEnB,MAAM;QAAE,GAAGoB;MAAW,CAAC,GAAGD,eAAe;MAEjD,IAAIjB,MAAM,CAACC,OAAO,CAACiB,UAAU,CAAC,CAACZ,IAAI,CAAC,CAAC,CAACC,OAAO,EAAEX,KAAK,CAAC,KAAKuB,MAAM,CAACpB,gBAAgB,CAACQ,OAAO,CAAC,CAAC,KAAKY,MAAM,CAACvB,KAAK,CAAC,CAAC,EAAE;QAC5G,OAAO,EAAE;MACb;MAEA,OAAOE,MAAM;IACjB,CAAC,CAAC;IAEF,MAAMsB,mBAAmB,GAAG1B,gBAAgB,CAAC,GAAGiB,aAAa,EAAE,GAAGK,qBAAqB,CAAC;IAExF,OAAO,CAACP,GAAG,EAAEW,mBAAmB,CAAC;EACrC,CAAC,CAAC;AACV,CAAC","ignoreList":[]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":[],"sourceRoot":"../../../../src","sources":["web/variants/index.ts"],"mappings":";;AAAA,cAAc,eAAe;AAC7B,cAAc,eAAe","ignoreList":[]}
|
@@ -1,54 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
|
3
|
-
import { useMemo, useRef, useState } from 'react';
|
4
|
-
import { equal, keyInObject, reduceObject } from '../utils';
|
5
|
-
import { getVariants } from './getVariants';
|
6
|
-
export const createUseVariants = (styles, setSelectedVariants) => {
|
7
|
-
const useVariants = selectedVariants => {
|
8
|
-
const [selectedVariantStylesMap] = useState(() => new Map());
|
9
|
-
const lastSelectedVariantsRef = useRef();
|
10
|
-
// Variable that determines if variants have changed, and we need to recalculate styles
|
11
|
-
const variantsChanged = !equal(lastSelectedVariantsRef.current, selectedVariants);
|
12
|
-
if (variantsChanged) {
|
13
|
-
lastSelectedVariantsRef.current = selectedVariants;
|
14
|
-
setSelectedVariants(selectedVariants);
|
15
|
-
}
|
16
|
-
const combinedVariantStyles = useMemo(() => {
|
17
|
-
const result = getVariants(styles, selectedVariants);
|
18
|
-
result.forEach(([key, value]) => {
|
19
|
-
selectedVariantStylesMap.set(key, value);
|
20
|
-
});
|
21
|
-
return result;
|
22
|
-
}, [lastSelectedVariantsRef.current]);
|
23
|
-
combinedVariantStyles.forEach(([key]) => {
|
24
|
-
const styleEntry = styles[key];
|
25
|
-
if (!styleEntry) {
|
26
|
-
return;
|
27
|
-
}
|
28
|
-
const selectedVariantStyles = selectedVariantStylesMap.get(key);
|
29
|
-
Object.defineProperties(styleEntry, reduceObject(selectedVariantStyles ?? {}, value => ({
|
30
|
-
value,
|
31
|
-
enumerable: false,
|
32
|
-
configurable: true
|
33
|
-
})));
|
34
|
-
|
35
|
-
// Add __uni__variants to static styles
|
36
|
-
Object.keys(styleEntry).forEach(key => {
|
37
|
-
if (!key.startsWith('__uni__secrets__')) {
|
38
|
-
return;
|
39
|
-
}
|
40
|
-
const secret = keyInObject(styleEntry, key) ? styleEntry[key] : undefined;
|
41
|
-
if (!secret) {
|
42
|
-
return;
|
43
|
-
}
|
44
|
-
Object.defineProperty(secret, '__uni__variants', {
|
45
|
-
value: selectedVariants
|
46
|
-
});
|
47
|
-
});
|
48
|
-
});
|
49
|
-
};
|
50
|
-
Object.defineProperty(styles, 'useVariants', {
|
51
|
-
value: useVariants
|
52
|
-
});
|
53
|
-
};
|
54
|
-
//# sourceMappingURL=useVariants.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["useMemo","useRef","useState","equal","keyInObject","reduceObject","getVariants","createUseVariants","styles","setSelectedVariants","useVariants","selectedVariants","selectedVariantStylesMap","Map","lastSelectedVariantsRef","variantsChanged","current","combinedVariantStyles","result","forEach","key","value","set","styleEntry","selectedVariantStyles","get","Object","defineProperties","enumerable","configurable","keys","startsWith","secret","undefined","defineProperty"],"sourceRoot":"../../../../src","sources":["web/variants/useVariants.ts"],"mappings":";;AAAA,SAASA,OAAO,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAEjD,SAASC,KAAK,EAAEC,WAAW,EAAEC,YAAY,QAAQ,UAAU;AAC3D,SAASC,WAAW,QAAQ,eAAe;AAE3C,OAAO,MAAMC,iBAAiB,GAAGA,CAACC,MAAyC,EAAEC,mBAA4D,KAAK;EAC1I,MAAMC,WAAW,GAAIC,gBAAqC,IAAK;IAC3D,MAAM,CAACC,wBAAwB,CAAC,GAAGV,QAAQ,CAAC,MAAM,IAAIW,GAAG,CAA8B,CAAC,CAAC;IACzF,MAAMC,uBAAuB,GAAGb,MAAM,CAAsB,CAAC;IAC7D;IACA,MAAMc,eAAe,GAAG,CAACZ,KAAK,CAACW,uBAAuB,CAACE,OAAO,EAAEL,gBAAgB,CAAC;IAEjF,IAAII,eAAe,EAAE;MACjBD,uBAAuB,CAACE,OAAO,GAAGL,gBAAgB;MAClDF,mBAAmB,CAACE,gBAAgB,CAAC;IACzC;IAEA,MAAMM,qBAAqB,GAAGjB,OAAO,CAAC,MAAM;MACxC,MAAMkB,MAAM,GAAGZ,WAAW,CAACE,MAAM,EAAEG,gBAAgB,CAAC;MAEpDO,MAAM,CAACC,OAAO,CAAC,CAAC,CAACC,GAAG,EAAEC,KAAK,CAAC,KAAK;QAC7BT,wBAAwB,CAACU,GAAG,CAACF,GAAG,EAAEC,KAAK,CAAC;MAC5C,CAAC,CAAC;MAEF,OAAOH,MAAM;IACjB,CAAC,EAAE,CAACJ,uBAAuB,CAACE,OAAO,CAAC,CAAC;IAErCC,qBAAqB,CAACE,OAAO,CAAC,CAAC,CAACC,GAAG,CAAC,KAAK;MACrC,MAAMG,UAAU,GAAGf,MAAM,CAACY,GAAG,CAAC;MAE9B,IAAI,CAACG,UAAU,EAAE;QACb;MACJ;MAEA,MAAMC,qBAAqB,GAAGZ,wBAAwB,CAACa,GAAG,CAACL,GAAG,CAAC;MAE/DM,MAAM,CAACC,gBAAgB,CAACJ,UAAU,EAAElB,YAAY,CAACmB,qBAAqB,IAAI,CAAC,CAAC,EAAEH,KAAK,KAAK;QACpFA,KAAK;QACLO,UAAU,EAAE,KAAK;QACjBC,YAAY,EAAE;MAClB,CAAC,CAAC,CAAC,CAAC;;MAEJ;MACAH,MAAM,CAACI,IAAI,CAACP,UAAU,CAAC,CAACJ,OAAO,CAACC,GAAG,IAAI;QACnC,IAAI,CAACA,GAAG,CAACW,UAAU,CAAC,kBAAkB,CAAC,EAAE;UACrC;QACJ;QAEA,MAAMC,MAAM,GAAG5B,WAAW,CAACmB,UAAU,EAAEH,GAAG,CAAC,GAAGG,UAAU,CAACH,GAAG,CAAC,GAAGa,SAAS;QAEzE,IAAI,CAACD,MAAM,EAAE;UACT;QACJ;QAEAN,MAAM,CAACQ,cAAc,CAACF,MAAM,EAAE,iBAAiB,EAAE;UAC7CX,KAAK,EAAEV;QACX,CAAC,CAAC;MACN,CAAC,CAAC;IACN,CAAC,CAAC;EACN,CAAC;EAEDe,MAAM,CAACQ,cAAc,CAAC1B,MAAM,EAAE,aAAa,EAAE;IACzCa,KAAK,EAAEX;EACX,CAAC,CAAC;AACN,CAAC","ignoreList":[]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"getVariants.d.ts","sourceRoot":"","sources":["../../../../../src/web/variants/getVariants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAWpE,eAAO,MAAM,WAAW,WAAY,qBAAqB,CAAC,UAAU,CAAC,oBAAoB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,+BA8B3G,CAAA"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/web/variants/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"useVariants.d.ts","sourceRoot":"","sources":["../../../../../src/web/variants/useVariants.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAIpE,eAAO,MAAM,iBAAiB,WAAY,qBAAqB,CAAC,UAAU,CAAC,uBAAuB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,SA2DxI,CAAA"}
|
@@ -1,65 +0,0 @@
|
|
1
|
-
import { useMemo, useRef, useState } from 'react'
|
2
|
-
import type { ReactNativeStyleSheet, StyleSheet } from '../../types'
|
3
|
-
import { equal, keyInObject, reduceObject } from '../utils'
|
4
|
-
import { getVariants } from './getVariants'
|
5
|
-
|
6
|
-
export const createUseVariants = (styles: ReactNativeStyleSheet<StyleSheet>, setSelectedVariants: (variants: Record<string, any>) => void) => {
|
7
|
-
const useVariants = (selectedVariants: Record<string, any>) => {
|
8
|
-
const [selectedVariantStylesMap] = useState(() => new Map<string, Record<string, any>>())
|
9
|
-
const lastSelectedVariantsRef = useRef<Record<string, any>>()
|
10
|
-
// Variable that determines if variants have changed, and we need to recalculate styles
|
11
|
-
const variantsChanged = !equal(lastSelectedVariantsRef.current, selectedVariants)
|
12
|
-
|
13
|
-
if (variantsChanged) {
|
14
|
-
lastSelectedVariantsRef.current = selectedVariants
|
15
|
-
setSelectedVariants(selectedVariants)
|
16
|
-
}
|
17
|
-
|
18
|
-
const combinedVariantStyles = useMemo(() => {
|
19
|
-
const result = getVariants(styles, selectedVariants)
|
20
|
-
|
21
|
-
result.forEach(([key, value]) => {
|
22
|
-
selectedVariantStylesMap.set(key, value)
|
23
|
-
})
|
24
|
-
|
25
|
-
return result
|
26
|
-
}, [lastSelectedVariantsRef.current])
|
27
|
-
|
28
|
-
combinedVariantStyles.forEach(([key]) => {
|
29
|
-
const styleEntry = styles[key]
|
30
|
-
|
31
|
-
if (!styleEntry) {
|
32
|
-
return
|
33
|
-
}
|
34
|
-
|
35
|
-
const selectedVariantStyles = selectedVariantStylesMap.get(key)
|
36
|
-
|
37
|
-
Object.defineProperties(styleEntry, reduceObject(selectedVariantStyles ?? {}, value => ({
|
38
|
-
value,
|
39
|
-
enumerable: false,
|
40
|
-
configurable: true
|
41
|
-
})))
|
42
|
-
|
43
|
-
// Add __uni__variants to static styles
|
44
|
-
Object.keys(styleEntry).forEach(key => {
|
45
|
-
if (!key.startsWith('__uni__secrets__')) {
|
46
|
-
return
|
47
|
-
}
|
48
|
-
|
49
|
-
const secret = keyInObject(styleEntry, key) ? styleEntry[key] : undefined
|
50
|
-
|
51
|
-
if (!secret) {
|
52
|
-
return
|
53
|
-
}
|
54
|
-
|
55
|
-
Object.defineProperty(secret, '__uni__variants', {
|
56
|
-
value: selectedVariants
|
57
|
-
})
|
58
|
-
})
|
59
|
-
})
|
60
|
-
}
|
61
|
-
|
62
|
-
Object.defineProperty(styles, 'useVariants', {
|
63
|
-
value: useVariants
|
64
|
-
})
|
65
|
-
}
|