@@ -26,7 +26,7 @@ import type { Box } from './domUtils';
2626export type AriaNode = AriaProps & {
2727 role : AriaRole | 'fragment' | 'iframe' ;
2828 name : string ;
29- ref ?: number ;
29+ ref ?: string ;
3030 children : ( AriaNode | string ) [ ] ;
3131 element : Element ;
3232 box : Box ;
@@ -36,23 +36,23 @@ export type AriaNode = AriaProps & {
3636
3737export type AriaSnapshot = {
3838 root : AriaNode ;
39- elements : Map < number , Element > ;
39+ elements : Map < string , Element > ;
4040} ;
4141
4242type AriaRef = {
4343 role : string ;
4444 name : string ;
45- ref : number ;
45+ ref : string ;
4646} ;
4747
4848let lastRef = 0 ;
4949
50- export function generateAriaTree ( rootElement : Element , options ?: { forAI ?: boolean } ) : AriaSnapshot {
50+ export function generateAriaTree ( rootElement : Element , options ?: { forAI ?: boolean , refPrefix ?: string } ) : AriaSnapshot {
5151 const visited = new Set < Node > ( ) ;
5252
5353 const snapshot : AriaSnapshot = {
5454 root : { role : 'fragment' , name : '' , children : [ ] , element : rootElement , props : { } , box : box ( rootElement ) , receivesPointerEvents : true } ,
55- elements : new Map < number , Element > ( ) ,
55+ elements : new Map < string , Element > ( ) ,
5656 } ;
5757
5858 const visit = ( ariaNode : AriaNode , node : Node ) => {
@@ -149,20 +149,20 @@ export function generateAriaTree(rootElement: Element, options?: { forAI?: boole
149149 return snapshot ;
150150}
151151
152- function ariaRef ( element : Element , role : string , name : string , options ?: { forAI ?: boolean } ) : number | undefined {
152+ function ariaRef ( element : Element , role : string , name : string , options ?: { forAI ?: boolean , refPrefix ?: string } ) : string | undefined {
153153 if ( ! options ?. forAI )
154154 return undefined ;
155155
156156 let ariaRef : AriaRef | undefined ;
157157 ariaRef = ( element as any ) . _ariaRef ;
158158 if ( ! ariaRef || ariaRef . role !== role || ariaRef . name !== name ) {
159- ariaRef = { role, name, ref : ++ lastRef } ;
159+ ariaRef = { role, name, ref : ( options ?. refPrefix ?? '' ) + 'e' + ( ++ lastRef ) } ;
160160 ( element as any ) . _ariaRef = ariaRef ;
161161 }
162162 return ariaRef . ref ;
163163}
164164
165- function toAriaNode ( element : Element , options ?: { forAI ?: boolean } ) : AriaNode | null {
165+ function toAriaNode ( element : Element , options ?: { forAI ?: boolean , refPrefix ?: string } ) : AriaNode | null {
166166 if ( element . nodeName === 'IFRAME' ) {
167167 return {
168168 role : 'iframe' ,
@@ -443,7 +443,7 @@ export function renderAriaTree(ariaSnapshot: AriaSnapshot, options?: { mode?: 'r
443443 const ref = ariaNode . ref ;
444444 const cursor = hasPointerCursor ( ariaNode ) ? ' [cursor=pointer]' : '' ;
445445 if ( ref )
446- key += ` [ref=e ${ ref } ]${ cursor } ` ;
446+ key += ` [ref=${ ref } ]${ cursor } ` ;
447447 }
448448
449449 const escapedKey = indent + '- ' + yamlEscapeKeyIfNeeded ( key ) ;
0 commit comments