@elastic/eslint-plugin-eui 0.2.0 → 1.0.0
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 +17 -3
- package/lib/cjs/index.js +3 -3
- package/lib/cjs/rules/prefer_css_prop_for_static_styles.d.ts +3 -0
- package/lib/cjs/rules/prefer_css_prop_for_static_styles.d.ts.map +1 -0
- package/lib/cjs/rules/{prefer_css_attribute_for_eui_components.js → prefer_css_prop_for_static_styles.js} +10 -6
- package/lib/cjs/utils/resolve_member_expression_root.d.ts.map +1 -1
- package/lib/esm/index.js +3 -3
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/rules/prefer_css_prop_for_static_styles.d.ts +2 -0
- package/lib/esm/rules/{prefer_css_attribute_for_eui_components.js → prefer_css_prop_for_static_styles.js} +11 -7
- package/lib/esm/rules/prefer_css_prop_for_static_styles.js.map +1 -0
- package/package.json +8 -9
- package/lib/cjs/rules/prefer_css_attribute_for_eui_components.d.ts +0 -3
- package/lib/cjs/rules/prefer_css_attribute_for_eui_components.d.ts.map +0 -1
- package/lib/esm/rules/prefer_css_attribute_for_eui_components.d.ts +0 -2
- package/lib/esm/rules/prefer_css_attribute_for_eui_components.js.map +0 -1
package/README.md
CHANGED
|
@@ -148,13 +148,27 @@ will raise an ESLint report and suggest replacing the `style` attribute with `cs
|
|
|
148
148
|
|
|
149
149
|
## Testing
|
|
150
150
|
|
|
151
|
+
### Running unit tests
|
|
152
|
+
|
|
153
|
+
Run unit tests using the following command:
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
yarn test
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
Unit tests are written using `RuleTester` from `@typescript-eslint/rule-tester`.
|
|
160
|
+
|
|
151
161
|
### Against an existing package
|
|
152
162
|
|
|
153
163
|
To test the local changes to the plugin, you must:
|
|
154
164
|
|
|
155
|
-
1.
|
|
156
|
-
2.
|
|
157
|
-
3.
|
|
165
|
+
1. Install `yalc` globally if you haven't already: `npm install -g yalc`.
|
|
166
|
+
2. Open a terminal and navigate to this folder: `cd packages/eslint-plugin`
|
|
167
|
+
3. Build the package: `yarn build`
|
|
168
|
+
4. Run `yalc publish` in the plugin's directory to publish it locally.
|
|
169
|
+
5. In your project's directory, run `yalc add @elastic/eslint-plugin-eui` to link the locally published package.
|
|
170
|
+
6. Install dependencies: `yarn` (if you're a Kibana contributor, run `yarn kbn bootstrap --no-validate`).
|
|
171
|
+
7. After making further changes to the plugin, repeat the steps from 3.
|
|
158
172
|
|
|
159
173
|
## Publishing
|
|
160
174
|
|
package/lib/cjs/index.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
var _href_or_on_click = require("./rules/href_or_on_click");
|
|
4
4
|
var _no_restricted_eui_imports = require("./rules/no_restricted_eui_imports");
|
|
5
5
|
var _no_css_color = require("./rules/no_css_color");
|
|
6
|
-
var
|
|
6
|
+
var _prefer_css_prop_for_static_styles = require("./rules/prefer_css_prop_for_static_styles");
|
|
7
7
|
/*
|
|
8
8
|
* Licensed to Elasticsearch B.V. under one or more contributor
|
|
9
9
|
* license agreements. See the NOTICE file distributed with
|
|
@@ -28,7 +28,7 @@ const config = {
|
|
|
28
28
|
'href-or-on-click': _href_or_on_click.HrefOnClick,
|
|
29
29
|
'no-restricted-eui-imports': _no_restricted_eui_imports.NoRestrictedEuiImports,
|
|
30
30
|
'no-css-color': _no_css_color.NoCssColor,
|
|
31
|
-
'prefer-css-
|
|
31
|
+
'prefer-css-prop-for-static-styles': _prefer_css_prop_for_static_styles.PreferCSSPropForStaticStyles
|
|
32
32
|
},
|
|
33
33
|
configs: {
|
|
34
34
|
recommended: {
|
|
@@ -37,7 +37,7 @@ const config = {
|
|
|
37
37
|
'@elastic/eui/href-or-on-click': 'warn',
|
|
38
38
|
'@elastic/eui/no-restricted-eui-imports': 'warn',
|
|
39
39
|
'@elastic/eui/no-css-color': 'warn',
|
|
40
|
-
'@elastic/eui/prefer-css-
|
|
40
|
+
'@elastic/eui/prefer-css-prop-for-static-styles': 'warn'
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
43
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prefer_css_prop_for_static_styles.d.ts","sourceRoot":"","sources":["../../../src/rules/prefer_css_prop_for_static_styles.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAY,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEjE,eAAO,MAAM,4BAA4B,+FA8DxC,CAAC"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.PreferCSSPropForStaticStyles = void 0;
|
|
7
7
|
var _utils = require("@typescript-eslint/utils");
|
|
8
8
|
/*
|
|
9
9
|
* Licensed to Elasticsearch B.V. under one or more contributor
|
|
@@ -24,7 +24,7 @@ var _utils = require("@typescript-eslint/utils");
|
|
|
24
24
|
* under the License.
|
|
25
25
|
*/
|
|
26
26
|
|
|
27
|
-
const
|
|
27
|
+
const PreferCSSPropForStaticStyles = exports.PreferCSSPropForStaticStyles = _utils.ESLintUtils.RuleCreator.withoutDocs({
|
|
28
28
|
create(context) {
|
|
29
29
|
const isNamedEuiComponentRegex = /^Eui[A-Z]*/;
|
|
30
30
|
return {
|
|
@@ -34,13 +34,17 @@ const PreferCSSAttributeForEuiComponents = exports.PreferCSSAttributeForEuiCompo
|
|
|
34
34
|
if (styleAttrNode = node.attributes.filter(attr => attr.type === 'JSXAttribute').find(attr => attr.name.name === 'style')) {
|
|
35
35
|
context.report({
|
|
36
36
|
node: styleAttrNode?.parent,
|
|
37
|
-
messageId: '
|
|
37
|
+
messageId: 'preferCSSPropForStaticStyles',
|
|
38
38
|
fix(fixer) {
|
|
39
39
|
const cssAttr = node.attributes.find(attr => attr.type === 'JSXAttribute' && attr.name.name === 'css');
|
|
40
40
|
if (cssAttr) {
|
|
41
41
|
return null;
|
|
42
42
|
}
|
|
43
|
-
|
|
43
|
+
const range = styleAttrNode?.name?.range;
|
|
44
|
+
if (!range) {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
return fixer.replaceTextRange(range, 'css');
|
|
44
48
|
}
|
|
45
49
|
});
|
|
46
50
|
}
|
|
@@ -51,10 +55,10 @@ const PreferCSSAttributeForEuiComponents = exports.PreferCSSAttributeForEuiCompo
|
|
|
51
55
|
meta: {
|
|
52
56
|
type: 'suggestion',
|
|
53
57
|
docs: {
|
|
54
|
-
description: 'Prefer the
|
|
58
|
+
description: 'Prefer the `css` prop for static styles in EUI components'
|
|
55
59
|
},
|
|
56
60
|
messages: {
|
|
57
|
-
|
|
61
|
+
preferCSSPropForStaticStyles: 'Use the `css` prop instead of `style` for static styles in EUI components to ensure better performance and consistency with EUI’s styling approach. Read more: https://emotion.sh/docs/best-practices#use-the-style-prop-for-dynamic-styles'
|
|
58
62
|
},
|
|
59
63
|
fixable: 'code',
|
|
60
64
|
schema: []
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve_member_expression_root.d.ts","sourceRoot":"","sources":["../../../src/utils/resolve_member_expression_root.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAEhE,eAAO,MAAM,2BAA2B,
|
|
1
|
+
{"version":3,"file":"resolve_member_expression_root.d.ts","sourceRoot":"","sources":["../../../src/utils/resolve_member_expression_root.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAEhE,eAAO,MAAM,2BAA2B,GACtC,MAAM,QAAQ,CAAC,gBAAgB,KAC9B,QAAQ,CAAC,UAMX,CAAC"}
|
package/lib/esm/index.js
CHANGED
|
@@ -21,13 +21,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
21
21
|
const href_or_on_click_1 = require("./rules/href_or_on_click");
|
|
22
22
|
const no_restricted_eui_imports_1 = require("./rules/no_restricted_eui_imports");
|
|
23
23
|
const no_css_color_1 = require("./rules/no_css_color");
|
|
24
|
-
const
|
|
24
|
+
const prefer_css_prop_for_static_styles_1 = require("./rules/prefer_css_prop_for_static_styles");
|
|
25
25
|
const config = {
|
|
26
26
|
rules: {
|
|
27
27
|
'href-or-on-click': href_or_on_click_1.HrefOnClick,
|
|
28
28
|
'no-restricted-eui-imports': no_restricted_eui_imports_1.NoRestrictedEuiImports,
|
|
29
29
|
'no-css-color': no_css_color_1.NoCssColor,
|
|
30
|
-
'prefer-css-
|
|
30
|
+
'prefer-css-prop-for-static-styles': prefer_css_prop_for_static_styles_1.PreferCSSPropForStaticStyles,
|
|
31
31
|
},
|
|
32
32
|
configs: {
|
|
33
33
|
recommended: {
|
|
@@ -36,7 +36,7 @@ const config = {
|
|
|
36
36
|
'@elastic/eui/href-or-on-click': 'warn',
|
|
37
37
|
'@elastic/eui/no-restricted-eui-imports': 'warn',
|
|
38
38
|
'@elastic/eui/no-css-color': 'warn',
|
|
39
|
-
'@elastic/eui/prefer-css-
|
|
39
|
+
'@elastic/eui/prefer-css-prop-for-static-styles': 'warn',
|
|
40
40
|
},
|
|
41
41
|
},
|
|
42
42
|
},
|
package/lib/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;GAiBG;;AAEH,+DAAuD;AACvD,iFAA2E;AAC3E,uDAAkD;AAClD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;GAiBG;;AAEH,+DAAuD;AACvD,iFAA2E;AAC3E,uDAAkD;AAClD,iGAAyF;AAEzF,MAAM,MAAM,GAAG;IACb,KAAK,EAAE;QACL,kBAAkB,EAAE,8BAAW;QAC/B,2BAA2B,EAAE,kDAAsB;QACnD,cAAc,EAAE,yBAAU;QAC1B,mCAAmC,EAAE,gEAA4B;KAClE;IACD,OAAO,EAAE;QACP,WAAW,EAAE;YACX,OAAO,EAAE,CAAC,4BAA4B,CAAC;YACvC,KAAK,EAAE;gBACL,+BAA+B,EAAE,MAAM;gBACvC,wCAAwC,EAAE,MAAM;gBAChD,2BAA2B,EAAE,MAAM;gBACnC,gDAAgD,EAAE,MAAM;aACzD;SACF;KACF;CACF,CAAC;AAEF,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC"}
|
|
@@ -18,9 +18,9 @@
|
|
|
18
18
|
* under the License.
|
|
19
19
|
*/
|
|
20
20
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
-
exports.
|
|
21
|
+
exports.PreferCSSPropForStaticStyles = void 0;
|
|
22
22
|
const utils_1 = require("@typescript-eslint/utils");
|
|
23
|
-
exports.
|
|
23
|
+
exports.PreferCSSPropForStaticStyles = utils_1.ESLintUtils.RuleCreator.withoutDocs({
|
|
24
24
|
create(context) {
|
|
25
25
|
const isNamedEuiComponentRegex = /^Eui[A-Z]*/;
|
|
26
26
|
return {
|
|
@@ -33,13 +33,17 @@ exports.PreferCSSAttributeForEuiComponents = utils_1.ESLintUtils.RuleCreator.wit
|
|
|
33
33
|
.find((attr) => attr.name.name === 'style'))) {
|
|
34
34
|
context.report({
|
|
35
35
|
node: styleAttrNode?.parent,
|
|
36
|
-
messageId: '
|
|
36
|
+
messageId: 'preferCSSPropForStaticStyles',
|
|
37
37
|
fix(fixer) {
|
|
38
38
|
const cssAttr = node.attributes.find((attr) => attr.type === 'JSXAttribute' && attr.name.name === 'css');
|
|
39
39
|
if (cssAttr) {
|
|
40
40
|
return null;
|
|
41
41
|
}
|
|
42
|
-
|
|
42
|
+
const range = styleAttrNode?.name?.range;
|
|
43
|
+
if (!range) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
return fixer.replaceTextRange(range, 'css');
|
|
43
47
|
},
|
|
44
48
|
});
|
|
45
49
|
}
|
|
@@ -50,14 +54,14 @@ exports.PreferCSSAttributeForEuiComponents = utils_1.ESLintUtils.RuleCreator.wit
|
|
|
50
54
|
meta: {
|
|
51
55
|
type: 'suggestion',
|
|
52
56
|
docs: {
|
|
53
|
-
description: 'Prefer the
|
|
57
|
+
description: 'Prefer the `css` prop for static styles in EUI components',
|
|
54
58
|
},
|
|
55
59
|
messages: {
|
|
56
|
-
|
|
60
|
+
preferCSSPropForStaticStyles: 'Use the `css` prop instead of `style` for static styles in EUI components to ensure better performance and consistency with EUI’s styling approach. Read more: https://emotion.sh/docs/best-practices#use-the-style-prop-for-dynamic-styles',
|
|
57
61
|
},
|
|
58
62
|
fixable: 'code',
|
|
59
63
|
schema: [],
|
|
60
64
|
},
|
|
61
65
|
defaultOptions: [],
|
|
62
66
|
});
|
|
63
|
-
//# sourceMappingURL=
|
|
67
|
+
//# sourceMappingURL=prefer_css_prop_for_static_styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prefer_css_prop_for_static_styles.js","sourceRoot":"","sources":["../../../src/rules/prefer_css_prop_for_static_styles.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;GAiBG;;;AAEH,oDAAiE;AAEpD,QAAA,4BAA4B,GAAG,mBAAW,CAAC,WAAW,CAAC,WAAW,CAC7E;IACE,MAAM,CAAC,OAAO;QACZ,MAAM,wBAAwB,GAAG,YAAY,CAAC;QAE9C,OAAO;YACL,iBAAiB,CAAC,IAAgC;gBAChD,IACE,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,eAAe;oBAClC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAC7C,CAAC;oBACD,IAAI,aAAgD,CAAC;oBAErD,IACE,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU;yBAC7B,MAAM,CACL,CAAC,IAAI,EAAiC,EAAE,CACtC,IAAI,CAAC,IAAI,KAAK,cAAc,CAC/B;yBACA,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,EAC9C,CAAC;wBACD,OAAO,CAAC,MAAM,CAAC;4BACb,IAAI,EAAE,aAAa,EAAE,MAAM;4BAC3B,SAAS,EAAE,8BAA8B;4BACzC,GAAG,CAAC,KAAK;gCACP,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAClC,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,IAAI,KAAK,cAAc,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,CAC3D,CAAC;gCAEF,IAAI,OAAO,EAAE,CAAC;oCACZ,OAAO,IAAI,CAAC;gCACd,CAAC;gCAED,MAAM,KAAK,GAAG,aAAa,EAAE,IAAI,EAAE,KAAK,CAAC;gCACzC,IAAI,CAAC,KAAK,EAAE,CAAC;oCACX,OAAO,IAAI,CAAC;gCACd,CAAC;gCAED,OAAO,KAAK,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;4BAC9C,CAAC;yBACF,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE;YACJ,WAAW,EACT,2DAA2D;SAC9D;QACD,QAAQ,EAAE;YACR,4BAA4B,EAC1B,6OAA6O;SAChP;QACD,OAAO,EAAE,MAAM;QACf,MAAM,EAAE,EAAE;KACX;IACD,cAAc,EAAE,EAAE;CACnB,CACF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elastic/eslint-plugin-eui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -27,11 +27,11 @@
|
|
|
27
27
|
"@types/dedent": "^0.7.2",
|
|
28
28
|
"@types/jest": "^29.5.14",
|
|
29
29
|
"@types/micromatch": "^4.0.9",
|
|
30
|
-
"@typescript-eslint/eslint-plugin": "^8.
|
|
31
|
-
"@typescript-eslint/parser": "^8.
|
|
32
|
-
"@typescript-eslint/rule-tester": "^8.
|
|
33
|
-
"@typescript-eslint/typescript-estree": "^8.
|
|
34
|
-
"@typescript-eslint/utils": "^8.
|
|
30
|
+
"@typescript-eslint/eslint-plugin": "^8.31.1",
|
|
31
|
+
"@typescript-eslint/parser": "^8.31.1",
|
|
32
|
+
"@typescript-eslint/rule-tester": "^8.31.1",
|
|
33
|
+
"@typescript-eslint/typescript-estree": "^8.31.1",
|
|
34
|
+
"@typescript-eslint/utils": "^8.31.1",
|
|
35
35
|
"cssstyle": "^4.2.1",
|
|
36
36
|
"dedent": "^1.5.3",
|
|
37
37
|
"eslint": "^8.57.0",
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"rimraf": "^6.0.1",
|
|
41
41
|
"ts-jest": "^29.2.5",
|
|
42
42
|
"ts-node": "^10.9.2",
|
|
43
|
-
"typescript": "^5.
|
|
43
|
+
"typescript": "^5.8.3"
|
|
44
44
|
},
|
|
45
45
|
"scripts": {
|
|
46
46
|
"test": "jest src",
|
|
@@ -48,8 +48,7 @@
|
|
|
48
48
|
"build:clean": "rimraf lib/",
|
|
49
49
|
"build:compile:esm": "tsc --project ./tsconfig.esm.json",
|
|
50
50
|
"build:compile": "NODE_ENV=production babel src --out-dir=lib/cjs --extensions .js,.ts,.tsx",
|
|
51
|
-
"build:types": "NODE_ENV=production tsc --project tsconfig.types.json"
|
|
52
|
-
"build:pack": "yarn build && npm pack"
|
|
51
|
+
"build:types": "NODE_ENV=production tsc --project tsconfig.types.json"
|
|
53
52
|
},
|
|
54
53
|
"files": [
|
|
55
54
|
"lib",
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { ESLintUtils } from '@typescript-eslint/utils';
|
|
2
|
-
export declare const PreferCSSAttributeForEuiComponents: ESLintUtils.RuleModule<"preferCSSAttributeForEuiComponents", [], unknown, ESLintUtils.RuleListener>;
|
|
3
|
-
//# sourceMappingURL=prefer_css_attribute_for_eui_components.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prefer_css_attribute_for_eui_components.d.ts","sourceRoot":"","sources":["../../../src/rules/prefer_css_attribute_for_eui_components.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAY,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEjE,eAAO,MAAM,kCAAkC,qGA0D3C,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prefer_css_attribute_for_eui_components.js","sourceRoot":"","sources":["../../../src/rules/prefer_css_attribute_for_eui_components.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;GAiBG;;;AAEH,oDAAiE;AAEpD,QAAA,kCAAkC,GAC7C,mBAAW,CAAC,WAAW,CAAC,WAAW,CAAC;IAClC,MAAM,CAAC,OAAO;QACZ,MAAM,wBAAwB,GAAG,YAAY,CAAC;QAE9C,OAAO;YACL,iBAAiB,CAAC,IAAgC;gBAChD,IACE,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,eAAe;oBAClC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAC7C,CAAC;oBACD,IAAI,aAAgD,CAAC;oBAErD,IACE,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU;yBAC7B,MAAM,CACL,CAAC,IAAI,EAAiC,EAAE,CACtC,IAAI,CAAC,IAAI,KAAK,cAAc,CAC/B;yBACA,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,EAC9C,CAAC;wBACD,OAAO,CAAC,MAAM,CAAC;4BACb,IAAI,EAAE,aAAa,EAAE,MAAM;4BAC3B,SAAS,EAAE,oCAAoC;4BAC/C,GAAG,CAAC,KAAK;gCACP,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAClC,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,IAAI,KAAK,cAAc,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,CAC3D,CAAC;gCAEF,IAAI,OAAO,EAAE,CAAC;oCACZ,OAAO,IAAI,CAAC;gCACd,CAAC;gCAED,OAAO,KAAK,CAAC,gBAAgB,CAC3B,aAAa,EAAE,IAAI,EAAE,KAAM,EAC3B,KAAK,CACN,CAAC;4BACJ,CAAC;yBACF,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE;YACJ,WAAW,EAAE,iDAAiD;SAC/D;QACD,QAAQ,EAAE;YACR,kCAAkC,EAChC,6CAA6C;SAChD;QACD,OAAO,EAAE,MAAM;QACf,MAAM,EAAE,EAAE;KACX;IACD,cAAc,EAAE,EAAE;CACnB,CAAC,CAAC"}
|