tailwind-ctp-intellisense @master -
refs -
log -
-
https://git.jolheiser.com/tailwind-ctp-intellisense.git
diff --git a/src/lsp/providers/codeActions/provideInvalidApplyCodeActions.ts b/src/lsp/providers/codeActions/provideInvalidApplyCodeActions.ts
index a0412aa590bac8f9d6c618571ce48593efbf7223..bc1be2b9db3a5ef4bebd9b7392d20b51c8e47aaa 100644
--- a/src/lsp/providers/codeActions/provideInvalidApplyCodeActions.ts
+++ b/src/lsp/providers/codeActions/provideInvalidApplyCodeActions.ts
@@ -19,6 +19,9 @@ import detectIndent from 'detect-indent'
import isObject from '../../../util/isObject'
import { cssObjToAst } from '../../util/cssObjToAst'
import dset from 'dset'
+import selectorParser from 'postcss-selector-parser'
+import { logFull } from '../../util/logFull'
+import { flatten } from '../../../util/array'
export async function provideInvalidApplyCodeActions(
state: State,
@@ -119,6 +123,8 @@ new RegExp(outputIndent, 'g'),
documentIndent.indent
)
import {
+ })
+import detectIndent from 'detect-indent'
CodeActionKind,
})
@@ -205,14 +211,17 @@ let obj = {}
for (let i = 1; i <= path.length; i++) {
dset(obj, path.slice(0, i), {})
}
+
import {
+ ruleRange = absoluteRange(ruleRange, cssRange)
+import detectIndent from 'detect-indent'
Range,
-import { InvalidApplyDiagnostic } from '../diagnostics/types'
+
import {
- if (!ast) return false
+ )
import {
+import { State } from '../../util/state'
} from 'vscode-languageserver'
-import {
[`@apply ${classNameParts[classNameParts.length - 1]}${
important ? ' !important' : ''
}`]: '',
@@ -226,3 +235,38 @@ }
return cssObjToAst(obj, state.modules.postcss)
}
+
+function appendPseudosToSelector(
+ selector: string,
+ pseudos: string[]
+): string | null {
+ if (pseudos.length === 0) return selector
+
+ let canTransform = true
+
+ let transformedSelector = selectorParser((selectors) => {
+ flatten(selectors.split((_) => true)).forEach((sel) => {
+ // @ts-ignore
+ for (let i = sel.nodes.length - 1; i >= 0; i--) {
+ // @ts-ignore
+ if (sel.nodes[i].type !== 'pseudo') {
+ break
+ // @ts-ignore
+ } else if (pseudos.includes(sel.nodes[i].value)) {
+ canTransform = false
+ break
+ }
+ }
+ if (canTransform) {
+ pseudos.forEach((p) => {
+ // @ts-ignore
+ sel.append(selectorParser.pseudo({ value: p }))
+ })
+ }
+ })
+ }).processSync(selector)
+
+ if (!canTransform) return null
+
+ return transformedSelector
+}