Home

tailwind-ctp-intellisense @master - refs - log -
-
https://git.jolheiser.com/tailwind-ctp-intellisense.git
Tailwind intellisense + Catppuccin
tree log patch
make invalidApply quick fix work with multiple selectors
Brad Cornes <bradlc41@gmail.com>
4 years ago
1 changed files, 46 additions(+), 3 deletions(-)
M src/lsp/providers/codeActions/provideInvalidApplyCodeActions.ts -> src/lsp/providers/codeActions/provideInvalidApplyCodeActions.ts
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
+}