@reticular/speakable 1.6.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,10 @@
1
+ "use strict";var SpeakableBrowser=(()=>{var Ge=Object.create;var $=Object.defineProperty;var Ye=Object.getOwnPropertyDescriptor;var Je=Object.getOwnPropertyNames;var Xe=Object.getPrototypeOf,Ze=Object.prototype.hasOwnProperty;var Qe=(e,t)=>()=>(e&&(t=e(e=0)),t);var et=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),tt=(e,t)=>{for(var n in t)$(e,n,{get:t[n],enumerable:!0})},se=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Je(t))!Ze.call(e,i)&&i!==n&&$(e,i,{get:()=>t[i],enumerable:!(r=Ye(t,i))||r.enumerable});return e};var nt=(e,t,n)=>(n=e!=null?Ge(Xe(e)):{},se(t||!e||!e.__esModule?$(n,"default",{value:e,enumerable:!0}):n,e)),rt=e=>se($({},"__esModule",{value:!0}),e);var ye=et((Un,X)=>{"use strict";var E=String,he=function(){return{isColorSupported:!1,reset:E,bold:E,dim:E,italic:E,underline:E,inverse:E,hidden:E,strikethrough:E,black:E,red:E,green:E,yellow:E,blue:E,magenta:E,cyan:E,white:E,gray:E,bgBlack:E,bgRed:E,bgGreen:E,bgYellow:E,bgBlue:E,bgMagenta:E,bgCyan:E,bgWhite:E,blackBright:E,redBright:E,greenBright:E,yellowBright:E,blueBright:E,magentaBright:E,cyanBright:E,whiteBright:E,bgBlackBright:E,bgRedBright:E,bgGreenBright:E,bgYellowBright:E,bgBlueBright:E,bgMagentaBright:E,bgCyanBright:E,bgWhiteBright:E}};X.exports=he();X.exports.createColors=he});var Re={};tt(Re,{awaitCustomElementsReady:()=>O});function Ce(e,t){return new Promise(n=>{let r=!1,i=setTimeout(()=>{r||(r=!0,n(!1))},t);e.then(()=>{r||(r=!0,clearTimeout(i),n(!0))},()=>{r||(r=!0,clearTimeout(i),n(!0))})})}function Vt(e){let t=new Set,n="documentElement"in e?e.documentElement:e;if(!n)return[];let r=s=>{s.localName&&s.localName.includes("-")&&t.add(s.localName)};return r(n),n.querySelectorAll("*").forEach(r),Array.from(t)}function Ut(e){let t="documentElement"in e?e.documentElement:e;if(!t)return[];let n=[],r=i=>{let s=i.updateComplete;s&&typeof s.then=="function"&&n.push(s)};return r(t),t.querySelectorAll("*").forEach(r),n}async function O(e,t=2e3){let n=[];if(!(typeof customElements<"u"&&customElements!==null))return n;let i=Vt(e);await Promise.all(i.map(async a=>{if(customElements.get(a))return;await Ce(customElements.whenDefined(a),t)||n.push({tag:a,message:`Custom element "${a}" did not upgrade within ${t}ms; analysis may reflect a pre-hydration state.`})}));let s=Ut(e);return s.length>0&&await Ce(Promise.all(s),t),n}var H=Qe(()=>{"use strict"});var Dn={};var oe=["button","link","heading","textbox","checkbox","radio","combobox","listbox","option","list","listitem","navigation","main","banner","contentinfo","region","img","article","complementary","form","search","generic","paragraph","blockquote","code","staticText","table","row","cell","columnheader","rowheader","term","definition","figure","caption","group","dialog","meter","progressbar","status","document","application","separator"],V={major:1,minor:0};function U(e,t=new Set){let n=[];if(t.has(e))return n.push({message:"Circular reference detected in aria-labelledby chain",element:e}),{name:"",warnings:n};t.add(e);let r=e.getAttribute("aria-labelledby");if(r)return{name:it(e,r,t,n),warnings:n};let i=e.getAttribute("aria-label");if(i&&i.trim())return{name:i.trim(),warnings:n};if(at(e)){let a=st(e);if(a)return{name:a,warnings:n}}if(e.tagName.toLowerCase()==="img"){let a=e.getAttribute("alt");if(a!==null)return{name:a.trim(),warnings:n}}if(ct(e)){let a=ot(e,t);if(a)return{name:a,warnings:n}}let s=e.getAttribute("title");return s&&s.trim()?{name:s.trim(),warnings:n}:{name:"",warnings:n}}function it(e,t,n,r){let i=e.ownerDocument;if(!i)return"";let s=t.trim().split(/\s+/),a=[];for(let u of s){if(!u)continue;let m=i.getElementById(u);if(!m){r.push({message:`aria-labelledby references non-existent ID: ${u}`,element:e});continue}let b=U(m,new Set(n));r.push(...b.warnings);let g=b.name||L(m);g&&a.push(g)}return a.join(" ").trim()}function st(e){let t=e.ownerDocument;if(!t)return"";let n=e.getAttribute("id");if(n){let i=t.querySelector(`label[for="${n}"]`);if(i)return L(i)}let r=e.closest("label");return r?L(r):""}function ot(e,t){return L(e)}function L(e){if(e.getAttribute("aria-hidden")==="true")return"";let t="";for(let n of Array.from(e.childNodes))if(n.nodeType===3)t+=n.textContent||"";else if(n.nodeType===1){let r=n;if(r.getAttribute("aria-hidden")==="true")continue;t+=L(r)}return t.trim()}function at(e){let t=e.tagName.toLowerCase();return t==="input"||t==="textarea"||t==="select"||t==="button"}function ct(e){let t=e.tagName.toLowerCase(),n=e.getAttribute("role");return!!(["button","a","h1","h2","h3","h4","h5","h6","summary","figcaption","legend","caption","th","td","li","dt","dd"].includes(t)||n&&["button","link","heading","tab","treeitem","option","row","cell","columnheader","rowheader","tooltip","menuitem","menuitemcheckbox","menuitemradio"].includes(n))}function ae(e){let t=[],n=e.getAttribute("aria-describedby");if(n){let i=lt(e,n,t);if(i)return{description:i,warnings:t}}let r=e.getAttribute("title");return r&&r.trim()?{description:r.trim(),warnings:t}:{description:"",warnings:t}}function lt(e,t,n){let r=e.ownerDocument;if(!r)return"";let i=t.trim().split(/\s+/),s=[];for(let a of i){if(!a)continue;let u=r.getElementById(a);if(!u){n.push({message:`aria-describedby references non-existent ID: ${a}`,element:e});continue}let m=L(u);m&&s.push(m)}return s.join(" ").trim()}var ut={button:"button",a:"link",input:"textbox",textarea:"textbox",select:"listbox",h1:"heading",h2:"heading",h3:"heading",h4:"heading",h5:"heading",h6:"heading",nav:"navigation",main:"main",header:"banner",footer:"contentinfo",aside:"complementary",form:"form",section:"region",ul:"list",ol:"list",li:"listitem",img:"img",article:"article",p:"paragraph",blockquote:"blockquote",code:"code",pre:"code",table:"table",tr:"row",td:"cell",th:"columnheader",dl:"list",dt:"term",dd:"definition",figure:"figure",figcaption:"caption",details:"group",summary:"button",dialog:"dialog",meter:"meter",progress:"progressbar",output:"status",fieldset:"group",legend:"caption",iframe:"document",video:"application",audio:"application",hr:"separator",caption:"caption"},dt={button:"button",submit:"button",reset:"button",checkbox:"checkbox",radio:"radio",text:"textbox",email:"textbox",password:"textbox",search:"textbox",tel:"textbox",url:"textbox",number:"textbox"};function j(e){let t=[],n=e.getAttribute("role");if(n){let i=mt(n,e,t);if(i)return{role:i,warnings:t}}return{role:ft(e,t),warnings:t}}function mt(e,t,n){let r=e.trim().toLowerCase();return r==="presentation"||r==="none"?null:oe.includes(r)?r:(n.push({message:`Invalid or unsupported role: "${e}". Falling back to implicit role.`,element:t}),null)}function ft(e,t){let n=e.tagName.toLowerCase();return n==="input"?gt(e):n==="a"?e.hasAttribute("href")?"link":null:n==="header"?ce(e)?"banner":null:n==="footer"?ce(e)?"contentinfo":null:n==="th"?e.getAttribute("scope")==="row"?"rowheader":"columnheader":n==="section"?e.hasAttribute("aria-label")||e.hasAttribute("aria-labelledby")?"region":null:ut[n]||null}function gt(e){let t=(e.getAttribute("type")||"text").toLowerCase();return dt[t]||"textbox"}function ce(e){let t=e.parentElement;for(;t;){let n=t.tagName.toLowerCase();if(n==="article"||n==="section")return!1;t=t.parentElement}return!0}function z(e){if(e.getAttribute("aria-hidden")==="true")return!1;let t=e.getAttribute("role");return t==="presentation"||t==="none"?!1:j(e).role!==null}function de(e){let t=[],n={},r=C(e,"aria-expanded",t);r!==void 0&&(n.expanded=r);let i=le(e,"aria-checked",t);i!==void 0&&(n.checked=i);let s=le(e,"aria-pressed",t);s!==void 0&&(n.pressed=s);let a=C(e,"aria-selected",t);a!==void 0&&(n.selected=a);let u=C(e,"aria-disabled",t);u!==void 0&&(n.disabled=u);let m=C(e,"aria-invalid",t);m!==void 0&&(n.invalid=m);let b=C(e,"aria-required",t);b!==void 0&&(n.required=b);let g=C(e,"aria-readonly",t);g!==void 0&&(n.readonly=g);let v=C(e,"aria-busy",t);v!==void 0&&(n.busy=v);let A=pt(e,t);A!==void 0&&(n.current=A);let y=C(e,"aria-grabbed",t);y!==void 0&&(n.grabbed=y);let f=C(e,"aria-hidden",t);f!==void 0&&(n.hidden=f);let p=bt(e,t);p!==void 0&&(n.level=p);let o=ue(e,"aria-posinset",t);o!==void 0&&(n.posinset=o);let c=ue(e,"aria-setsize",t);return c!==void 0&&(n.setsize=c),ht(e,n,t),{state:n,warnings:t}}function me(e){let t=[],n=e.tagName.toLowerCase();if(n==="input")return yt(e,t);if(n==="textarea")return Et(e,t);if(n==="select")return At(e,t);let r=e.getAttribute("aria-valuenow");if(r!==null){let i=parseFloat(r);if(!isNaN(i)){let s=e.getAttribute("aria-valuemin"),a=e.getAttribute("aria-valuemax"),u=e.getAttribute("aria-valuetext");return{value:{current:i,min:s!==null?parseFloat(s):void 0,max:a!==null?parseFloat(a):void 0,text:u||void 0},warnings:t}}}return{value:void 0,warnings:t}}function C(e,t,n){let r=e.getAttribute(t);if(r===null)return;let i=r.toLowerCase().trim();if(i==="true")return!0;if(i==="false")return!1;n.push({message:`Invalid ${t} value: "${r}". Expected "true" or "false".`,element:e})}function le(e,t,n){let r=e.getAttribute(t);if(r===null)return;let i=r.toLowerCase().trim();if(i==="true")return!0;if(i==="false")return!1;if(i==="mixed")return"mixed";n.push({message:`Invalid ${t} value: "${r}". Expected "true", "false", or "mixed".`,element:e})}function pt(e,t){let n=e.getAttribute("aria-current");if(n===null)return;let r=n.toLowerCase().trim(),i=["page","step","location","date","time","true","false"];if(i.includes(r))return r==="false"?!1:r;t.push({message:`Invalid aria-current value: "${n}". Expected one of: ${i.join(", ")}.`,element:e})}function bt(e,t){let n=e.getAttribute("aria-level");if(n!==null){let s=parseInt(n,10);if(!isNaN(s)&&s>=1&&s<=6)return s;t.push({message:`Invalid aria-level value: "${n}". Expected integer 1-6.`,element:e});return}let i=e.tagName.toLowerCase().match(/^h([1-6])$/);if(i)return parseInt(i[1],10)}function ue(e,t,n){let r=e.getAttribute(t);if(r===null)return;let i=parseInt(r,10);if(isNaN(i)||i<1){n.push({message:`Invalid ${t} value: "${r}". Expected positive integer.`,element:e});return}return i}function ht(e,t,n){if(e.tagName.toLowerCase()==="input"){let i=e,s=i.type.toLowerCase();(s==="checkbox"||s==="radio")&&t.checked===void 0&&(t.checked=i.checked)}if("disabled"in e){let i=e;t.disabled===void 0&&i.disabled&&(t.disabled=!0)}if("required"in e){let i=e;t.required===void 0&&i.required&&(t.required=!0)}if("readOnly"in e){let i=e;t.readonly===void 0&&i.readOnly&&(t.readonly=!0)}}function yt(e,t){let n=e.type.toLowerCase();if(n==="checkbox"||n==="radio")return{value:void 0,warnings:t};if(n==="button"||n==="submit"||n==="reset")return{value:void 0,warnings:t};let r=e.value;return r?{value:{current:r,text:r},warnings:t}:{value:void 0,warnings:t}}function Et(e,t){let n=e.value;return n?{value:{current:n,text:n},warnings:t}:{value:void 0,warnings:t}}function At(e,t){let n=e.value,i=e.options[e.selectedIndex]?.textContent||n;return n?{value:{current:n,text:i},warnings:t}:{value:void 0,warnings:t}}var vt=["a","button","input","select","textarea","area","iframe","object","embed","audio","video"];function fe(e){let t=e.getAttribute("tabindex"),n=t!==null?parseInt(t,10):void 0;return{focusable:xt(e,n),...t!==null&&!isNaN(n)&&{tabindex:n}}}function xt(e,t){let n=e.tagName.toLowerCase();return wt(e)?!1:!!(t!==void 0&&!isNaN(t)||Nt(e,n))}function Nt(e,t){return t==="a"||t==="area"?e.hasAttribute("href"):!!vt.includes(t)}function wt(e){return!!("disabled"in e&&e.disabled||e.getAttribute("aria-disabled")==="true")}function Y(e){if(e.getAttribute("aria-hidden")==="true")return!0;if(typeof getComputedStyle=="function")try{let t=getComputedStyle(e);if(t.display==="none"||t.visibility==="hidden")return!0}catch{}return!1}function G(e,t,n){if(e.nodeType===3){let r=(e.textContent||"").trim();r.length>0&&t.push({role:"staticText",name:r,state:{},focus:{focusable:!1},children:[]});return}if(e.nodeType===1){let r=e;if(Y(r))return;if(!z(r)){let s=Tt(r,n);t.push(...s);return}let i=be(r,n);i&&t.push(i)}}function Tt(e,t){return J(e,t)}function J(e,t){let n=[];if(e.shadowRoot){for(let r of Array.from(e.shadowRoot.childNodes))ge(r,n,t);return n}e.localName&&e.localName.includes("-")&&e.childNodes.length===0&&t.push({message:`Custom element <${e.localName}> has no accessible children and may have a closed shadow root; its content could not be analyzed.`,element:e});for(let r of Array.from(e.childNodes))G(r,n,t);return n}function ge(e,t,n){if(e.nodeType===1){let r=e;if(r.localName==="slot"){let i=r,s=[];if(typeof i.assignedNodes=="function")try{s=Array.from(i.assignedNodes({flatten:!0}))}catch{s=[]}if(s.length>0)for(let a of s)G(a,t,n);else for(let a of Array.from(i.childNodes))ge(a,t,n);return}}G(e,t,n)}function pe(e,t){let n=[];if(Y(e))return{model:{version:V,root:{role:"generic",name:"",state:{},focus:{focusable:!1},children:[]},metadata:{extractedAt:new Date().toISOString(),...t&&{sourceHash:t}}},warnings:n};let i=be(e,n)||kt(e,n);return{model:{version:V,root:i,metadata:{extractedAt:new Date().toISOString(),...t&&{sourceHash:t}}},warnings:n}}function be(e,t){if(Y(e)||!z(e))return null;let n=j(e);if(t.push(...n.warnings.map(g=>({message:g.message,element:g.element}))),!n.role)return null;let r=U(e);t.push(...r.warnings.map(g=>({message:g.message,element:g.element})));let i=ae(e);t.push(...i.warnings.map(g=>({message:g.message,element:g.element})));let s=de(e);t.push(...s.warnings.map(g=>({message:g.message,element:g.element})));let a=me(e);t.push(...a.warnings.map(g=>({message:g.message,element:g.element})));let u=fe(e),m=J(e,t);return{role:n.role,name:r.name,...i.description&&{description:i.description},...a.value&&{value:a.value},state:s.state,focus:u,children:m}}function kt(e,t){let n=J(e,t);return{role:"generic",name:"",state:{},focus:{focusable:!1},children:n}}var w=nt(ye(),1),T=e=>e;function R(e){return e?{error:w.default.red,warning:w.default.yellow,info:w.default.blue,success:w.default.green,heading:t=>w.default.bold(w.default.cyan(t)),title:t=>w.default.bold(w.default.cyan(t)),dim:w.default.dim,roleName:w.default.cyan,stateName:w.default.yellow,elementName:t=>w.default.bold(w.default.white(t)),sectionHeader:t=>w.default.bold(w.default.white(t)),description:w.default.dim,bold:w.default.bold,enabled:!0}:{error:T,warning:T,info:T,success:T,heading:T,title:T,dim:T,roleName:T,stateName:T,elementName:T,sectionHeader:T,description:T,bold:T,enabled:!1}}function Ee(e,t){let n=R(t??!1),r=[];return Z(e.root,r,n),r.join(`
2
+ `)}function Z(e,t,n){let r=Ct(e,n);r&&t.push(r);for(let i of e.children){if(i.name&&i.name===e.name&&e.children.length===1){for(let s of i.children)Z(s,t,n);continue}Z(i,t,n)}}function Ct(e,t){let n=[];e.name&&n.push(t.elementName(e.name));let r=Rt(e);r&&n.push(t.roleName(r));let i=St(e);if(i&&n.push(t.stateName(i)),e.value){let s=e.value.text||String(e.value.current);s&&n.push(s)}return e.description&&n.push(t.description(e.description)),n.join(", ")}function Rt(e){let t=e.role;switch(t){case"button":return"button";case"link":return"link";case"heading":return e.state.level?`heading level ${e.state.level}`:"heading";case"textbox":return"edit";case"checkbox":return"checkbox";case"radio":return"radio button";case"combobox":return"combo box";case"listbox":return"list box";case"option":return"option";case"list":return"list";case"listitem":return"list item";case"navigation":return"navigation landmark";case"main":return"main landmark";case"banner":return"banner landmark";case"contentinfo":return"content information landmark";case"region":return"region landmark";case"complementary":return"complementary landmark";case"form":return"form landmark";case"search":return"search landmark";case"img":return"graphic";case"article":return"article";case"generic":return"";case"staticText":case"paragraph":case"cell":case"term":case"definition":case"caption":return"";case"blockquote":return"block quote";case"code":return"code";case"table":return"table";case"row":return"row";case"columnheader":return"column header";case"rowheader":return"row header";case"figure":return"figure";case"dialog":return"dialog";case"meter":return"meter";case"progressbar":return"progress bar";case"status":return"status";case"group":return e.name?"grouping":"";case"document":return"document";case"application":return"embedded object";case"separator":return"separator";default:return t}}function St(e){let t=[];return e.state.expanded!==void 0&&t.push(e.state.expanded?"expanded":"collapsed"),e.state.checked!==void 0&&(e.state.checked==="mixed"?t.push("half checked"):t.push(e.state.checked?"checked":"not checked")),e.state.pressed!==void 0&&(e.state.pressed==="mixed"?t.push("half pressed"):t.push(e.state.pressed?"pressed":"not pressed")),e.state.selected!==void 0&&t.push(e.state.selected?"selected":"not selected"),e.state.disabled&&t.push("unavailable"),e.state.invalid&&t.push("invalid entry"),e.state.required&&t.push("required"),e.state.readonly&&t.push("read only"),e.state.busy&&t.push("busy"),e.state.current&&(e.state.current==="page"?t.push("current page"):e.state.current==="step"?t.push("current step"):e.state.current==="location"?t.push("current location"):e.state.current==="date"?t.push("current date"):e.state.current==="time"?t.push("current time"):e.state.current==="true"&&t.push("current")),e.state.grabbed!==void 0&&t.push(e.state.grabbed?"grabbed":"not grabbed"),t.join(", ")}function Ae(e,t){let n=R(t??!1),r=[];return Q(e.root,r,n),r.join(`
3
+ `)}function Q(e,t,n){let r=Lt(e,n);r&&t.push(r);for(let i of e.children){if(i.name&&i.name===e.name&&e.children.length===1){for(let s of i.children)Q(s,t,n);continue}Q(i,t,n)}}function Lt(e,t){let n=[];e.name&&n.push(t.elementName(e.name));let r=Dt(e);r&&n.push(t.roleName(r));let i=Ot(e);if(i&&n.push(t.stateName(i)),e.value){let s=e.value.text||String(e.value.current);s&&n.push(s)}return e.description&&n.push(t.description(e.description)),n.join(", ")}function Dt(e){let t=e.role;switch(t){case"button":return"button";case"link":return"clickable";case"heading":return e.state.level?`heading ${e.state.level}`:"heading";case"textbox":return"edit";case"checkbox":return"check box";case"radio":return"radio button";case"combobox":return"combo box";case"listbox":return"list box";case"option":return"option";case"list":return"list";case"listitem":return"list item";case"navigation":return"navigation region";case"main":return"main region";case"banner":return"banner region";case"contentinfo":return"content information region";case"region":return"region";case"img":return"graphic";case"article":return"article";case"complementary":return"complementary region";case"form":return"form";case"search":return"search region";case"generic":return"";case"staticText":case"paragraph":case"term":case"definition":case"caption":return"";case"blockquote":return"block quote";case"code":return"code";case"table":{let n=e.children.filter(s=>s.role==="row"),r=n.length,i=n.length>0?n[0].children.length:0;return`table with ${r} rows and ${i} columns`}case"row":return`row ${e.state.posinset??0}`;case"cell":return`column ${e.state.posinset??0}`;case"columnheader":return"column header";case"rowheader":return"row header";case"figure":return"figure";case"dialog":return"dialog";case"meter":return"meter";case"progressbar":return"progress bar";case"status":return"status";case"group":return e.name?"group":"";case"document":return"frame";case"application":return"embedded object";case"separator":return"separator";default:return t}}function Ot(e){let t=[];if(e.state.expanded!==void 0&&t.push(e.state.expanded?"expanded":"collapsed"),e.state.checked!==void 0&&(e.state.checked==="mixed"?t.push("partially checked"):e.state.checked?t.push("checked"):t.push("not checked")),e.state.pressed!==void 0&&(e.state.pressed==="mixed"?t.push("partially pressed"):e.state.pressed?t.push("pressed"):t.push("not pressed")),e.state.selected!==void 0&&t.push(e.state.selected?"selected":"not selected"),e.state.disabled&&t.push("unavailable"),e.state.invalid&&t.push("invalid entry"),e.state.required&&t.push("required"),e.state.readonly&&t.push("read only"),e.state.busy&&t.push("busy"),e.state.current)switch(e.state.current){case"page":t.push("current page");break;case"step":t.push("current step");break;case"location":t.push("current location");break;case"date":t.push("current date");break;case"time":t.push("current time");break;case"true":t.push("current");break}return e.state.grabbed!==void 0&&t.push(e.state.grabbed?"grabbed":"not grabbed"),t.join(", ")}function xe(e,t){let n=R(t??!1),r=[];return ee(e.root,r,n),r.join(`
4
+ `)}function ee(e,t,n){let r=It(e,n);r&&t.push(r);for(let i of e.children){if(i.name&&i.name===e.name&&e.children.length===1){for(let s of i.children)ee(s,t,n);continue}ee(i,t,n)}}function It(e,t){let n=[];if(Mt(e.role)){let s=ve(e);s&&n.push(t.roleName(s)),e.name&&n.push(t.elementName(e.name))}else{e.name&&n.push(t.elementName(e.name));let s=ve(e);s&&n.push(t.roleName(s))}let i=_t(e);if(i&&n.push(t.stateName(i)),e.value){let s=e.value.text||String(e.value.current);s&&n.push(s)}return e.description&&n.push(t.description(e.description)),n.join(", ")}function Mt(e){return e==="heading"||e==="navigation"||e==="main"||e==="banner"||e==="contentinfo"||e==="complementary"||e==="region"||e==="form"||e==="search"||e==="blockquote"||e==="figure"||e==="dialog"||e==="group"||e==="document"}function ve(e){let t=e.role;switch(t){case"button":return"button";case"link":return"link";case"heading":return e.state.level?`heading level ${e.state.level}`:"heading";case"textbox":return"edit text";case"checkbox":return"checkbox";case"radio":return"radio button";case"combobox":return"combo box";case"listbox":return"list box";case"option":return"option";case"list":return"list";case"listitem":return"item";case"navigation":return"navigation";case"main":return"main";case"banner":return"banner";case"contentinfo":return"content information";case"region":return"region";case"complementary":return"complementary";case"form":return"form";case"search":return"search";case"img":return"image";case"article":return"article";case"generic":return"";case"staticText":case"paragraph":case"cell":case"term":case"definition":case"caption":return"";case"blockquote":return"blockquote";case"code":return"code";case"table":{let n=e.children.filter(s=>s.role==="row"),r=n.length,i=n.length>0?n[0].children.length:0;return`table, ${r} rows, ${i} columns`}case"row":return"row";case"columnheader":return"column header";case"rowheader":return"row header";case"figure":return"figure";case"dialog":return"web dialog";case"meter":return"level indicator";case"progressbar":return"progress indicator";case"status":return"status";case"group":return e.name?"group":"";case"document":return"frame";case"application":return"embedded object";case"separator":return"separator";default:return t}}function _t(e){let t=[];return e.state.expanded!==void 0&&t.push(e.state.expanded?"expanded":"collapsed"),e.state.checked!==void 0&&(e.state.checked==="mixed"?t.push("mixed"):t.push(e.state.checked?"checked":"unchecked")),e.state.pressed!==void 0&&(e.state.pressed==="mixed"?t.push("mixed"):t.push(e.state.pressed?"pressed":"not pressed")),e.state.selected!==void 0&&t.push(e.state.selected?"selected":"unselected"),e.state.disabled&&t.push("dimmed"),e.state.invalid&&t.push("invalid data"),e.state.required&&t.push("required"),e.state.readonly&&t.push("read only"),e.state.busy&&t.push("busy"),e.state.current&&(e.state.current==="page"?t.push("current page"):e.state.current==="step"?t.push("current step"):e.state.current==="location"?t.push("current location"):e.state.current==="date"?t.push("current date"):e.state.current==="time"?t.push("current time"):e.state.current==="true"&&t.push("current")),e.state.grabbed!==void 0&&t.push(e.state.grabbed?"grabbed":"not grabbed"),t.join(", ")}function we(e,t){let n=R(t??!1),r=[];return te(e.root,r,n),r.join(`
5
+ `)}function te(e,t,n){let r=$t(e,n);r&&t.push(r);for(let i of e.children){if(i.name&&i.name===e.name&&e.children.length===1){for(let s of i.children)te(s,t,n);continue}te(i,t,n)}}function $t(e,t){let n=[];if(Ht(e.role)){let s=Ne(e);s&&n.push(t.roleName(s)),e.name&&n.push(t.elementName(e.name))}else{e.name&&n.push(t.elementName(e.name));let s=Ne(e);s&&n.push(t.roleName(s))}let i=Bt(e);if(i&&n.push(t.stateName(i)),e.value){let s=e.value.text||String(e.value.current);s&&n.push(s)}return e.description&&n.push(t.description(e.description)),n.join(", ")}function Ht(e){return["link","heading","navigation","main","banner","contentinfo","complementary","region","form","search","blockquote","figure","dialog","group","document"].includes(e)}function Ne(e){let t=e.role;switch(t){case"button":return"button";case"link":return"link";case"heading":return e.state.level?`Heading level ${e.state.level}`:"Heading";case"textbox":return"edit";case"checkbox":return"check box";case"radio":return"radio button";case"combobox":return"combo box";case"listbox":return"list box";case"option":return"option";case"list":return"list";case"listitem":return"list item";case"navigation":return"navigation";case"main":return"main";case"banner":return"banner";case"contentinfo":return"content info";case"complementary":return"complementary";case"form":return"form";case"search":return"search";case"region":return"region";case"img":return"image";case"article":return"article";case"generic":return"";case"staticText":case"paragraph":case"cell":case"term":case"definition":case"caption":return"";case"blockquote":return"block quote";case"code":return"code";case"table":{let n=e.children.filter(s=>s.role==="row"),r=n.length,i=n.length>0?n[0].children.length:0;return`table, ${r} rows, ${i} columns`}case"row":return"row";case"columnheader":return"column header";case"rowheader":return"row header";case"figure":return"figure";case"dialog":return"dialog";case"meter":return"meter";case"progressbar":return"progress bar";case"status":return"status";case"group":return e.name?"group":"";case"document":return"document";case"application":return"application";case"separator":return"separator";default:return t}}function Bt(e){let t=[];return e.state.expanded!==void 0&&t.push(e.state.expanded?"expanded":"collapsed"),e.state.checked!==void 0&&(e.state.checked==="mixed"?t.push("partially selected"):t.push(e.state.checked?"checked":"unchecked")),e.state.pressed!==void 0&&(e.state.pressed==="mixed"?t.push("partially pressed"):t.push(e.state.pressed?"pressed":"not pressed")),e.state.selected!==void 0&&t.push(e.state.selected?"selected":"not selected"),e.state.disabled&&t.push("disabled"),e.state.invalid&&t.push("invalid"),e.state.required&&t.push("required"),e.state.readonly&&t.push("read only"),e.state.busy&&t.push("busy"),e.state.current&&(e.state.current==="page"?t.push("current page"):e.state.current==="step"?t.push("current step"):e.state.current==="location"?t.push("current location"):e.state.current==="date"?t.push("current date"):e.state.current==="time"?t.push("current time"):e.state.current==="true"&&t.push("current")),e.state.grabbed!==void 0&&t.push(e.state.grabbed?"grabbed":"not grabbed"),t.join(", ")}function Te(e){let t={totalElements:0,roleDistribution:{},landmarkCount:0,headingCount:0,interactiveCount:0,focusableCount:0,statesUsed:new Set},n=[],r=[],i=[],s=[];return ke(e.root,t,n,r,i),Wt(n,s),Kt(r,s),qt(i,s),{statistics:t,landmarks:n,headings:r,interactiveElements:i,issues:s}}function ke(e,t,n,r,i){e.role!=="generic"&&(t.totalElements++,t.roleDistribution[e.role]=(t.roleDistribution[e.role]||0)+1,Ft(e.role)&&(t.landmarkCount++,n.push(e)),e.role==="heading"&&(t.headingCount++,r.push(e)),Pt(e.role)&&(t.interactiveCount++,i.push(e)),e.focus.focusable&&t.focusableCount++,Object.keys(e.state).forEach(s=>{e.state[s]!==void 0&&t.statesUsed.add(s)}));for(let s of e.children)ke(s,t,n,r,i)}function Ft(e){return["navigation","main","banner","contentinfo","region","complementary","form","search"].includes(e)}function Pt(e){return["button","link","textbox","checkbox","radio","combobox","listbox","option"].includes(e)}function Wt(e,t){e.length===0&&t.push({severity:"info",message:"No landmarks found",suggestion:"Consider adding semantic landmarks (main, nav, aside, etc.)"}),e.forEach(r=>{!r.name&&["navigation","region","complementary","form"].includes(r.role)&&t.push({severity:"warning",message:`${r.role} landmark has no accessible name`,suggestion:`Add aria-label="${r.role==="navigation"?"Main navigation":"Descriptive name"}" to the ${r.role} element`,element:{role:r.role,name:r.name}})});let n=new Map;e.forEach(r=>{n.has(r.role)||n.set(r.role,[]),n.get(r.role).push(r)}),n.forEach((r,i)=>{if(r.length>1){let s=r.every(u=>!u.name),a=r.every(u=>u.name===r[0].name);(s||a)&&t.push({severity:"warning",message:`Multiple ${i} landmarks without distinguishing names`,suggestion:`Add unique aria-label attributes to distinguish between ${i} landmarks`})}})}function Kt(e,t){if(e.length===0)return;let n=e[0];n.state.level&&n.state.level!==1&&t.push({severity:"error",message:`First heading is h${n.state.level} (should be h1)`,suggestion:`Change <h${n.state.level}> to <h1> or add h1 before it`,element:{role:n.role,name:n.name}});for(let r=1;r<e.length;r++){let i=e[r-1].state.level||1,s=e[r].state.level||1;s>i+1&&t.push({severity:"error",message:`Heading hierarchy violation: h${i} followed by h${s} (skipped h${i+1})`,suggestion:`Change h${s} to h${i+1} or add intermediate heading levels`,element:{role:e[r].role,name:e[r].name}})}}function qt(e,t){e.forEach(n=>{n.name||t.push({severity:"error",message:`${n.role} has no accessible name`,suggestion:n.role==="button"?"Add text content or aria-label to button":n.role==="link"?"Add text content or aria-label to link":`Add aria-label to ${n.role}`,element:{role:n.role,name:n.name}}),n.role==="textbox"&&!n.name&&t.push({severity:"error",message:"Input has no associated label",suggestion:"Add <label> element or aria-label attribute",element:{role:n.role,name:n.name}})})}var jt=new Set(["navigation","main","banner","contentinfo","complementary","region","form","search"]),zt=new Set(["button","link","textbox","checkbox","radio","combobox","listbox","option"]);function Gt(e){let t={totalElements:0,interactiveElements:0,landmarks:0,headings:0};function n(r){r.role!=="generic"&&r.role!=="staticText"&&t.totalElements++,zt.has(r.role)&&t.interactiveElements++,jt.has(r.role)&&t.landmarks++,r.role==="heading"&&t.headings++;for(let i of r.children)n(i)}return n(e),t}function Yt(e){return Te(e).issues.map(n=>({severity:n.severity,message:n.message,selector:n.element?`${n.element.role}${n.element.name?` "${n.element.name}"`:""}`:n.suggestion||""}))}function Se(e=[]){return{nvda:[],jaws:[],voiceover:[],narrator:[],audit:[],stats:{totalElements:0,interactiveElements:0,landmarks:0,headings:0},warnings:[...e]}}function ne(e,t=[]){if(!e)return Se(t);let n;try{n=pe(e)}catch(A){return Se([...t,`Analysis failed: ${A instanceof Error?A.message:String(A)}`])}let{model:r,warnings:i}=n,s=Ee(r,!1).split(`
6
+ `).filter(Boolean),a=Ae(r,!1).split(`
7
+ `).filter(Boolean),u=xe(r,!1).split(`
8
+ `).filter(Boolean),m=we(r,!1).split(`
9
+ `).filter(Boolean),b=Yt(r),g=Gt(r.root),v=[...t,...i.map(A=>A.message)];return{nvda:s,jaws:a,voiceover:u,narrator:m,audit:b,stats:g,warnings:v}}async function B(e,t){let{awaitCustomElementsReady:n}=await Promise.resolve().then(()=>(H(),Re)),r=e??void 0,i=r&&r.ownerDocument?r.ownerDocument:r,s=i?await n(i,t):[];return ne(e,s.map(a=>a.message))}function k(e){if(e.id)return`#${Le(e.id)}`;let t=e.ownerDocument;if(!t)return I(e);let n=[],r=e;for(;r&&r!==t.documentElement;){let s=Jt(r,t);n.unshift(s);let a=n.join(" > ");try{let u=t.querySelectorAll(a);if(u.length===1&&u[0]===e)return a}catch{}r=r.parentElement}return n.length===0?I(e):n.join(" > ")}function Jt(e,t){let n=I(e),r=e.parentElement;if(r){if(Array.from(r.children).filter(u=>I(u)===n).length===1)return n}else return n;let i=Xt(e);if(i.length>0){let a=`${n}.${i.join(".")}`;if(r&&Array.from(r.children).filter(m=>I(m)!==n?!1:i.every(b=>m.classList.contains(b))).length===1)return a}let s=Qt(e);return`${n}:nth-child(${s})`}function I(e){return e.tagName.toLowerCase()}function Xt(e){let t=Array.from(e.classList);return t.length===0?[]:t.filter(r=>!Zt(r)).sort().map(Le)}function Zt(e){return!!(/^[a-f0-9]{5,}$/i.test(e)||/[_-][a-f0-9]{5,}$/i.test(e)||/_{2,}[A-Za-z0-9]{4,}$/.test(e))}function Qt(e){let t=e.parentElement;return t?Array.from(t.children).indexOf(e)+1:1}function Le(e){if(!e)return e;let t="";for(let n=0;n<e.length;n++){let r=e[n],i=r.charCodeAt(0);if(n===0&&i>=48&&i<=57){t+=`\\3${r} `;continue}if(r==="!"||r==='"'||r==="#"||r==="$"||r==="%"||r==="&"||r==="'"||r==="("||r===")"||r==="*"||r==="+"||r===","||r==="."||r==="/"||r===":"||r===";"||r==="<"||r==="="||r===">"||r==="?"||r==="@"||r==="["||r==="\\"||r==="]"||r==="^"||r==="`"||r==="{"||r==="|"||r==="}"||r==="~"||r===" "){t+=`\\${r}`;continue}t+=r}return t}function en(e,t){let n=e.getAttribute("aria-label");if(n&&n.trim())return n.trim();let r=e.getAttribute("aria-labelledby");if(r&&r.trim()){let s=r.trim().split(/\s+/),a=[];for(let m of s){let b=t.getElementById(m);b&&b.textContent&&a.push(b.textContent.trim())}let u=a.join(" ");if(u)return u}let i=e.textContent;return i&&i.trim()?i.trim():""}function tn(e){let t=e.getAttribute("role");if(t&&t.trim())return t.trim();switch(e.tagName.toLowerCase()){case"button":return"button";case"a":return e.hasAttribute("href")?"link":"generic";case"input":switch((e.getAttribute("type")||"text").toLowerCase()){case"button":case"submit":case"reset":case"image":return"button";case"checkbox":return"checkbox";case"radio":return"radio";case"range":return"slider";case"search":return"searchbox";default:return"textbox"}case"textarea":return"textbox";case"select":return e.hasAttribute("multiple")?"listbox":"combobox";case"nav":return"navigation";case"main":return"main";case"header":return"banner";case"footer":return"contentinfo";case"aside":return"complementary";case"form":return"form";case"section":return e.hasAttribute("aria-label")||e.hasAttribute("aria-labelledby")?"region":"generic";case"article":return"article";case"dialog":return"dialog";case"table":return"table";case"ul":case"ol":return"list";case"li":return"listitem";case"img":return e.getAttribute("alt")===""?"presentation":"img";case"h1":case"h2":case"h3":case"h4":case"h5":case"h6":return"heading";case"option":return"option";case"progress":return"progressbar";case"output":return"status";case"menu":return"menu";default:return"generic"}}function De(e){let{document:t,onEvent:n,getTimestamp:r}=e,i=!1,s=null;function a(m){return{role:tn(m),accessibleName:en(m,t),selector:k(m)}}function u(m){if(!i)return;let b=m.target;if(!b||!(b instanceof t.defaultView.Element))return;let g=a(b),v={type:"FOCUS_CHANGED",timestamp:r(),target:g,payload:{kind:"focus_changed",previousTarget:s}};n(v),s=g}return{start(){i||(i=!0,s=null,t.addEventListener("focusin",u))},stop(){i&&(i=!1,t.removeEventListener("focusin",u))},get isActive(){return i}}}var Oe="role",nn=new Set(["aria-label","aria-labelledby"]),rn=new Set(["aria-expanded","aria-selected","aria-checked","aria-disabled","aria-hidden"]),sn=[Oe,"aria-label","aria-labelledby","aria-expanded","aria-selected","aria-checked","aria-disabled","aria-hidden"];function re(e,t){let n=e.getAttribute("aria-label");if(n&&n.trim())return n.trim();let r=e.getAttribute("aria-labelledby");if(r&&r.trim()){let s=r.trim().split(/\s+/),a=[];for(let m of s){let b=t.getElementById(m);b&&b.textContent&&a.push(b.textContent.trim())}let u=a.join(" ");if(u)return u}let i=e.textContent;return i&&i.trim()?i.trim():""}function on(e){let t=e.getAttribute("role");if(t&&t.trim())return t.trim();switch(e.tagName.toLowerCase()){case"button":return"button";case"a":return e.hasAttribute("href")?"link":"generic";case"input":switch((e.getAttribute("type")||"text").toLowerCase()){case"button":case"submit":case"reset":case"image":return"button";case"checkbox":return"checkbox";case"radio":return"radio";case"range":return"slider";case"search":return"searchbox";default:return"textbox"}case"textarea":return"textbox";case"select":return e.hasAttribute("multiple")?"listbox":"combobox";case"nav":return"navigation";case"main":return"main";case"header":return"banner";case"footer":return"contentinfo";case"aside":return"complementary";case"form":return"form";case"section":return e.hasAttribute("aria-label")||e.hasAttribute("aria-labelledby")?"region":"generic";case"article":return"article";case"dialog":return"dialog";case"table":return"table";case"ul":case"ol":return"list";case"li":return"listitem";case"img":return e.getAttribute("alt")===""?"presentation":"img";case"h1":case"h2":case"h3":case"h4":case"h5":case"h6":return"heading";case"option":return"option";case"progress":return"progressbar";case"output":return"status";case"menu":return"menu";default:return"generic"}}function Ie(e){let{document:t,onEvent:n,getTimestamp:r}=e,i=null,s=!1;function a(f){if(s)for(let p of f){if(p.type!=="attributes")continue;let o=p.attributeName;if(!o)continue;let c=p.target;c instanceof Element&&(o===Oe?u(c,p.oldValue):nn.has(o)?m(c,o,p.oldValue):rn.has(o)&&b(c,o,p.oldValue))}}function u(f,p){let o=p?.trim()||v(f),c=f.getAttribute("role")?.trim()||v(f);if(o===c)return;let l=g(f),d={kind:"role_changed",previousRole:o,newRole:c};n({type:"ROLE_CHANGED",timestamp:r(),target:l,payload:d})}function m(f,p,o){let c,l;if(p==="aria-label"){if(c=o?.trim()||"",l=re(f,t),!c&&o===null){let x=f.getAttribute("aria-labelledby");x?c=A(f,x):c=f.textContent?.trim()||""}}else{if(c=o?A(f,o):"",!c&&o===null){let x=f.getAttribute("aria-label");x?c=x.trim():c=f.textContent?.trim()||""}l=re(f,t)}if(c===l)return;let d=g(f),h={kind:"accessible_name_changed",previousName:c,newName:l};n({type:"ACCESSIBLE_NAME_CHANGED",timestamp:r(),target:d,payload:h})}function b(f,p,o){let c=f.getAttribute(p),l=y(o),d=y(c);if(l===d)return;let h=g(f),x={kind:"state_changed",attribute:p,previousValue:l,newValue:d};n({type:"STATE_CHANGED",timestamp:r(),target:h,payload:x})}function g(f){return{role:on(f),accessibleName:re(f,t),selector:k(f)}}function v(f){switch(f.tagName.toLowerCase()){case"button":return"button";case"a":return f.hasAttribute("href")?"link":"generic";case"input":switch((f.getAttribute("type")||"text").toLowerCase()){case"button":case"submit":case"reset":case"image":return"button";case"checkbox":return"checkbox";case"radio":return"radio";default:return"textbox"}default:return"generic"}}function A(f,p){let o=f.ownerDocument;if(!o)return"";let c=p.trim().split(/\s+/).filter(Boolean),l=[];for(let d of c){let h=o.getElementById(d);h&&h.textContent&&l.push(h.textContent.trim())}return l.join(" ")}function y(f){return f===null?null:f==="true"?!0:f==="false"?!1:f}return{start(){s||(s=!0,i=new MutationObserver(a),i.observe(t.body??t.documentElement,{attributes:!0,attributeOldValue:!0,attributeFilter:sn,subtree:!0}))},stop(){s&&(s=!1,i&&(i.disconnect(),i=null))},get isActive(){return s}}}var Me=new Set(["alert","status","log","marquee","timer"]),an={alert:"assertive",status:"polite",log:"polite",marquee:"polite",timer:"polite"};function _e(e,t){let n=null,r=null,i=new Set;function s(c){let l=c.getAttribute("aria-live");if(l==="assertive")return"assertive";if(l==="polite")return"polite";if(l==="off")return null;let d=c.getAttribute("role");return d&&Me.has(d)?an[d]||"polite":l&&l!=="off"?"polite":null}function a(c){return c.getAttribute("aria-atomic")==="true"}function u(c){let l=c.getAttribute("role")||"region",d=c.getAttribute("aria-label")||c.getAttribute("aria-labelledby")||"",h=k(c);return{role:l,accessibleName:d,selector:h}}function m(c){let l=[];return c.forEach(d=>{if(d.nodeType===Node.TEXT_NODE){let h=d.textContent?.trim();h&&l.push(h)}else if(d.nodeType===Node.ELEMENT_NODE){let h=d.textContent?.trim();h&&l.push(h)}}),l.join(" ").trim()}function b(c,l,d){if(!l)return;let h=u(c);t({type:"ANNOUNCEMENT",target:h,payload:{kind:"announcement",politeness:d,text:l}})}function g(c){let l=c;for(;l;){if(l.nodeType===Node.ELEMENT_NODE&&i.has(l))return l;l=l.parentNode}return null}function v(c){let l=new Map;for(let d of c){let h=g(d.target);if(!h)continue;l.has(h)||l.set(h,{addedText:[],charDataChanged:!1});let x=l.get(h);if(d.type==="childList"&&d.addedNodes.length>0){let N=m(d.addedNodes);N&&x.addedText.push(N)}else d.type==="characterData"&&(x.charDataChanged=!0)}for(let[d,h]of l){let x=s(d);if(!x)continue;let N;a(d)?N=d.textContent?.trim()||"":h.addedText.length>0?N=h.addedText.join(" ").trim():h.charDataChanged?N=d.textContent?.trim()||"":N="",b(d,N,x)}}function A(c){for(let l of c)l.type==="childList"&&(l.addedNodes.forEach(d=>{if(d.nodeType!==Node.ELEMENT_NODE)return;let h=d;s(h)!==null&&!i.has(h)&&y(h),h.querySelectorAll("[aria-live], [role]").forEach(N=>{s(N)!==null&&!i.has(N)&&y(N)})}),l.removedNodes.forEach(d=>{if(d.nodeType!==Node.ELEMENT_NODE)return;let h=d;i.has(h)&&i.delete(h),h.querySelectorAll("[aria-live], [role]").forEach(N=>{i.delete(N)})}))}function y(c){i.add(c)}function f(){e.querySelectorAll("[aria-live]").forEach(l=>{s(l)!==null&&y(l)}),Me.forEach(l=>{e.querySelectorAll(`[role="${l}"]`).forEach(h=>{i.has(h)||y(h)})})}function p(){f(),n=new MutationObserver(v);let c=e.body;c&&n.observe(c,{childList:!0,characterData:!0,subtree:!0,characterDataOldValue:!0}),r=new MutationObserver(A),c&&r.observe(c,{childList:!0,subtree:!0})}function o(){n&&(n.disconnect(),n=null),r&&(r.disconnect(),r=null),i.clear()}return{start:p,stop:o}}function F(e,t){let n=e.getAttribute("aria-label");if(n&&n.trim())return n.trim();let r=e.getAttribute("aria-labelledby");if(r&&r.trim()){let a=r.trim().split(/\s+/),u=[];for(let b of a){let g=t.getElementById(b);g&&g.textContent&&u.push(g.textContent.trim())}let m=u.join(" ");if(m)return m}let i=e.getAttribute("title");if(i&&i.trim())return i.trim();let s=e.querySelector("h1, h2, h3, h4, h5, h6");return s&&s.textContent&&s.textContent.trim()?s.textContent.trim():""}function cn(e){let t=e.getAttribute("role");return t&&t.trim()?t.trim():e.tagName.toLowerCase()==="dialog"?"dialog":"generic"}function $e(e){if(e.tagName.toLowerCase()==="dialog")return!0;let t=e.getAttribute("role");return t==="dialog"||t==="alertdialog"}function ln(e){return e.getAttribute("aria-modal")==="true"}function He(e){let{document:t,onEvent:n,getTimestamp:r}=e,i=!1,s=null,a=[];function u(y){return{role:cn(y),accessibleName:F(y,t),selector:k(y)}}function m(y){let f=F(y,t),p=ln(y),o=u(y);a.push({element:y,name:f,selector:o.selector});let c={type:"DIALOG_OPENED",timestamp:r(),target:o,payload:{kind:"dialog_opened",dialogName:f,isModal:p}};n(c)}function b(y){let f=F(y,t),p=u(y),o=a.findIndex(l=>l.element===y);o!==-1&&a.splice(o,1);let c={type:"DIALOG_CLOSED",timestamp:r(),target:p,payload:{kind:"dialog_closed",dialogName:f}};n(c)}function g(y){return a.some(f=>f.element===y)}function v(y){if(i)for(let f of y){if(f.type==="attributes"){let p=f.target;if(!(p instanceof t.defaultView.Element))continue;if(f.attributeName==="open"&&p.tagName.toLowerCase()==="dialog"&&(p.hasAttribute("open")?g(p)||m(p):g(p)&&b(p)),f.attributeName==="aria-modal"&&$e(p)&&!g(p)&&A(p)&&m(p),f.attributeName==="role"){let o=f.oldValue,c=p.getAttribute("role"),l=o==="dialog"||o==="alertdialog",d=c==="dialog"||c==="alertdialog";!l&&d&&A(p)?m(p):l&&!d&&g(p)&&b(p)}}if(f.type==="childList"){for(let p=0;p<f.addedNodes.length;p++){let o=f.addedNodes[p];if(!(o instanceof t.defaultView.Element))continue;$e(o)&&A(o)&&(g(o)||m(o));let c=o.querySelectorAll('dialog[open], [role="dialog"], [role="alertdialog"]');for(let l=0;l<c.length;l++){let d=c[l];A(d)&&!g(d)&&m(d)}}for(let p=0;p<f.removedNodes.length;p++){let o=f.removedNodes[p];if(!(o instanceof t.defaultView.Element))continue;g(o)&&b(o);let c=a.filter(l=>o.contains(l.element));for(let l of c)b(l.element)}}}}function A(y){return y.tagName.toLowerCase()==="dialog"?y.hasAttribute("open"):!0}return{start(){if(i)return;i=!0,a.length=0;let y=t.querySelectorAll('dialog[open], [role="dialog"], [role="alertdialog"]');for(let f=0;f<y.length;f++){let p=y[f];A(p)&&a.push({element:p,name:F(p,t),selector:k(p)})}s=new MutationObserver(v),s.observe(t.body||t.documentElement,{attributes:!0,attributeFilter:["open","role","aria-modal"],attributeOldValue:!0,childList:!0,subtree:!0})},stop(){i&&(i=!1,s&&(s.disconnect(),s=null),a.length=0)},get isActive(){return i},getOpenDialogs(){return a.map(y=>y.name)}}}function Be(e){let{document:t}=e,n=!1,r=0,i=[];function s(){return Date.now()-r}function a(A){i.push(A)}function u(A){let y={...A,timestamp:s()};i.push(y)}let m=De({document:t,onEvent:a,getTimestamp:s}),b=Ie({document:t,onEvent:a,getTimestamp:s}),g=_e(t,u),v=He({document:t,onEvent:a,getTimestamp:s});return{attach(){n||(n=!0,r=Date.now(),i=[],m.start(),b.start(),g.start(),v.start())},detach(){n&&(n=!1,m.stop(),b.stop(),g.stop(),v.stop())},getEvents(){return[...i]},reset(){i=[]},get isAttached(){return n},get dialogObserver(){return{getOpenDialogs(){return v.getOpenDialogs()}}}}}var M={Tab:{key:"Tab",code:"Tab",keyCode:9},Escape:{key:"Escape",code:"Escape",keyCode:27},Enter:{key:"Enter",code:"Enter",keyCode:13}," ":{key:" ",code:"Space",keyCode:32},ArrowUp:{key:"ArrowUp",code:"ArrowUp",keyCode:38},ArrowDown:{key:"ArrowDown",code:"ArrowDown",keyCode:40},ArrowLeft:{key:"ArrowLeft",code:"ArrowLeft",keyCode:37},ArrowRight:{key:"ArrowRight",code:"ArrowRight",keyCode:39}},un=["button:not([disabled])","a[href]","input:not([disabled])","select:not([disabled])","textarea:not([disabled])",'[tabindex]:not([tabindex="-1"])'].join(", ");function Fe(e){return Array.from(e.querySelectorAll(un))}function dn(e,t){let n=e.getAttribute("aria-label");if(n&&n.trim())return n.trim();let r=e.getAttribute("aria-labelledby");if(r&&r.trim()){let s=r.trim().split(/\s+/),a=[];for(let m of s){let b=t.getElementById(m);b&&b.textContent&&a.push(b.textContent.trim())}let u=a.join(" ");if(u)return u}let i=e.textContent;return i&&i.trim()?i.trim():""}function mn(e){let t=e.getAttribute("role");if(t&&t.trim())return t.trim();switch(e.tagName.toLowerCase()){case"button":return"button";case"a":return e.hasAttribute("href")?"link":"generic";case"input":switch((e.getAttribute("type")||"text").toLowerCase()){case"button":case"submit":case"reset":case"image":return"button";case"checkbox":return"checkbox";case"radio":return"radio";case"range":return"slider";case"search":return"searchbox";default:return"textbox"}case"textarea":return"textbox";case"select":return e.hasAttribute("multiple")?"listbox":"combobox";case"dialog":return"dialog";default:return"generic"}}function P(e,t){return{role:mn(e),accessibleName:dn(e,t),selector:k(e)}}function W(e,t){let n=e.activeElement||e.body,r={key:t.key,code:t.code,keyCode:t.keyCode,which:t.keyCode,shiftKey:t.shiftKey||!1,ctrlKey:t.ctrlKey||!1,altKey:t.altKey||!1,metaKey:t.metaKey||!1,bubbles:!0,cancelable:!0};n.dispatchEvent(new KeyboardEvent("keydown",r)),t.key.length===1&&n.dispatchEvent(new KeyboardEvent("keypress",r)),n.dispatchEvent(new KeyboardEvent("keyup",r))}function fn(e){let t=e.split("+"),n=[],r=!1,i=!1,s=!1,a=!1,u=t[t.length-1];for(let m=0;m<t.length-1;m++)switch(t[m].toLowerCase()){case"shift":r=!0,n.push("Shift");break;case"control":case"ctrl":i=!0,n.push("Control");break;case"alt":s=!0,n.push("Alt");break;case"meta":case"cmd":case"command":a=!0,n.push("Meta");break}return{key:u,modifiers:n,shiftKey:r,ctrlKey:i,altKey:s,metaKey:a}}function gn(e){return M[e]?M[e]:e.length===1?{key:e,code:`Key${e.toUpperCase()}`,keyCode:e.toUpperCase().charCodeAt(0)}:{key:e,code:e,keyCode:0}}function pn(e,t,n,r){let i=t.querySelector(e);if(!i){let a={type:"WARNING",timestamp:r(),target:{role:"generic",accessibleName:"",selector:e},payload:{kind:"warning",message:`Element not found: ${e}`}};n(a);return}let s={bubbles:!0,cancelable:!0};i.dispatchEvent(new MouseEvent("mousedown",s)),i.dispatchEvent(new MouseEvent("mouseup",s)),i.dispatchEvent(new MouseEvent("click",s)),"focus"in i&&typeof i.focus=="function"&&i.focus()}function bn(e,t,n){let r=Fe(e);if(r.length===0)return;let i=e.activeElement,s=-1;i&&(s=r.indexOf(i));let a=(s+1)%r.length,u=r[a];W(e,{...M.Tab,shiftKey:!1}),u&&typeof u.focus=="function"&&u.focus();let m=e.activeElement||e.body,b={type:"KEYBOARD_ACTION",timestamp:n(),target:P(m,e),payload:{kind:"keyboard_action",key:"Tab",modifiers:[]}};t(b)}function hn(e,t,n){let r=Fe(e);if(r.length===0)return;let i=e.activeElement,s=-1;i&&(s=r.indexOf(i));let a=s<=0?r.length-1:s-1,u=r[a];W(e,{...M.Tab,shiftKey:!0}),u&&typeof u.focus=="function"&&u.focus();let m=e.activeElement||e.body,b={type:"KEYBOARD_ACTION",timestamp:n(),target:P(m,e),payload:{kind:"keyboard_action",key:"Tab",modifiers:["Shift"]}};t(b)}function S(e,t,n,r){let i=M[e];if(!i)return;W(t,{...i});let s=t.activeElement||t.body,a={type:"KEYBOARD_ACTION",timestamp:r(),target:P(s,t),payload:{kind:"keyboard_action",key:e,modifiers:[]}};n(a)}function yn(e,t,n,r){let i=fn(e),s=gn(i.key);W(t,{...s,shiftKey:i.shiftKey,ctrlKey:i.ctrlKey,altKey:i.altKey,metaKey:i.metaKey});let a=t.activeElement||t.body,u={type:"KEYBOARD_ACTION",timestamp:r(),target:P(a,t),payload:{kind:"keyboard_action",key:i.key,modifiers:i.modifiers}};n(u)}async function En(e,t,n,r){switch(e.type){case"click":pn(e.selector,t,n,r);break;case"tab":bn(t,n,r);break;case"shiftTab":hn(t,n,r);break;case"escape":S("Escape",t,n,r);break;case"enter":S("Enter",t,n,r);break;case"space":S(" ",t,n,r);break;case"arrowUp":S("ArrowUp",t,n,r);break;case"arrowDown":S("ArrowDown",t,n,r);break;case"arrowLeft":S("ArrowLeft",t,n,r);break;case"arrowRight":S("ArrowRight",t,n,r);break;case"key":yn(e.combo,t,n,r);break;case"wait":await new Promise(i=>setTimeout(i,e.ms));break}}async function Pe(e,t,n,r,i=100){for(let s=0;s<e.actions.length;s++){let a=e.actions[s];await En(a,t,n,r),s<e.actions.length-1&&await new Promise(u=>setTimeout(u,i))}}var An={dialogFocusTimeout:100,rapidAnnouncementWindow:500,rapidAnnouncementThreshold:3,keyboardResponseTimeout:200};function We(e){let t={...An,...e},n=[],r=[],i=[],s=[],a=null;function u(o,c,l,d){return{type:"WARNING",timestamp:o,target:l,payload:{kind:"warning",message:c,relatedEvent:d}}}function m(o){let c=[];for(let l=r.length-1;l>=0;l--){let d=r[l];if(d.resolved)continue;o-d.openedAt>t.dialogFocusTimeout&&(d.isModal&&c.push(u(o,"Focus was not moved into modal dialog",{role:"dialog",accessibleName:d.dialogName,selector:d.dialogSelector})),d.resolved=!0)}return c}function b(o){let c=[];for(let l=i.length-1;l>=0;l--){let d=i[l];if(d.resolved)continue;o-d.timestamp>t.keyboardResponseTimeout&&(c.push(u(o,"Keyboard action produced no accessibility response",d.event.target,d.event)),d.resolved=!0)}return c}function g(o){let c=[],l=o-t.rapidAnnouncementWindow;for(;s.length>0&&s[0]<l;)s.shift();return s.length>t.rapidAnnouncementThreshold&&(c.push(u(o,"Rapid announcements detected: assistive technology users may miss content",{role:"region",accessibleName:"",selector:"body"})),s.length=0),c}function v(o){let c=[];if(o.type!=="FOCUS_CHANGED")return c;let l=n.filter(h=>h.isModal);if(l.length===0)return c;let d=o.target.selector;for(let h of l)if(!y(d,h.selector)){c.push(u(o.timestamp,"Focus escaped modal dialog",o.target,o));break}return c}function A(o){let c=[];return o.type==="DOM_MUTATION"&&a!==null&&o.target.selector===a&&c.push(u(o.timestamp,"Focused element removed without focus management",o.target,o)),c}function y(o,c){return!!(o===c||o.startsWith(c+" ")||o.startsWith(c+" > ")||o.startsWith(c+">"))}function f(o){let c=[];switch(c.push(...m(o.timestamp)),c.push(...b(o.timestamp)),o.type){case"DIALOG_OPENED":{let l=o.payload,d={selector:o.target.selector,name:l.dialogName,isModal:l.isModal};n.push(d),l.isModal&&r.push({dialogSelector:o.target.selector,dialogName:l.dialogName,openedAt:o.timestamp,isModal:!0,resolved:!1});break}case"DIALOG_CLOSED":{let l=o.target.selector,d=n.findIndex(h=>h.selector===l);d!==-1&&n.splice(d,1);for(let h of r)h.dialogSelector===l&&!h.resolved&&(h.resolved=!0);break}case"FOCUS_CHANGED":{for(let l of r)l.resolved||y(o.target.selector,l.dialogSelector)&&(l.resolved=!0);for(let l of i)l.resolved||(l.resolved=!0);c.push(...v(o)),a=o.target.selector;break}case"ANNOUNCEMENT":{s.push(o.timestamp);for(let l of i)l.resolved||(l.resolved=!0);c.push(...g(o.timestamp));break}case"KEYBOARD_ACTION":{i.push({event:o,timestamp:o.timestamp,resolved:!1});break}case"DOM_MUTATION":{c.push(...A(o));for(let l of i)l.resolved||(l.resolved=!0);break}case"STATE_CHANGED":case"ROLE_CHANGED":case"ACCESSIBLE_NAME_CHANGED":{for(let l of i)l.resolved||(l.resolved=!0);break}default:break}return p(),c}function p(){for(let o=r.length-1;o>=0;o--)r[o].resolved&&r.splice(o,1);for(let o=i.length-1;o>=0;o--)i[o].resolved&&i.splice(o,1)}return{process(o){return f(o)},get openDialogs(){return n.map(o=>o.selector)}}}var _="1.7.0";var Ke="1.0",vn=500,xn=1e4,Nn=100;function qe(e){let{document:t,componentName:n,storyName:r,settlePeriod:i=vn,loadTimeout:s=xn,heuristics:a=!0}=e,u=!1,m=null;return{async capture(b){if(u=!1,await wn(t,s),u)return ie(n,r,b);let g=Be({document:t});m=g;let v=a?We():null,A=[],y=Date.now();if(g.attach(),u)return g.detach(),m=null,ie(n,r,b);function f(){return Date.now()-y}if(await Pe(b,t,x=>{A.push(x)},f,Nn),u)return g.detach(),m=null,ie(n,r,b);await kn(i),g.detach(),m=null;let p=Date.now()-y,o=g.getEvents(),c=Tn(o,A);if(v){let x=[];for(let N of c){let q=v.process(N);x.push(...q)}for(let N of x)c.push(N);c.sort((N,q)=>N.timestamp-q.timestamp)}let l=c.filter(x=>x.type==="WARNING"),d={capturedAt:new Date().toISOString(),speakableVersion:_,sourceUrl:Ve(t),userAgent:Ue()};return{version:Ke,component:n,story:r||null,interactionSequence:b.description,duration:p,events:c,warnings:l,metadata:d}},abort(){u=!0,m&&m.isAttached&&(m.detach(),m=null)}}}async function wn(e,t){if(!e.body)return new Promise((n,r)=>{let i=setTimeout(()=>{r(new Error(`Document load timeout (${t}ms): ${Ve(e)}`))},t),s=setInterval(()=>{e.body&&(clearTimeout(i),clearInterval(s),n())},50)})}function Tn(e,t){let n=[...e,...t];return n.sort((r,i)=>r.timestamp-i.timestamp),n}function Ve(e){try{let t=e.URL;if(t&&t!=="about:blank"&&t!=="")return t}catch{}return"local"}function Ue(){try{if(typeof navigator<"u"&&navigator.userAgent)return navigator.userAgent}catch{}return"jsdom"}function kn(e){return new Promise(t=>setTimeout(t,e))}function ie(e,t,n){return{version:Ke,component:e,story:t||null,interactionSequence:n.description,duration:0,events:[],warnings:[],metadata:{capturedAt:new Date().toISOString(),speakableVersion:_,sourceUrl:"local",userAgent:Ue()}}}H();async function K(e,t){let{componentName:n,storyName:r,sequence:i,settlePeriod:s,awaitUpgrade:a=!0,upgradeTimeoutMs:u}=t,m=[];a&&(m=(await O(e,u)).map(A=>A.message));let g=await qe({document:e,componentName:n,storyName:r,...s!==void 0&&{settlePeriod:s}}).capture(i);if(m.length>0){let v=m.map(A=>({type:"WARNING",timestamp:0,target:{role:"generic",accessibleName:"",selector:":root"},payload:{kind:"warning",message:A}}));return{...g,events:[...v,...g.events],warnings:[...v,...g.warnings]}}return g}H();var D="speakable-harness";function je(e){if(!e||typeof e!="object")return!1;let t=e;return t.channel===D&&typeof t.id=="string"&&(t.kind==="analyze"||t.kind==="capture")}function Cn(e,t){if(t&&t.includes("*"))return!0;if(t&&t.length>0)return t.includes(e);try{return e===window.location.origin}catch{return!1}}function Rn(e){return e?document.querySelector(e):document.documentElement}async function Sn(e){try{if(e.kind==="analyze"){let n=Rn(e.selector),r=await B(n);return{channel:D,id:e.id,ok:!0,kind:"analyze",result:r}}let t=await K(document,e.options);return{channel:D,id:e.id,ok:!0,kind:"capture",result:t}}catch(t){return{channel:D,id:e.id,ok:!1,error:t instanceof Error?t.message:String(t)}}}function ze(e={}){let t=window;if(!t.__SPEAKABLE_AGENT_INSTALLED__){t.__SPEAKABLE_AGENT_INSTALLED__=!0,window.addEventListener("message",async n=>{if(n.source!==window.parent||!Cn(n.origin,e.allowedOrigins)||!je(n.data))return;let r=await Sn(n.data),i=e.allowedOrigins&&e.allowedOrigins.includes("*")?"*":n.origin;window.parent.postMessage(r,i)});try{window.parent.postMessage({channel:D,kind:"ready"},"*")}catch{}}}var Ln={analyzeElement:ne,analyzeElementWithUpgrade:B,captureTimeline:K,awaitCustomElementsReady:O,version:_};window.__SPEAKABLE__=Ln;try{ze()}catch{}return rt(Dn);})();
10
+ //# sourceMappingURL=speakable-browser.global.js.map