react-native-unistyles 3.0.0-nightly-20250131 → 3.0.0-nightly-20250206
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/cxx/core/UnistyleWrapper.h +1 -0
- package/cxx/parser/Parser.cpp +4 -4
- package/lib/commonjs/components/native/Pressable.native.js +1 -1
- package/lib/commonjs/components/native/Pressable.native.js.map +1 -1
- package/lib/module/components/native/Pressable.native.js +1 -1
- package/lib/module/components/native/Pressable.native.js.map +1 -1
- package/package.json +1 -1
- package/plugin/index.js +24 -38
- package/plugin/stylesheet.js +453 -127
- package/src/components/native/Pressable.native.tsx +1 -1
- package/plugin/common.js +0 -142
@@ -183,6 +183,7 @@ inline static jsi::Value valueFromUnistyle(jsi::Runtime& rt, std::shared_ptr<Hyb
|
|
183
183
|
|
184
184
|
hostFn.setNativeState(rt, std::move(wrappedUnistyle));
|
185
185
|
hostFn.setProperty(rt, unistyleID, jsi::Object(rt));
|
186
|
+
hostFn.setProperty(rt, helpers::STYLESHEET_VARIANTS.c_str(), helpers::variantsToValue(rt, variants));
|
186
187
|
|
187
188
|
return std::move(hostFn);
|
188
189
|
}
|
package/cxx/parser/Parser.cpp
CHANGED
@@ -18,7 +18,7 @@ void parser::Parser::buildUnistyles(jsi::Runtime& rt, std::shared_ptr<StyleSheet
|
|
18
18
|
|
19
19
|
if (styleValue.isFunction(rt)) {
|
20
20
|
styleSheet->unistyles[styleKey] = std::make_shared<UnistyleDynamicFunction>(
|
21
|
-
helpers::HashGenerator::generateHash(styleKey),
|
21
|
+
helpers::HashGenerator::generateHash(styleKey + std::to_string(styleSheet->tag)),
|
22
22
|
UnistyleType::DynamicFunction,
|
23
23
|
styleKey,
|
24
24
|
styleValue,
|
@@ -29,7 +29,7 @@ void parser::Parser::buildUnistyles(jsi::Runtime& rt, std::shared_ptr<StyleSheet
|
|
29
29
|
}
|
30
30
|
|
31
31
|
styleSheet->unistyles[styleKey] = std::make_shared<Unistyle>(
|
32
|
-
helpers::HashGenerator::generateHash(styleKey),
|
32
|
+
helpers::HashGenerator::generateHash(styleKey + std::to_string(styleSheet->tag)),
|
33
33
|
UnistyleType::Object,
|
34
34
|
styleKey,
|
35
35
|
styleValue,
|
@@ -361,7 +361,7 @@ void parser::Parser::rebuildUnistyle(jsi::Runtime& rt, Unistyle::Shared unistyle
|
|
361
361
|
unistyleFn->unprocessedValue = std::move(functionResult);
|
362
362
|
unistyleFn->parsedStyle = this->parseFirstLevel(rt, unistyleFn, variants);
|
363
363
|
}
|
364
|
-
|
364
|
+
|
365
365
|
if (unistyle->isDirty) {
|
366
366
|
unistyle->isDirty = false;
|
367
367
|
}
|
@@ -401,7 +401,7 @@ jsi::Object parser::Parser::parseFirstLevel(jsi::Runtime& rt, Unistyle::Shared u
|
|
401
401
|
// parse dependencies only once
|
402
402
|
if (propertyName == helpers::STYLE_DEPENDENCIES && !unistyle->isSealed()) {
|
403
403
|
auto newDeps = this->parseDependencies(rt, propertyValue.asObject(rt));
|
404
|
-
|
404
|
+
|
405
405
|
unistyle->dependencies.insert(unistyle->dependencies.end(), newDeps.begin(), newDeps.end());
|
406
406
|
|
407
407
|
return;
|
@@ -51,7 +51,7 @@ const Pressable = exports.Pressable = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
51
51
|
return (0, _core.passForwardedRef)(props, ref, forwardedRef);
|
52
52
|
},
|
53
53
|
style: state => {
|
54
|
-
const unistyles = typeof style === 'function' ? style(state) : getStyles(style);
|
54
|
+
const unistyles = typeof style === 'function' ? style.call(style, state) : getStyles(style);
|
55
55
|
if (!storedRef.current) {
|
56
56
|
return unistyles;
|
57
57
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_specs","_core","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","getStyles","styleProps","unistyleKey","keys","find","key","startsWith","uni__getStyles","Pressable","exports","forwardRef","variants","style","props","forwardedRef","storedRef","useRef","useLayoutEffect","current","UnistylesShadowRegistry","remove","jsx","ref","unistyles","pressed","add","passForwardedRef","state"],"sourceRoot":"../../../../src","sources":["components/native/Pressable.native.tsx"],"mappings":"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
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_specs","_core","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","getStyles","styleProps","unistyleKey","keys","find","key","startsWith","uni__getStyles","Pressable","exports","forwardRef","variants","style","props","forwardedRef","storedRef","useRef","useLayoutEffect","current","UnistylesShadowRegistry","remove","jsx","ref","unistyles","pressed","add","passForwardedRef","state"],"sourceRoot":"../../../../src","sources":["components/native/Pressable.native.tsx"],"mappings":"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","ignoreList":[]}
|
@@ -45,7 +45,7 @@ export const Pressable = /*#__PURE__*/forwardRef(({
|
|
45
45
|
return passForwardedRef(props, ref, forwardedRef);
|
46
46
|
},
|
47
47
|
style: state => {
|
48
|
-
const unistyles = typeof style === 'function' ? style(state) : getStyles(style);
|
48
|
+
const unistyles = typeof style === 'function' ? style.call(style, state) : getStyles(style);
|
49
49
|
if (!storedRef.current) {
|
50
50
|
return unistyles;
|
51
51
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["React","forwardRef","useLayoutEffect","useRef","Pressable","NativePressableReactNative","UnistylesShadowRegistry","passForwardedRef","jsx","_jsx","getStyles","styleProps","unistyleKey","Object","keys","find","key","startsWith","uni__getStyles","variants","style","props","forwardedRef","storedRef","current","remove","ref","unistyles","pressed","add","state"],"sourceRoot":"../../../../src","sources":["components/native/Pressable.native.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,UAAU,EAAEC,eAAe,EAAEC,MAAM,QAAQ,OAAO;AAClE,SAASC,SAAS,IAAIC,0BAA0B,QAAQ,cAAc;AAEtE,SAASC,uBAAuB,QAAQ,aAAa;AACrD,SAASC,gBAAgB,QAAQ,YAAY;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAM7C,MAAMC,SAAS,GAAGA,CAACC,UAA+B,GAAG,CAAC,CAAC,KAAK;EACxD,MAAMC,WAAW,GAAGC,MAAM,CACrBC,IAAI,CAACH,UAAU,CAAC,CAChBI,IAAI,CAACC,GAAG,IAAIA,GAAG,CAACC,UAAU,CAAC,YAAY,CAAC,CAAC;EAE9C,IAAI,CAACL,WAAW,EAAE;IACd,OAAOD,UAAU;EACrB;EAEA,OAAO;IACH;IACA,GAAGA,UAAU,CAACC,WAAW,CAAC,CAACM,cAAc,CAAC,CAAC;IAC3C,CAACN,WAAW,GAAGD,UAAU,CAACC,WAAW,CAAC,CAACM,cAAc,CAAC;EAC1D,CAAC;AACL,CAAC;AAED,OAAO,MAAMd,SAAS,gBAAGH,UAAU,CAAuB,CAAC;EAAEkB,QAAQ;EAAEC,KAAK;EAAE,GAAGC;AAAM,CAAC,EAAEC,YAAY,KAAK;EACvG,MAAMC,SAAS,GAAGpB,MAAM,CAAc,CAAC;EAEvCD,eAAe,CAAC,MAAM;IAClB,OAAO,MAAM;MACT,IAAIqB,SAAS,CAACC,OAAO,EAAE;QACnB;QACAlB,uBAAuB,CAACmB,MAAM,CAACF,SAAS,CAACC,OAAO,CAAC;MACrD;IACJ,CAAC;EACL,CAAC,EAAE,EAAE,CAAC;EAEN,oBACIf,IAAA,CAACJ,0BAA0B;IAAA,GACnBgB,KAAK;IACTK,GAAG,EAAEA,GAAG,IAAI;MACR,MAAMC,SAAS,GAAG,OAAOP,KAAK,KAAK,UAAU,GACvCA,KAAK,CAAC;QAAEQ,OAAO,EAAE;MAAM,CAAC,CAAC,GACzBR,KAAK;;MAEX;MACAd,uBAAuB,CAACuB,GAAG,CAACH,GAAG,EAAEC,SAAS,CAAC;MAE3C,IAAID,GAAG,EAAE;QACLH,SAAS,CAACC,OAAO,GAAGE,GAAG;MAC3B;MAEA,OAAOnB,gBAAgB,CAACc,KAAK,EAAEK,GAAG,EAAEJ,YAAY,CAAC;IACrD,CAAE;IACFF,KAAK,EAAEU,KAAK,IAAI;MACZ,MAAMH,SAAS,GAAG,OAAOP,KAAK,KAAK,UAAU,GACvCA,KAAK,
|
1
|
+
{"version":3,"names":["React","forwardRef","useLayoutEffect","useRef","Pressable","NativePressableReactNative","UnistylesShadowRegistry","passForwardedRef","jsx","_jsx","getStyles","styleProps","unistyleKey","Object","keys","find","key","startsWith","uni__getStyles","variants","style","props","forwardedRef","storedRef","current","remove","ref","unistyles","pressed","add","state","call"],"sourceRoot":"../../../../src","sources":["components/native/Pressable.native.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,UAAU,EAAEC,eAAe,EAAEC,MAAM,QAAQ,OAAO;AAClE,SAASC,SAAS,IAAIC,0BAA0B,QAAQ,cAAc;AAEtE,SAASC,uBAAuB,QAAQ,aAAa;AACrD,SAASC,gBAAgB,QAAQ,YAAY;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAM7C,MAAMC,SAAS,GAAGA,CAACC,UAA+B,GAAG,CAAC,CAAC,KAAK;EACxD,MAAMC,WAAW,GAAGC,MAAM,CACrBC,IAAI,CAACH,UAAU,CAAC,CAChBI,IAAI,CAACC,GAAG,IAAIA,GAAG,CAACC,UAAU,CAAC,YAAY,CAAC,CAAC;EAE9C,IAAI,CAACL,WAAW,EAAE;IACd,OAAOD,UAAU;EACrB;EAEA,OAAO;IACH;IACA,GAAGA,UAAU,CAACC,WAAW,CAAC,CAACM,cAAc,CAAC,CAAC;IAC3C,CAACN,WAAW,GAAGD,UAAU,CAACC,WAAW,CAAC,CAACM,cAAc,CAAC;EAC1D,CAAC;AACL,CAAC;AAED,OAAO,MAAMd,SAAS,gBAAGH,UAAU,CAAuB,CAAC;EAAEkB,QAAQ;EAAEC,KAAK;EAAE,GAAGC;AAAM,CAAC,EAAEC,YAAY,KAAK;EACvG,MAAMC,SAAS,GAAGpB,MAAM,CAAc,CAAC;EAEvCD,eAAe,CAAC,MAAM;IAClB,OAAO,MAAM;MACT,IAAIqB,SAAS,CAACC,OAAO,EAAE;QACnB;QACAlB,uBAAuB,CAACmB,MAAM,CAACF,SAAS,CAACC,OAAO,CAAC;MACrD;IACJ,CAAC;EACL,CAAC,EAAE,EAAE,CAAC;EAEN,oBACIf,IAAA,CAACJ,0BAA0B;IAAA,GACnBgB,KAAK;IACTK,GAAG,EAAEA,GAAG,IAAI;MACR,MAAMC,SAAS,GAAG,OAAOP,KAAK,KAAK,UAAU,GACvCA,KAAK,CAAC;QAAEQ,OAAO,EAAE;MAAM,CAAC,CAAC,GACzBR,KAAK;;MAEX;MACAd,uBAAuB,CAACuB,GAAG,CAACH,GAAG,EAAEC,SAAS,CAAC;MAE3C,IAAID,GAAG,EAAE;QACLH,SAAS,CAACC,OAAO,GAAGE,GAAG;MAC3B;MAEA,OAAOnB,gBAAgB,CAACc,KAAK,EAAEK,GAAG,EAAEJ,YAAY,CAAC;IACrD,CAAE;IACFF,KAAK,EAAEU,KAAK,IAAI;MACZ,MAAMH,SAAS,GAAG,OAAOP,KAAK,KAAK,UAAU,GACvCA,KAAK,CAACW,IAAI,CAACX,KAAK,EAAEU,KAAK,CAAC,GACxBpB,SAAS,CAACU,KAAuC,CAAC;MAExD,IAAI,CAACG,SAAS,CAACC,OAAO,EAAE;QACpB,OAAOG,SAAS;MACpB;;MAEA;MACArB,uBAAuB,CAACmB,MAAM,CAACF,SAAS,CAACC,OAAO,CAAC;MACjD;MACAlB,uBAAuB,CAACuB,GAAG,CAACN,SAAS,CAACC,OAAO,EAAEG,SAAS,CAAC;MAEzD,OAAOA,SAAS;IACpB;EAAE,CACL,CAAC;AAEV,CAAC,CAAC","ignoreList":[]}
|
package/package.json
CHANGED
package/plugin/index.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
const { addUnistylesImport, isInsideNodeModules } = require('./import')
|
2
2
|
const { hasStringRef } = require('./ref')
|
3
|
-
const { isUnistylesStyleSheet,
|
3
|
+
const { isUnistylesStyleSheet, addStyleSheetTag, isKindOfStyleSheet, getStylesDependenciesFromFunction, addDependencies, getStylesDependenciesFromObject } = require('./stylesheet')
|
4
4
|
const { extractVariants } = require('./variants')
|
5
5
|
const { REACT_NATIVE_COMPONENT_NAMES, REPLACE_WITH_UNISTYLES_PATHS, REPLACE_WITH_UNISTYLES_EXOTIC_PATHS, NATIVE_COMPONENTS_PATHS } = require('./consts')
|
6
6
|
const { handleExoticImport } = require('./exotic')
|
@@ -149,52 +149,38 @@ module.exports = function ({ types: t }) {
|
|
149
149
|
|
150
150
|
const arg = path.node.arguments[0]
|
151
151
|
|
152
|
-
// Object passed to StyleSheet.create
|
152
|
+
// Object passed to StyleSheet.create (may contain variants)
|
153
153
|
if (t.isObjectExpression(arg)) {
|
154
|
-
|
155
|
-
if (t.isObjectProperty(property)) {
|
156
|
-
const propertyValues = getUnistyles(t, property)
|
154
|
+
const detectedDependencies = getStylesDependenciesFromObject(t, path)
|
157
155
|
|
158
|
-
|
159
|
-
|
156
|
+
if (detectedDependencies) {
|
157
|
+
if (t.isObjectExpression(arg)) {
|
158
|
+
arg.properties.forEach(property => {
|
159
|
+
if (detectedDependencies[property.key.name]) {
|
160
|
+
addDependencies(t, state, property.key.name, property, detectedDependencies[property.key.name])
|
161
|
+
}
|
160
162
|
})
|
161
163
|
}
|
162
|
-
}
|
164
|
+
}
|
163
165
|
}
|
164
166
|
|
165
167
|
// Function passed to StyleSheet.create (e.g., theme => ({ container: {} }))
|
166
168
|
if (t.isArrowFunctionExpression(arg) || t.isFunctionExpression(arg)) {
|
167
|
-
const
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
// Ensure the function body returns an object
|
181
|
-
if (t.isObjectExpression(body)) {
|
182
|
-
body.properties.forEach(property => {
|
183
|
-
if (t.isObjectProperty(property)) {
|
184
|
-
const propertyValues = getUnistyles(t, property)
|
185
|
-
|
186
|
-
// maybe user used inlined theme? ({ container: theme.components.container })
|
187
|
-
if (propertyValues.length === 0 && t.isMemberExpression(property.value)) {
|
188
|
-
if (property.value.object.object.name === themeLocalName) {
|
189
|
-
addThemeDependencyToMemberExpression(t, property)
|
190
|
-
}
|
169
|
+
const detectedDependencies = getStylesDependenciesFromFunction(t, path)
|
170
|
+
|
171
|
+
if (detectedDependencies) {
|
172
|
+
const body = t.isBlockStatement(arg.body)
|
173
|
+
? arg.body.body.find(statement => t.isReturnStatement(statement)).argument
|
174
|
+
: arg.body
|
175
|
+
|
176
|
+
// Ensure the function body returns an object
|
177
|
+
if (t.isObjectExpression(body)) {
|
178
|
+
body.properties.forEach(property => {
|
179
|
+
if (detectedDependencies[property.key.name]) {
|
180
|
+
addDependencies(t, state, property.key.name, property, detectedDependencies[property.key.name])
|
191
181
|
}
|
192
|
-
|
193
|
-
|
194
|
-
analyzeDependencies(t, state, property.key.name, propertyValue, themeLocalName, miniRuntimeLocalName)
|
195
|
-
})
|
196
|
-
}
|
197
|
-
})
|
182
|
+
})
|
183
|
+
}
|
198
184
|
}
|
199
185
|
}
|
200
186
|
}
|
package/plugin/stylesheet.js
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
const { getIdentifierNameFromExpression, getSecondPropertyName } = require('./common')
|
2
|
-
|
3
1
|
const UnistyleDependency = {
|
4
2
|
Theme: 0,
|
5
3
|
ThemeName: 1,
|
@@ -19,7 +17,7 @@ const UnistyleDependency = {
|
|
19
17
|
}
|
20
18
|
|
21
19
|
function stringToUniqueId(str) {
|
22
|
-
let hash = 0
|
20
|
+
let hash = 0
|
23
21
|
|
24
22
|
for (let i = 0; i < str.length; i++) {
|
25
23
|
hash = (hash << 5) - hash + str.charCodeAt(i)
|
@@ -63,177 +61,505 @@ function addStyleSheetTag(t, path, state) {
|
|
63
61
|
callee.container.arguments.push(t.numericLiteral(uniqueId))
|
64
62
|
}
|
65
63
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
const mappedDeps = deps
|
71
|
-
.map(dep => Object.keys(UnistyleDependency).find(key => UnistyleDependency[key] === dep))
|
72
|
-
.join(', ')
|
64
|
+
const getProperty = (t, property) => {
|
65
|
+
if (!property) {
|
66
|
+
return undefined
|
67
|
+
}
|
73
68
|
|
74
|
-
|
69
|
+
if (t.isIdentifier(property)) {
|
70
|
+
return {
|
71
|
+
properties: [property.name]
|
75
72
|
}
|
76
73
|
}
|
77
|
-
const unistyle = unistyleObj.properties
|
78
|
-
const dependencies = []
|
79
74
|
|
80
|
-
|
81
|
-
const
|
75
|
+
if (t.isObjectPattern(property)) {
|
76
|
+
const matchingProperties = property.properties.flatMap(p => getProperty(t, p))
|
82
77
|
|
83
|
-
|
84
|
-
|
78
|
+
return {
|
79
|
+
properties: matchingProperties.flatMap(properties => properties.properties)
|
85
80
|
}
|
81
|
+
}
|
86
82
|
|
87
|
-
|
88
|
-
|
83
|
+
if (t.isObjectProperty(property) && t.isIdentifier(property.value)) {
|
84
|
+
return {
|
85
|
+
properties: [property.key.name]
|
86
|
+
}
|
87
|
+
}
|
89
88
|
|
90
|
-
|
91
|
-
|
92
|
-
.forEach(propertyName => {
|
93
|
-
switch (propertyName) {
|
94
|
-
case 'themeName': {
|
95
|
-
dependencies.push(UnistyleDependency.ThemeName)
|
89
|
+
if (t.isObjectProperty(property) && t.isObjectPattern(property.value)) {
|
90
|
+
const matchingProperties = property.value.properties.flatMap(p => getProperty(t, p))
|
96
91
|
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
92
|
+
return {
|
93
|
+
parent: property.key.name,
|
94
|
+
properties: matchingProperties.flatMap(properties => properties.properties)
|
95
|
+
}
|
96
|
+
}
|
101
97
|
|
102
|
-
|
103
|
-
|
104
|
-
case 'breakpoint': {
|
105
|
-
dependencies.push(UnistyleDependency.Breakpoints)
|
98
|
+
return undefined
|
99
|
+
}
|
106
100
|
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
dependencies.push(UnistyleDependency.ColorScheme)
|
101
|
+
function getStylesDependenciesFromObject(t, path) {
|
102
|
+
const detectedStylesWithVariants = new Set()
|
103
|
+
const stylesheet = path.node.arguments[0]
|
111
104
|
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
105
|
+
stylesheet.properties.forEach(property => {
|
106
|
+
if (!t.isIdentifier(property.key)) {
|
107
|
+
return
|
108
|
+
}
|
116
109
|
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
110
|
+
if (t.isObjectProperty(property)) {
|
111
|
+
if(t.isObjectExpression(property.value)) {
|
112
|
+
property.value.properties.forEach(innerProp => {
|
113
|
+
if (t.isIdentifier(innerProp.key) && innerProp.key.name === 'variants') {
|
114
|
+
detectedStylesWithVariants.add({
|
115
|
+
label: 'variants',
|
116
|
+
key: property.key.name
|
117
|
+
})
|
118
|
+
}
|
119
|
+
})
|
122
120
|
|
123
|
-
|
124
|
-
|
125
|
-
case 'contentSizeCategory': {
|
126
|
-
dependencies.push(UnistyleDependency.ContentSizeCategory)
|
121
|
+
}
|
122
|
+
}
|
127
123
|
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
124
|
+
if (t.isArrowFunctionExpression(property.value)) {
|
125
|
+
if(t.isObjectExpression(property.value.body)) {
|
126
|
+
property.value.body.properties.forEach(innerProp => {
|
127
|
+
if (t.isIdentifier(innerProp.key) && innerProp.key.name === 'variants') {
|
128
|
+
detectedStylesWithVariants.add({
|
129
|
+
label: 'variants',
|
130
|
+
key: property.key.name
|
131
|
+
})
|
132
|
+
}
|
133
|
+
})
|
132
134
|
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
dependencies.push(UnistyleDependency.Insets)
|
135
|
+
}
|
136
|
+
}
|
137
|
+
})
|
137
138
|
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
139
|
+
const variants = Array.from(detectedStylesWithVariants)
|
140
|
+
|
141
|
+
return variants.reduce((acc, { key, label }) => {
|
142
|
+
if (acc[key]) {
|
143
|
+
return {
|
144
|
+
...acc,
|
145
|
+
[key]: [
|
146
|
+
...acc[key],
|
147
|
+
label
|
148
|
+
]
|
149
|
+
}
|
150
|
+
}
|
142
151
|
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
152
|
+
return {
|
153
|
+
...acc,
|
154
|
+
[key]: [label]
|
155
|
+
}
|
156
|
+
}, [])
|
157
|
+
}
|
147
158
|
|
148
|
-
|
149
|
-
|
150
|
-
case 'statusBar': {
|
151
|
-
dependencies.push(UnistyleDependency.StatusBar)
|
159
|
+
function getStylesDependenciesFromFunction(t, path) {
|
160
|
+
const funcPath = path.get('arguments.0')
|
152
161
|
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
dependencies.push(UnistyleDependency.NavigationBar)
|
162
|
+
if (!funcPath) {
|
163
|
+
return
|
164
|
+
}
|
157
165
|
|
158
|
-
|
159
|
-
|
160
|
-
|
166
|
+
const params = funcPath.node.params
|
167
|
+
const [themeParam, rtParam] = params
|
168
|
+
|
169
|
+
let themeNames = []
|
170
|
+
|
171
|
+
// destructured theme object
|
172
|
+
if (themeParam.type === 'ObjectPattern') {
|
173
|
+
// If destructured, collect all property names
|
174
|
+
for (const prop of themeParam.properties) {
|
175
|
+
themeNames.push(getProperty(t, prop))
|
176
|
+
}
|
177
|
+
}
|
178
|
+
|
179
|
+
// user used 'theme' without destructuring
|
180
|
+
if (themeParam.type === 'Identifier') {
|
181
|
+
themeNames.push({
|
182
|
+
properties: [themeParam.name]
|
183
|
+
})
|
184
|
+
}
|
185
|
+
|
186
|
+
let rtNames = []
|
187
|
+
|
188
|
+
// destructured rt object
|
189
|
+
if (rtParam && rtParam.type === 'ObjectPattern') {
|
190
|
+
// If destructured, collect all property names
|
191
|
+
for (const prop of rtParam.properties) {
|
192
|
+
rtNames.push(getProperty(t, prop))
|
193
|
+
}
|
194
|
+
}
|
195
|
+
|
196
|
+
// user used 'rt' without destructuring
|
197
|
+
if (rtParam && rtParam.type === 'Identifier') {
|
198
|
+
rtNames.push({
|
199
|
+
properties: [rtParam.name]
|
200
|
+
})
|
201
|
+
}
|
202
|
+
|
203
|
+
// get returned object or return statement from StyleSheet.create function
|
204
|
+
let returnedObjectPath = null
|
205
|
+
|
206
|
+
if (funcPath.get('body').isObjectExpression()) {
|
207
|
+
returnedObjectPath = funcPath.get('body')
|
208
|
+
} else {
|
209
|
+
funcPath.traverse({
|
210
|
+
ReturnStatement(retPath) {
|
211
|
+
if (!returnedObjectPath && retPath.get('argument').isObjectExpression()) {
|
212
|
+
returnedObjectPath = retPath.get('argument')
|
213
|
+
}
|
214
|
+
}
|
215
|
+
})
|
216
|
+
}
|
217
|
+
|
218
|
+
if (!returnedObjectPath) {
|
219
|
+
// there is no returned object
|
220
|
+
// abort
|
221
|
+
|
222
|
+
return
|
223
|
+
}
|
224
|
+
|
225
|
+
const detectedStylesWithVariants = new Set()
|
226
|
+
|
227
|
+
// detect variants via Scope
|
228
|
+
returnedObjectPath.get('properties').forEach(propPath => {
|
229
|
+
// get style name
|
230
|
+
const stylePath = propPath.get('key')
|
231
|
+
|
232
|
+
if (!stylePath.isIdentifier()) {
|
233
|
+
return
|
234
|
+
}
|
235
|
+
|
236
|
+
const styleKey = stylePath.node.name
|
237
|
+
|
238
|
+
const valuePath = propPath.get('value')
|
239
|
+
|
240
|
+
if (valuePath.isObjectExpression()) {
|
241
|
+
const hasVariants = valuePath.get('properties').some(innerProp => {
|
242
|
+
const innerKey = innerProp.get('key')
|
243
|
+
|
244
|
+
return innerKey.isIdentifier() && innerKey.node.name === 'variants'
|
245
|
+
})
|
246
|
+
|
247
|
+
if (hasVariants) {
|
248
|
+
detectedStylesWithVariants.add({
|
249
|
+
label: 'variants',
|
250
|
+
key: styleKey
|
161
251
|
})
|
252
|
+
}
|
162
253
|
}
|
163
254
|
|
164
|
-
if (
|
165
|
-
|
255
|
+
if (valuePath.isArrowFunctionExpression()) {
|
256
|
+
if(t.isObjectExpression(valuePath.node.body)) {
|
257
|
+
const hasVariants = valuePath.node.body.properties.some(innerProp => {
|
258
|
+
|
259
|
+
return t.isIdentifier(innerProp.key) && innerProp.key.name === 'variants'
|
260
|
+
})
|
261
|
+
|
262
|
+
if (hasVariants) {
|
263
|
+
detectedStylesWithVariants.add({
|
264
|
+
label: 'variants',
|
265
|
+
key: styleKey
|
266
|
+
})
|
267
|
+
}
|
268
|
+
}
|
166
269
|
}
|
270
|
+
})
|
167
271
|
|
168
|
-
|
272
|
+
const detectedStylesWithTheme = new Set()
|
273
|
+
|
274
|
+
// detect theme dependencies via Scope
|
275
|
+
themeNames.forEach(({ properties }) => {
|
276
|
+
properties.forEach(property => {
|
277
|
+
const binding = funcPath.scope.getBinding(property)
|
278
|
+
|
279
|
+
if (!binding) {
|
280
|
+
return
|
281
|
+
}
|
282
|
+
|
283
|
+
binding.referencePaths.forEach(refPath => {
|
284
|
+
// find key of the style that we are referring to
|
285
|
+
const containerProp = refPath
|
286
|
+
.findParent(parent => parent.isObjectProperty() && parent.parentPath === returnedObjectPath)
|
287
|
+
|
288
|
+
if (!containerProp) {
|
289
|
+
return
|
290
|
+
}
|
291
|
+
|
292
|
+
const keyNode = containerProp.get('key')
|
293
|
+
const styleKey = keyNode.isIdentifier()
|
294
|
+
? keyNode.node.name
|
295
|
+
: keyNode.isLiteral()
|
296
|
+
? keyNode.node.value
|
297
|
+
: null
|
298
|
+
|
299
|
+
if (styleKey) {
|
300
|
+
detectedStylesWithTheme.add({
|
301
|
+
label: 'theme',
|
302
|
+
key: styleKey
|
303
|
+
})
|
304
|
+
}
|
305
|
+
})
|
306
|
+
})
|
169
307
|
})
|
170
308
|
|
171
|
-
|
172
|
-
|
173
|
-
|
309
|
+
const detectedStylesWithRt = new Set()
|
310
|
+
const localRtName = t.isIdentifier(rtParam)
|
311
|
+
? rtParam.name
|
312
|
+
: undefined
|
174
313
|
|
175
|
-
|
314
|
+
// detect rt dependencies via Scope
|
315
|
+
rtNames.forEach(({ properties, parent }) => {
|
316
|
+
properties.forEach(property => {
|
317
|
+
const rtBinding = funcPath.scope.getBinding(property)
|
176
318
|
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
t.arrayExpression(uniqueDependencies.map(dep => t.numericLiteral(dep)))
|
181
|
-
)
|
182
|
-
)
|
183
|
-
}
|
184
|
-
}
|
319
|
+
if (!rtBinding) {
|
320
|
+
return
|
321
|
+
}
|
185
322
|
|
186
|
-
|
187
|
-
const propertyValue = t.isArrowFunctionExpression(property.value)
|
188
|
-
? property.value.body
|
189
|
-
: property.value
|
323
|
+
const isValidDependency = Boolean(toUnistylesDependency(property))
|
190
324
|
|
191
|
-
|
192
|
-
return [propertyValue]
|
193
|
-
}
|
325
|
+
let validRtName = property
|
194
326
|
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
.flatMap(value => {
|
200
|
-
if (t.isReturnStatement(value)) {
|
201
|
-
return [value]
|
327
|
+
// user used nested destructing, find out parent key
|
328
|
+
if (!isValidDependency && (!localRtName || (localRtName && localRtName !== property))) {
|
329
|
+
if (!parent) {
|
330
|
+
return
|
202
331
|
}
|
203
332
|
|
204
|
-
if (!
|
205
|
-
return
|
333
|
+
if (!Boolean(toUnistylesDependency(parent))) {
|
334
|
+
return
|
206
335
|
}
|
207
336
|
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
337
|
+
validRtName = parent
|
338
|
+
}
|
339
|
+
|
340
|
+
rtBinding.referencePaths.forEach(refPath => {
|
341
|
+
// to detect rt dependencies we need to get parameter not rt itself
|
342
|
+
// eg. rt.screen.width -> screen
|
343
|
+
// rt.insets.top -> insets
|
344
|
+
// special case: rt.insets.ime -> ime
|
345
|
+
|
346
|
+
let usedLabel = validRtName
|
347
|
+
|
348
|
+
if (refPath.parentPath.isMemberExpression() && refPath.parentPath.get('object') === refPath) {
|
349
|
+
const memberExpr = refPath.parentPath
|
350
|
+
const propPath = memberExpr.get('property')
|
351
|
+
|
352
|
+
if (propPath.isIdentifier()) {
|
353
|
+
if (localRtName) {
|
354
|
+
usedLabel = propPath.node.name
|
213
355
|
}
|
356
|
+
|
357
|
+
if (
|
358
|
+
usedLabel === 'insets' &&
|
359
|
+
memberExpr.parentPath.isMemberExpression() &&
|
360
|
+
memberExpr.parentPath.get('object') === memberExpr
|
361
|
+
) {
|
362
|
+
const secondPropPath = memberExpr.parentPath.get('property')
|
363
|
+
|
364
|
+
if (secondPropPath.isIdentifier() && secondPropPath.node.name === 'ime') {
|
365
|
+
usedLabel = 'ime'
|
366
|
+
}
|
367
|
+
}
|
368
|
+
}
|
369
|
+
}
|
370
|
+
|
371
|
+
// find key of the style that we are referring to
|
372
|
+
const containerProp = refPath
|
373
|
+
.findParent(parent => parent.isObjectProperty() && parent.parentPath === returnedObjectPath)
|
374
|
+
|
375
|
+
if (!containerProp) {
|
376
|
+
return
|
377
|
+
}
|
378
|
+
|
379
|
+
const keyNode = containerProp.get('key')
|
380
|
+
const styleKey = keyNode.isIdentifier()
|
381
|
+
? keyNode.node.name
|
382
|
+
: keyNode.isLiteral()
|
383
|
+
? keyNode.node.value
|
384
|
+
: null
|
385
|
+
|
386
|
+
if (styleKey) {
|
387
|
+
detectedStylesWithRt.add({
|
388
|
+
label: usedLabel,
|
389
|
+
key: styleKey
|
214
390
|
})
|
391
|
+
}
|
215
392
|
})
|
216
|
-
|
393
|
+
})
|
394
|
+
})
|
395
|
+
|
396
|
+
const variants = Array.from(detectedStylesWithVariants)
|
397
|
+
const theme = Array.from(detectedStylesWithTheme)
|
398
|
+
const rt = Array.from(detectedStylesWithRt)
|
399
|
+
|
400
|
+
return theme
|
401
|
+
.concat(rt)
|
402
|
+
.concat(variants)
|
403
|
+
.reduce((acc, { key, label }) => {
|
404
|
+
if (acc[key]) {
|
405
|
+
return {
|
406
|
+
...acc,
|
407
|
+
[key]: [
|
408
|
+
...acc[key],
|
409
|
+
label
|
410
|
+
]
|
411
|
+
}
|
412
|
+
}
|
413
|
+
|
414
|
+
return {
|
415
|
+
...acc,
|
416
|
+
[key]: [label]
|
417
|
+
}
|
418
|
+
}, [])
|
419
|
+
}
|
420
|
+
|
421
|
+
function toUnistylesDependency(dependency) {
|
422
|
+
switch (dependency) {
|
423
|
+
case 'theme': {
|
424
|
+
return UnistyleDependency.Theme
|
425
|
+
}
|
426
|
+
case 'themeName': {
|
427
|
+
return UnistyleDependency.ThemeName
|
428
|
+
}
|
429
|
+
case 'adaptiveThemes': {
|
430
|
+
return UnistyleDependency.AdaptiveThemes
|
431
|
+
}
|
432
|
+
case 'breakpoint': {
|
433
|
+
return UnistyleDependency.Breakpoints
|
434
|
+
}
|
435
|
+
case 'colorScheme': {
|
436
|
+
return UnistyleDependency.ColorScheme
|
437
|
+
}
|
438
|
+
case 'screen': {
|
439
|
+
return UnistyleDependency.Dimensions
|
440
|
+
}
|
441
|
+
case 'isPortrait':
|
442
|
+
case 'isLandscape': {
|
443
|
+
return UnistyleDependency.Orientation
|
444
|
+
}
|
445
|
+
case 'contentSizeCategory': {
|
446
|
+
return UnistyleDependency.ContentSizeCategory
|
447
|
+
}
|
448
|
+
case 'ime': {
|
449
|
+
return UnistyleDependency.Ime
|
450
|
+
}
|
451
|
+
case 'insets': {
|
452
|
+
return UnistyleDependency.Insets
|
453
|
+
}
|
454
|
+
case 'pixelRatio': {
|
455
|
+
return UnistyleDependency.PixelRatio
|
456
|
+
}
|
457
|
+
case 'fontScale': {
|
458
|
+
return UnistyleDependency.FontScale
|
459
|
+
}
|
460
|
+
case 'statusBar': {
|
461
|
+
return UnistyleDependency.StatusBar
|
462
|
+
}
|
463
|
+
case 'navigationBar': {
|
464
|
+
return UnistyleDependency.NavigationBar
|
465
|
+
}
|
466
|
+
case 'variants': {
|
467
|
+
return UnistyleDependency.Variants
|
468
|
+
}
|
469
|
+
|
470
|
+
// breakpoints are too complex and are handled by C++
|
471
|
+
}
|
472
|
+
}
|
473
|
+
|
474
|
+
function getReturnStatementsFromBody(t, node, results = []) {
|
475
|
+
if (t.isReturnStatement(node)) {
|
476
|
+
results.push(node)
|
477
|
+
}
|
478
|
+
|
479
|
+
if (t.isBlockStatement(node)) {
|
480
|
+
node.body.forEach(child => getReturnStatementsFromBody(t, child, results))
|
481
|
+
}
|
482
|
+
|
483
|
+
if (t.isIfStatement(node)) {
|
484
|
+
getReturnStatementsFromBody(t, node.consequent, results)
|
485
|
+
|
486
|
+
if (node.alternate) {
|
487
|
+
getReturnStatementsFromBody(t, node.alternate, results)
|
488
|
+
}
|
217
489
|
}
|
218
490
|
|
219
|
-
return
|
491
|
+
return results
|
220
492
|
}
|
221
493
|
|
222
|
-
function
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
494
|
+
function addDependencies(t, state, styleName, unistyle, detectedDependencies) {
|
495
|
+
const debugMessage = deps => {
|
496
|
+
if (state.opts.debug) {
|
497
|
+
const mappedDeps = deps
|
498
|
+
.map(dep => Object.keys(UnistyleDependency).find(key => UnistyleDependency[key] === dep))
|
499
|
+
.join(', ')
|
500
|
+
|
501
|
+
console.log(`${state.filename.replace(`${state.file.opts.root}/`, '')}: styles.${styleName}: [${mappedDeps}]`)
|
502
|
+
}
|
503
|
+
}
|
504
|
+
|
505
|
+
const styleDependencies = detectedDependencies.map(toUnistylesDependency)
|
506
|
+
|
507
|
+
// add metadata about dependencies
|
508
|
+
if (styleDependencies.length > 0) {
|
509
|
+
const uniqueDependencies = Array.from(new Set(styleDependencies))
|
510
|
+
|
511
|
+
debugMessage(uniqueDependencies)
|
512
|
+
|
513
|
+
let targets = []
|
514
|
+
|
515
|
+
if (t.isArrowFunctionExpression(unistyle.value) || t.isFunctionExpression(unistyle.value)) {
|
516
|
+
if (t.isObjectExpression(unistyle.value.body)) {
|
517
|
+
targets.push(unistyle.value.body)
|
518
|
+
}
|
519
|
+
|
520
|
+
if (t.isBlockStatement(unistyle.value.body)) {
|
521
|
+
targets = getReturnStatementsFromBody(t, unistyle.value.body)
|
522
|
+
.map(node => {
|
523
|
+
if (t.isIdentifier(node.argument)) {
|
524
|
+
node.argument = t.objectExpression([
|
525
|
+
t.spreadElement(node.argument)
|
526
|
+
])
|
527
|
+
}
|
528
|
+
|
529
|
+
return node.argument
|
530
|
+
})
|
531
|
+
}
|
532
|
+
}
|
533
|
+
|
534
|
+
if (t.isObjectExpression(unistyle.value)) {
|
535
|
+
targets.push(unistyle.value)
|
536
|
+
}
|
537
|
+
|
538
|
+
if (t.isMemberExpression(unistyle.value)) {
|
539
|
+
// convert to object
|
540
|
+
unistyle.value = t.objectExpression([t.spreadElement(unistyle.value)])
|
541
|
+
|
542
|
+
targets.push(unistyle.value)
|
543
|
+
}
|
544
|
+
|
545
|
+
if (targets.length > 0) {
|
546
|
+
targets.forEach(target => {
|
547
|
+
target.properties.push(
|
548
|
+
t.objectProperty(
|
549
|
+
t.identifier('uni__dependencies'),
|
550
|
+
t.arrayExpression(uniqueDependencies.map(dep => t.numericLiteral(dep)))
|
551
|
+
)
|
552
|
+
)
|
553
|
+
})
|
554
|
+
}
|
555
|
+
}
|
230
556
|
}
|
231
557
|
|
232
558
|
module.exports = {
|
233
559
|
isUnistylesStyleSheet,
|
234
|
-
|
560
|
+
addDependencies,
|
235
561
|
addStyleSheetTag,
|
236
|
-
|
237
|
-
|
238
|
-
|
562
|
+
getStylesDependenciesFromObject,
|
563
|
+
getStylesDependenciesFromFunction,
|
564
|
+
isKindOfStyleSheet
|
239
565
|
}
|
@@ -55,7 +55,7 @@ export const Pressable = forwardRef<View, PressableProps>(({ variants, style, ..
|
|
55
55
|
}}
|
56
56
|
style={state => {
|
57
57
|
const unistyles = typeof style === 'function'
|
58
|
-
? style(state)
|
58
|
+
? style.call(style, state)
|
59
59
|
: getStyles(style as unknown as Record<string, any>)
|
60
60
|
|
61
61
|
if (!storedRef.current) {
|
package/plugin/common.js
DELETED
@@ -1,142 +0,0 @@
|
|
1
|
-
function getIdentifierNameFromExpression(t, memberExpression) {
|
2
|
-
if (t.isMemberExpression(memberExpression)) {
|
3
|
-
if (memberExpression.computed) {
|
4
|
-
return [
|
5
|
-
getIdentifierNameFromExpression(t, memberExpression.property),
|
6
|
-
getIdentifierNameFromExpression(t, memberExpression.object)
|
7
|
-
].flat()
|
8
|
-
}
|
9
|
-
|
10
|
-
const object = memberExpression.object
|
11
|
-
|
12
|
-
// If the object is an Identifier, return its name
|
13
|
-
if (t.isIdentifier(object)) {
|
14
|
-
return [object.name]
|
15
|
-
}
|
16
|
-
|
17
|
-
// If the object is another MemberExpression, recursively get the identifier
|
18
|
-
if (t.isMemberExpression(object)) {
|
19
|
-
return getIdentifierNameFromExpression(t, object).flat()
|
20
|
-
}
|
21
|
-
}
|
22
|
-
|
23
|
-
if (t.isBinaryExpression(memberExpression)) {
|
24
|
-
return [
|
25
|
-
getIdentifierNameFromExpression(t, memberExpression.left),
|
26
|
-
getIdentifierNameFromExpression(t, memberExpression.right)
|
27
|
-
].flat()
|
28
|
-
}
|
29
|
-
|
30
|
-
if (t.isCallExpression(memberExpression)) {
|
31
|
-
return getIdentifierNameFromExpression(t, memberExpression.callee)
|
32
|
-
}
|
33
|
-
|
34
|
-
if (t.isConditionalExpression(memberExpression)) {
|
35
|
-
return [
|
36
|
-
getIdentifierNameFromExpression(t, memberExpression.test.left),
|
37
|
-
getIdentifierNameFromExpression(t, memberExpression.test.right),
|
38
|
-
getIdentifierNameFromExpression(t, memberExpression.alternate),
|
39
|
-
getIdentifierNameFromExpression(t, memberExpression.consequent),
|
40
|
-
getIdentifierNameFromExpression(t, memberExpression.test)
|
41
|
-
].flat()
|
42
|
-
}
|
43
|
-
|
44
|
-
if (t.isArrayExpression(memberExpression)) {
|
45
|
-
return memberExpression.elements.map(expression => getIdentifierNameFromExpression(t, expression)).flat()
|
46
|
-
}
|
47
|
-
|
48
|
-
if (t.isArrowFunctionExpression(memberExpression)) {
|
49
|
-
return memberExpression.body.properties.map(prop => getIdentifierNameFromExpression(t, prop.value)).flat()
|
50
|
-
}
|
51
|
-
|
52
|
-
if (t.isTemplateLiteral(memberExpression)) {
|
53
|
-
return memberExpression.expressions.map(expression => getIdentifierNameFromExpression(t, expression)).flat()
|
54
|
-
}
|
55
|
-
|
56
|
-
if (t.isObjectExpression(memberExpression)) {
|
57
|
-
return memberExpression.properties
|
58
|
-
.filter(property => t.isObjectProperty(property))
|
59
|
-
.flatMap(property => getIdentifierNameFromExpression(t, property.value))
|
60
|
-
}
|
61
|
-
|
62
|
-
if (t.isUnaryExpression(memberExpression)) {
|
63
|
-
return getIdentifierNameFromExpression(t, memberExpression.argument.object)
|
64
|
-
}
|
65
|
-
|
66
|
-
return []
|
67
|
-
}
|
68
|
-
|
69
|
-
function getSecondPropertyName(t, memberExpression) {
|
70
|
-
if (t.isUnaryExpression(memberExpression)) {
|
71
|
-
return getSecondPropertyName(t, memberExpression.argument.object)
|
72
|
-
}
|
73
|
-
|
74
|
-
if (t.isConditionalExpression(memberExpression)) {
|
75
|
-
return [
|
76
|
-
getSecondPropertyName(t, memberExpression.test.left),
|
77
|
-
getSecondPropertyName(t, memberExpression.test.right),
|
78
|
-
getSecondPropertyName(t, memberExpression.alternate),
|
79
|
-
getSecondPropertyName(t, memberExpression.consequent),
|
80
|
-
getSecondPropertyName(t, memberExpression.test)
|
81
|
-
].flat()
|
82
|
-
}
|
83
|
-
|
84
|
-
if (t.isTemplateLiteral(memberExpression)) {
|
85
|
-
return memberExpression.expressions.map(expression => getSecondPropertyName(t, expression)).flat()
|
86
|
-
}
|
87
|
-
|
88
|
-
if (t.isBinaryExpression(memberExpression)) {
|
89
|
-
return [
|
90
|
-
getSecondPropertyName(t, memberExpression.left),
|
91
|
-
getSecondPropertyName(t, memberExpression.right)
|
92
|
-
].flat()
|
93
|
-
}
|
94
|
-
|
95
|
-
if (t.isObjectExpression(memberExpression)) {
|
96
|
-
return memberExpression.properties
|
97
|
-
.filter(property => t.isObjectProperty(property))
|
98
|
-
.flatMap(property => getSecondPropertyName(t, property.value))
|
99
|
-
}
|
100
|
-
|
101
|
-
if (t.isArrayExpression(memberExpression)) {
|
102
|
-
return memberExpression.elements.map(expression => getSecondPropertyName(t, expression)).flat()
|
103
|
-
}
|
104
|
-
|
105
|
-
if (!t.isMemberExpression(memberExpression)) {
|
106
|
-
return []
|
107
|
-
}
|
108
|
-
|
109
|
-
let current = memberExpression.computed
|
110
|
-
? memberExpression.property
|
111
|
-
: memberExpression
|
112
|
-
let propertyName = null
|
113
|
-
|
114
|
-
while (t.isMemberExpression(current)) {
|
115
|
-
propertyName = current.property
|
116
|
-
current = current.object
|
117
|
-
}
|
118
|
-
|
119
|
-
// special case for IME
|
120
|
-
if (propertyName && t.isIdentifier(propertyName) && propertyName.name === 'insets') {
|
121
|
-
if (t.isIdentifier(memberExpression.property) && memberExpression.property.name === "ime") {
|
122
|
-
return [memberExpression.property.name]
|
123
|
-
}
|
124
|
-
|
125
|
-
return [propertyName.name]
|
126
|
-
}
|
127
|
-
|
128
|
-
if (propertyName && t.isIdentifier(propertyName)) {
|
129
|
-
return [propertyName.name]
|
130
|
-
}
|
131
|
-
|
132
|
-
if (propertyName) {
|
133
|
-
return [propertyName.value]
|
134
|
-
}
|
135
|
-
|
136
|
-
return []
|
137
|
-
}
|
138
|
-
|
139
|
-
module.exports = {
|
140
|
-
getIdentifierNameFromExpression,
|
141
|
-
getSecondPropertyName
|
142
|
-
}
|