@@ -117,7 +117,7 @@ export const transform = Transform.Companion.multiplatformBuild<RawNode>(
117117 } ,
118118 ( node ) => node . attr . name ,
119119 ( node ) => node . children ,
120- ( node ) => node . parent ,
120+ ( node ) => node . parent || null ,
121121) ;
122122
123123export interface ResolvedSelector {
@@ -129,12 +129,12 @@ export interface ResolvedSelector {
129129 canQf : boolean ;
130130 canCopy : boolean ;
131131 toString : ( ) => string ;
132+ findAst : < T > ( v : T ) => AstNode < T > ;
132133 match : ( node : RawNode ) => RawNode | undefined ;
133- querySelectorAll : ( node : RawNode | undefined ) => RawNode [ ] ;
134- querySelectorAllContext : (
134+ querySelfOrSelectorAll : ( node : RawNode | undefined ) => RawNode [ ] ;
135+ querySelfOrSelectorAllContext : (
135136 node : RawNode | undefined ,
136137 ) => QueryResult < RawNode > [ ] ;
137- findAst : < T > ( v : T ) => AstNode < T > ;
138138}
139139
140140const typeInfo = initDefaultTypeInfo ( true ) . globalType ;
@@ -183,18 +183,23 @@ export const parseSelector = (source: string): ResolvedSelector => {
183183 toString ( ) {
184184 return value . toString ( ) ;
185185 } ,
186+ findAst,
186187 match ( node ) {
187188 return value . match ( node , transform , matchOption ) ?? undefined ;
188189 } ,
189- querySelectorAll ( node ) {
190+ querySelfOrSelectorAll ( node ) {
190191 if ( ! node ) return [ ] ;
191- return transform . querySelectorAllArray ( node , value ) ;
192+ return ( selector . match ( node ) ? [ node ] : [ ] ) . concat (
193+ transform . querySelectorAllArray ( node , value ) ,
194+ ) ;
192195 } ,
193- querySelectorAllContext ( node ) {
196+ querySelfOrSelectorAllContext ( node ) {
194197 if ( ! node ) return [ ] ;
195- return transform . querySelectorAllContextArray ( node , value ) ;
198+ const r = value . matchContext ( node , transform , matchOption ) ;
199+ return ( r . matched ? [ r ] : [ ] ) . concat (
200+ transform . querySelectorAllContextArray ( node , value ) ,
201+ ) ;
196202 } ,
197- findAst,
198203 } ;
199204 for ( const exp of binaryExpressionList ) {
200205 if ( exp . operator . key == '~=' && ! useGlobalStore ( ) . wasmSupported ) {
0 commit comments