@@ -26,7 +26,7 @@ import type { Box } from './domUtils';
26
26
export type AriaNode = AriaProps & {
27
27
role : AriaRole | 'fragment' | 'iframe' ;
28
28
name : string ;
29
- ref ?: number ;
29
+ ref ?: string ;
30
30
children : ( AriaNode | string ) [ ] ;
31
31
element : Element ;
32
32
box : Box ;
@@ -36,23 +36,23 @@ export type AriaNode = AriaProps & {
36
36
37
37
export type AriaSnapshot = {
38
38
root : AriaNode ;
39
- elements : Map < number , Element > ;
39
+ elements : Map < string , Element > ;
40
40
} ;
41
41
42
42
type AriaRef = {
43
43
role : string ;
44
44
name : string ;
45
- ref : number ;
45
+ ref : string ;
46
46
} ;
47
47
48
48
let lastRef = 0 ;
49
49
50
- export function generateAriaTree ( rootElement : Element , options ?: { forAI ?: boolean } ) : AriaSnapshot {
50
+ export function generateAriaTree ( rootElement : Element , options ?: { forAI ?: boolean , refPrefix ?: string } ) : AriaSnapshot {
51
51
const visited = new Set < Node > ( ) ;
52
52
53
53
const snapshot : AriaSnapshot = {
54
54
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 > ( ) ,
56
56
} ;
57
57
58
58
const visit = ( ariaNode : AriaNode , node : Node ) => {
@@ -149,20 +149,20 @@ export function generateAriaTree(rootElement: Element, options?: { forAI?: boole
149
149
return snapshot ;
150
150
}
151
151
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 {
153
153
if ( ! options ?. forAI )
154
154
return undefined ;
155
155
156
156
let ariaRef : AriaRef | undefined ;
157
157
ariaRef = ( element as any ) . _ariaRef ;
158
158
if ( ! ariaRef || ariaRef . role !== role || ariaRef . name !== name ) {
159
- ariaRef = { role, name, ref : ++ lastRef } ;
159
+ ariaRef = { role, name, ref : ( options ?. refPrefix ?? '' ) + 'e' + ( ++ lastRef ) } ;
160
160
( element as any ) . _ariaRef = ariaRef ;
161
161
}
162
162
return ariaRef . ref ;
163
163
}
164
164
165
- function toAriaNode ( element : Element , options ?: { forAI ?: boolean } ) : AriaNode | null {
165
+ function toAriaNode ( element : Element , options ?: { forAI ?: boolean , refPrefix ?: string } ) : AriaNode | null {
166
166
if ( element . nodeName === 'IFRAME' ) {
167
167
return {
168
168
role : 'iframe' ,
@@ -443,7 +443,7 @@ export function renderAriaTree(ariaSnapshot: AriaSnapshot, options?: { mode?: 'r
443
443
const ref = ariaNode . ref ;
444
444
const cursor = hasPointerCursor ( ariaNode ) ? ' [cursor=pointer]' : '' ;
445
445
if ( ref )
446
- key += ` [ref=e ${ ref } ]${ cursor } ` ;
446
+ key += ` [ref=${ ref } ]${ cursor } ` ;
447
447
}
448
448
449
449
const escapedKey = indent + '- ' + yamlEscapeKeyIfNeeded ( key ) ;
0 commit comments