MCPcopy Create free account
hub / github.com/chakra-ui/panda / parseCondition

Function parseCondition

packages/core/src/parse-condition.ts:70–102  ·  view source on GitHub ↗
(condition: ConditionQuery)

Source from the content-addressed store, hash-verified

68}
69
70export function parseCondition(condition: ConditionQuery): ConditionDetails | undefined {
71 if (Array.isArray(condition)) {
72 const value = condition.map(parseCondition).filter(Boolean) as ConditionDetails[]
73 return {
74 type: 'mixed',
75 raw: condition,
76 value,
77 } as MixedCondition
78 }
79
80 // Handle object syntax with @slot markers
81 if (typeof condition === 'object' && condition !== null) {
82 return parseObjectCondition(condition as ConditionObjectQuery)
83 }
84
85 if (condition.startsWith('@')) {
86 return parseAtRule(condition)
87 }
88
89 let type: ConditionDetails['type'] | undefined
90
91 if (condition.startsWith('&')) {
92 type = 'self-nesting'
93 } else if (condition.endsWith(' &')) {
94 type = 'parent-nesting'
95 } else if (condition.includes('&')) {
96 type = 'combinator-nesting'
97 }
98
99 if (type) {
100 return { type, value: condition, raw: condition } as SelectorCondition
101 }
102}

Callers 4

extractParentSelectorsFunction · 0.90
constructorMethod · 0.90
ConditionsClass · 0.90
traverseFunction · 0.85

Calls 3

parseObjectConditionFunction · 0.85
parseAtRuleFunction · 0.85
filterMethod · 0.80

Tested by

no test coverage detected