@@ -269,6 +269,7 @@ function apply_custom_class(element, className) {
269269}
270270
271271function do_apply ( element , selectors , classes , events , media_query , original_class ) {
272+ // console.log({element,selectors,classes,original_class})
272273 if ( media_query ) {
273274 if ( '(' !== media_query [ 0 ] ) {
274275 media_query = `(${ media_query } )` ;
@@ -288,7 +289,7 @@ function do_apply(element, selectors, classes, events, media_query, original_cla
288289 for ( let j = 0 ; j < selectors . length ; j ++ ) {
289290 const selector = selectors [ j ] ;
290291 if ( typeof selector === 'object' ) {
291- const { tag } = selector ;
292+ const { tag, selectors : _selectors } = selector ;
292293 if ( tag === 'lookout' ) {
293294 let before_to_apply = [ ] ;
294295 let after_to_apply = [ ] ;
@@ -318,13 +319,25 @@ function do_apply(element, selectors, classes, events, media_query, original_cla
318319 }
319320 }
320321 }
321- if ( '>' === tag && selector . selectors ) {
322- const { selectors } = selector ;
322+ // For each children within children of element matching selector
323+ if ( '>' === tag && _selectors ) {
324+ // console.log({tag, _selectors, children: element.children})
323325 for ( let k = 0 ; k < element . children . length ; k ++ ) {
324326 const child = element . children [ k ] ;
325- do_apply ( child , selectors , classes , events , media_query ) ;
327+ if ( ! child . matches ( _selectors ) ) continue ;
328+ // if ('>' === tag) console.log({_selectors, child, classes})
329+ do_apply ( child , null , classes , events , media_query ) ;
326330 }
327331 }
332+ //
333+ // Next sibling of element matching selector
334+ if ( '+' === tag && _selectors ) {
335+ const { selectors } = selector ;
336+ const { nextElementSibling } = element ;
337+ if ( ! nextElementSibling ) continue ;
338+ if ( ! nextElementSibling . matches ( selectors ) ) continue ;
339+ do_apply ( nextElementSibling , null , classes , events , media_query ) ;
340+ }
328341 continue ;
329342 }
330343 const elements = element . querySelectorAll ( selector ) ;
@@ -376,7 +389,7 @@ function do_apply(element, selectors, classes, events, media_query, original_cla
376389}
377390
378391function init ( document , event = undefined ) {
379- const tag_console = `init : ${ event ? `(${ event . type } )` : '' } ` ;
392+ // const tag_console = `init : ${event ? `(${event.type})` : ''}`;
380393 // console.time(tag_console);
381394 // console.log(event?.type);
382395
@@ -401,6 +414,13 @@ function init(document, event = undefined) {
401414
402415 // console.timeEnd(tag_console);
403416
417+ for ( let i = 0 ; i < elements . length ; i ++ ) {
418+ const element = elements [ i ] ;
419+ if ( 0 === element . className . length ) {
420+ element . removeAttribute ( 'class' ) ;
421+ }
422+ }
423+
404424 document . documentElement . removeAttribute ( 'aria-busy' ) ;
405425}
406426
0 commit comments