@vitest/browser 3.1.2 → 3.1.3
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.
- package/dist/client/error-catcher.js +1 -14
- package/dist/client.js +19 -8
- package/dist/expect-element.js +1 -1
- package/dist/{index-C34csx3Z.js → index-C3ICQ6zz.js} +1 -1
- package/dist/index.js +26 -6
- package/dist/locators/index.js +1 -1
- package/dist/locators/playwright.js +1 -1
- package/dist/locators/preview.js +1 -1
- package/dist/locators/webdriverio.js +1 -1
- package/dist/providers.js +2 -1
- package/dist/{public-utils-xf4CCUzp.js → public-utils-DUr23h1p.js} +2 -2
- package/dist/utils.js +1 -1
- package/dist/{webdriver-BzjiKqT8.js → webdriver-BH7t2pDp.js} +63 -5
- package/package.json +12 -12
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { client } from '@vitest/browser/client'
|
|
2
2
|
|
|
3
3
|
function serializeError(unhandledError) {
|
|
4
4
|
const state = globalThis.__vitest_worker__
|
|
@@ -69,19 +69,6 @@ async function reportUnexpectedError(
|
|
|
69
69
|
await client.waitForConnection().then(() => {
|
|
70
70
|
return client.rpc.onUnhandledError(processedError, type)
|
|
71
71
|
}).catch(console.error)
|
|
72
|
-
const state = __vitest_browser_runner__
|
|
73
|
-
|
|
74
|
-
if (state.type === 'orchestrator') {
|
|
75
|
-
return
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
if (!state.runTests || !__vitest_worker__.current) {
|
|
79
|
-
channel.postMessage({
|
|
80
|
-
// TODO: what to do in this case now?
|
|
81
|
-
event: 'response:???',
|
|
82
|
-
iframeId: state.iframeId,
|
|
83
|
-
})
|
|
84
|
-
}
|
|
85
72
|
}
|
|
86
73
|
|
|
87
74
|
registerUnexpectedErrors()
|
package/dist/client.js
CHANGED
|
@@ -277,6 +277,23 @@ let setCancel = (_) => {};
|
|
|
277
277
|
const onCancel = new Promise((resolve) => {
|
|
278
278
|
setCancel = resolve;
|
|
279
279
|
});
|
|
280
|
+
function waitForOrchestrator() {
|
|
281
|
+
return new Promise((resolve, reject) => {
|
|
282
|
+
const type = getBrowserState().type;
|
|
283
|
+
if (type !== "orchestrator") {
|
|
284
|
+
reject(new TypeError("Only orchestrator can create testers."));
|
|
285
|
+
return;
|
|
286
|
+
}
|
|
287
|
+
function check() {
|
|
288
|
+
const orchestrator = getBrowserState().orchestrator;
|
|
289
|
+
if (orchestrator) {
|
|
290
|
+
return resolve(orchestrator);
|
|
291
|
+
}
|
|
292
|
+
setTimeout(check);
|
|
293
|
+
}
|
|
294
|
+
check();
|
|
295
|
+
});
|
|
296
|
+
}
|
|
280
297
|
function createClient() {
|
|
281
298
|
const reconnectInterval = 2e3;
|
|
282
299
|
const reconnectTries = 10;
|
|
@@ -290,17 +307,11 @@ function createClient() {
|
|
|
290
307
|
ctx.rpc = createBirpc({
|
|
291
308
|
onCancel: setCancel,
|
|
292
309
|
async createTesters(options) {
|
|
293
|
-
const orchestrator =
|
|
294
|
-
if (!orchestrator) {
|
|
295
|
-
throw new TypeError("Only orchestrator can create testers.");
|
|
296
|
-
}
|
|
310
|
+
const orchestrator = await waitForOrchestrator();
|
|
297
311
|
return orchestrator.createTesters(options);
|
|
298
312
|
},
|
|
299
313
|
async cleanupTesters() {
|
|
300
|
-
const orchestrator =
|
|
301
|
-
if (!orchestrator) {
|
|
302
|
-
throw new TypeError("Only orchestrator can cleanup testers.");
|
|
303
|
-
}
|
|
314
|
+
const orchestrator = await waitForOrchestrator();
|
|
304
315
|
return orchestrator.cleanupTesters();
|
|
305
316
|
},
|
|
306
317
|
cdpEvent(event, payload) {
|
package/dist/expect-element.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{expect,chai}from"vitest";import{k as kAriaCheckedRoles,i as getAriaChecked,j as getAriaRole,l as getAriaDisabled,m as beginAriaCaches,n as endAriaCaches,o as isElementVisible$1,p as getElementAccessibleDescription,q as getElementAccessibleErrorMessage,r as getElementAccessibleName,s as cssEscape}from"./public-utils-
|
|
1
|
+
import{expect,chai}from"vitest";import{k as kAriaCheckedRoles,i as getAriaChecked,j as getAriaRole,l as getAriaDisabled,m as beginAriaCaches,n as endAriaCaches,o as isElementVisible$1,p as getElementAccessibleDescription,q as getElementAccessibleErrorMessage,r as getElementAccessibleName,s as cssEscape}from"./public-utils-DUr23h1p.js";import{L as Locator,p as processTimeoutOptions}from"./index-C3ICQ6zz.js";import{server}from"@vitest/browser/context";import"vitest/utils";function getAriaCheckedRoles(){return[...kAriaCheckedRoles]}function getElementFromUserInput(_,K,q){if(_ instanceof Locator&&(_=_.element()),_ instanceof HTMLElement||_ instanceof SVGElement)return _;throw new UserInputElementTypeError(_,K,q)}function getNodeFromUserInput(_,K,q){if(_ instanceof Locator&&(_=_.element()),_ instanceof Node)return _;throw new UserInputNodeTypeError(_,K,q)}function getMessage(_,K,q,J,Y,X){return[`${K}\n`,`${q}:\n${_.utils.EXPECTED_COLOR(redent(display(_,J),2))}`,`${Y}:\n${_.utils.RECEIVED_COLOR(redent(display(_,X),2))}`].join(`
|
|
2
2
|
`)}function redent(_,K){return indentString(stripIndent(_),K)}function indentString(_,K){let q=/^(?!\s*$)/gm;return _.replace(q,` `.repeat(K))}function minIndent(_){let K=_.match(/^[ \t]*(?=\S)/gm);return K?K.reduce((_,K)=>Math.min(_,K.length),1/0):0}function stripIndent(_){let K=minIndent(_);if(K===0)return _;let q=RegExp(`^[ \\t]{${K}}`,`gm`);return _.replace(q,``)}function display(_,K){return typeof K==`string`?K:_.utils.stringify(K)}function toSentence(_,{wordConnector:K=`, `,lastWordConnector:q=` and `}={}){return[_.slice(0,-1).join(K),_[_.length-1]].join(_.length>1?q:``)}class GenericTypeError extends Error{constructor(_,K,q,J){super(),Error.captureStackTrace&&Error.captureStackTrace(this,q);let Y=``;try{Y=J.utils.printWithType(`Received`,K,J.utils.printReceived)}catch{}this.message=[J.utils.matcherHint(`${J.isNot?`.not`:``}.${q.name}`,`received`,``),``,`${J.utils.RECEIVED_COLOR(`received`)} value must ${_} or a Locator that returns ${_}.`,Y].join(`
|
|
3
3
|
`)}}class UserInputElementTypeError extends GenericTypeError{constructor(_,K,q){super(`an HTMLElement or an SVGElement`,_,K,q)}}class UserInputNodeTypeError extends GenericTypeError{constructor(_,K,q){super(`a Node`,_,K,q)}}function getTag(_){return _ instanceof HTMLFormElement?`FORM`:_.tagName.toUpperCase()}function isInputElement(_){return getTag(_)===`INPUT`}function getSingleElementValue(_){if(_)switch(getTag(_)){case`INPUT`:return getInputValue(_);case`SELECT`:return getSelectValue(_);default:return _.value??getAccessibleValue(_)}}function getSelectValue({multiple:_,options:K}){let q=[...K].filter(_=>_.selected);if(_)return[...q].map(_=>_.value);if(q.length!==0)return q[0].value}function getInputValue(_){switch(_.type){case`number`:return _.value===``?null:Number(_.value);case`checkbox`:return _.checked;default:return _.value}}const rolesSupportingValues=[`meter`,`progressbar`,`slider`,`spinbutton`];function getAccessibleValue(_){if(rolesSupportingValues.includes(_.getAttribute(`role`)||``))return Number(_.getAttribute(`aria-valuenow`))}function normalize(_){return _.replace(/\s+/g,` `).trim()}function matches(_,K){return K instanceof RegExp?K.test(_):_.includes(String(K))}function arrayAsSetComparison(_,K){if(Array.isArray(_)&&Array.isArray(K)){let q=new Set(K);for(let K of new Set(_))if(!q.has(K))return!1;return!0}}const supportedRoles=getAriaCheckedRoles();function toBeChecked(_){let K=getElementFromUserInput(_,toBeChecked,this),q=()=>isInputElement(K)&&[`checkbox`,`radio`].includes(K.type),X=()=>supportedRoles.includes(getAriaRole(K)||``)&&[`true`,`false`].includes(K.getAttribute(`aria-checked`)||``);if(!q()&&!X())return{pass:!1,message:()=>`only inputs with type="checkbox" or type="radio" or elements with ${supportedRolesSentence()} and a valid aria-checked attribute can be used with .toBeChecked(). Use .toHaveValue() instead`};let Z=getAriaChecked(K),Q=Z===!0;return{pass:Q,message:()=>{let _=Q?`is`:`is not`;return[this.utils.matcherHint(`${this.isNot?`.not`:``}.toBeChecked`,`element`,``),``,`Received element ${_} checked:`,` ${this.utils.printReceived(K.cloneNode(!1))}`].join(`
|
|
4
4
|
`)}}}function supportedRolesSentence(){return toSentence(supportedRoles.map(_=>`role="${_}"`),{lastWordConnector:` or `})}function toBeEmptyDOMElement(_){let K=getElementFromUserInput(_,toBeEmptyDOMElement,this);return{pass:isEmptyElement(K),message:()=>[this.utils.matcherHint(`${this.isNot?`.not`:``}.toBeEmptyDOMElement`,`element`,``),``,`Received:`,` ${this.utils.printReceived(K.innerHTML)}`].join(`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{server,page}from"@vitest/browser/context";import{I as Ivya,e as getByRoleSelector,c as getByAltTextSelector,f as getByLabelSelector,b as getByPlaceholderSelector,d as getByTestIdSelector,a as getByTextSelector,g as getByTitleSelector,h as getElementError}from"./public-utils-
|
|
1
|
+
import{server,page}from"@vitest/browser/context";import{I as Ivya,e as getByRoleSelector,c as getByAltTextSelector,f as getByLabelSelector,b as getByPlaceholderSelector,d as getByTestIdSelector,a as getByTextSelector,g as getByTitleSelector,h as getElementError}from"./public-utils-DUr23h1p.js";function ensureAwaited(e){let b=getWorkerState().current;if(!b||b.type!==`test`)return e();let x=!1,S=Error(`STACK_TRACE_ERROR`);b.onFinished??=[],b.onFinished.push(()=>{if(!x){let e=Error(`The call was not awaited. This method is asynchronous and must be awaited; otherwise, the call will not start to avoid unhandled rejections.`);throw e.stack=S.stack?.replace(S.message,e.message),e}});let C;return{then(b,w){return x=!0,(C||=e(S)).then(b,w)},catch(b){return(C||=e(S)).catch(b)},finally(b){return(C||=e(S)).finally(b)},[Symbol.toStringTag]:`Promise`}}function getBrowserState(){return window.__vitest_browser_runner__}function getWorkerState(){let e=window.__vitest_worker__;if(!e)throw Error(`Worker state is not found. This is an issue with Vitest. Please, open an issue.`);return e}const provider=getBrowserState().provider;function convertElementToCssSelector(e){if(!e||!(e instanceof Element))throw Error(`Expected DOM element to be an instance of Element, received ${typeof e}`);return getUniqueCssSelector(e)}function escapeIdForCSSSelector(e){return e.split(``).map(e=>{let b=e.charCodeAt(0);return e===` `||e===`#`||e===`.`||e===`:`||e===`[`||e===`]`||e===`>`||e===`+`||e===`~`||e===`\\`?`\\${e}`:b>=65536?`\\${b.toString(16).toUpperCase().padStart(6,`0`)} `:b<32||b===127||b>=128?`\\${b.toString(16).toUpperCase().padStart(2,`0`)} `:e}).join(``)}function getUniqueCssSelector(e){let b=[],x,S=!1;for(;x=getParent(e);){x.shadowRoot&&(S=!0);let C=e.tagName;if(e.id)b.push(`#${escapeIdForCSSSelector(e.id)}`);else if(!e.nextElementSibling&&!e.previousElementSibling)b.push(C.toLowerCase());else{let S=0,w=0,T=0;for(let b of x.children)S++,b.tagName===C&&w++,b===e&&(T=S);w>1?b.push(`${C.toLowerCase()}:nth-child(${T})`):b.push(C.toLowerCase())}e=x}return`${getBrowserState().provider===`webdriverio`&&S?`>>>`:``}${b.reverse().join(` > `)}`}function getParent(e){let b=e.parentNode;return b instanceof ShadowRoot?b.host:b}const now=Date.now;function processTimeoutOptions(e){if(e&&e.timeout!=null||provider!==`playwright`||getWorkerState().config.browser.providerOptions.actionTimeout!=null)return e;let b=getBrowserState().runner,x=b._currentTaskStartTime;if(!x)return e;let S=b._currentTaskTimeout;if(S===0||S==null||S===1/0)return e;e||={};let C=now(),w=x+S,T=w-C;return T<=0||(e.timeout=T-100),e}function getIframeScale(){let e=window.parent.document.querySelector(`iframe[data-vitest]`)?.parentElement;if(!e)throw Error(`Cannot find Tester element. This is a bug in Vitest. Please, open a new issue with reproduction.`);let b=e.getAttribute(`data-scale`),x=Number(b);if(Number.isNaN(x))throw TypeError(`Cannot parse scale value from Tester element (${b}). This is a bug in Vitest. Please, open a new issue with reproduction.`);return x}function escapeRegexForSelector(e){return e.unicode||e.unicodeSets?String(e):String(e).replace(/(^|[^\\])(\\\\)*(["'`])/g,`$1$2\\$3`).replace(/>>/g,`\\>\\>`)}function escapeForTextSelector(e,b){return typeof e==`string`?`${JSON.stringify(e)}i`:escapeRegexForSelector(e)}const selectorEngine=Ivya.create({browser:(e=>{switch(e){case`edge`:case`chrome`:return`chromium`;case`safari`:return`webkit`;default:return e}})(server.config.browser.name),testIdAttribute:server.config.browser.locators.testIdAttribute});class Locator{_parsedSelector;_container;_pwSelector;click(e={}){return this.triggerCommand(`__vitest_click`,this.selector,e)}dblClick(e={}){return this.triggerCommand(`__vitest_dblClick`,this.selector,e)}tripleClick(e={}){return this.triggerCommand(`__vitest_tripleClick`,this.selector,e)}clear(e){return this.triggerCommand(`__vitest_clear`,this.selector,e)}hover(e){return this.triggerCommand(`__vitest_hover`,this.selector,e)}unhover(e){return this.triggerCommand(`__vitest_hover`,`html > body`,e)}fill(e,b){return this.triggerCommand(`__vitest_fill`,this.selector,e,b)}async upload(e,b){let x=(Array.isArray(e)?e:[e]).map(async e=>{if(typeof e==`string`)return e;let b=await new Promise((b,x)=>{let S=new FileReader;S.onload=()=>b(S.result),S.onerror=()=>x(Error(`Failed to read file: ${e.name}`)),S.readAsDataURL(e)});return{name:e.name,mimeType:e.type,base64:b}});return this.triggerCommand(`__vitest_upload`,this.selector,await Promise.all(x),b)}dropTo(e,b={}){return this.triggerCommand(`__vitest_dragAndDrop`,this.selector,e.selector,b)}selectOptions(e,b){let x=(Array.isArray(e)?e:[e]).map(e=>{if(typeof e!=`string`){let b=`element`in e?e.selector:selectorEngine.generateSelectorSimple(e);return{element:b}}return e});return this.triggerCommand(`__vitest_selectOptions`,this.selector,x,b)}screenshot(e){return page.screenshot({...e,element:this})}getByRole(e,b){return this.locator(getByRoleSelector(e,b))}getByAltText(e,b){return this.locator(getByAltTextSelector(e,b))}getByLabelText(e,b){return this.locator(getByLabelSelector(e,b))}getByPlaceholder(e,b){return this.locator(getByPlaceholderSelector(e,b))}getByTestId(b){return this.locator(getByTestIdSelector(server.config.browser.locators.testIdAttribute,b))}getByText(e,b){return this.locator(getByTextSelector(e,b))}getByTitle(e,b){return this.locator(getByTitleSelector(e,b))}filter(e){let b=[];if(e?.hasText&&b.push(`internal:has-text=${escapeForTextSelector(e.hasText)}`),e?.hasNotText&&b.push(`internal:has-not-text=${escapeForTextSelector(e.hasNotText)}`),e?.has){let x=e.has;b.push(`internal:has=${JSON.stringify(x._pwSelector||x.selector)}`)}if(e?.hasNot){let x=e.hasNot;b.push(`internal:has-not=${JSON.stringify(x._pwSelector||x.selector)}`)}if(!b.length)throw Error(`Locator.filter expects at least one filter. None provided.`);return this.locator(b.join(` >> `))}and(e){return this.locator(`internal:and=${JSON.stringify(e._pwSelector||e.selector)}`)}or(e){return this.locator(`internal:or=${JSON.stringify(e._pwSelector||e.selector)}`)}query(){let e=this._parsedSelector||=selectorEngine.parseSelector(this._pwSelector||this.selector);return selectorEngine.querySelector(e,document.documentElement,!0)}element(){let e=this.query();if(!e)throw getElementError(this._pwSelector||this.selector,this._container||document.body);return e}elements(){let e=this._parsedSelector||=selectorEngine.parseSelector(this._pwSelector||this.selector);return selectorEngine.querySelectorAll(e,document.documentElement)}all(){return this.elements().map(e=>this.elementLocator(e))}nth(e){return this.locator(`nth=${e}`)}first(){return this.nth(0)}last(){return this.nth(-1)}toString(){return this.selector}toJSON(){return this.selector}triggerCommand(e,...b){let x=getBrowserState().commands;return ensureAwaited(S=>x.triggerCommand(e,b,S))}}export{Locator as L,getBrowserState as a,convertElementToCssSelector as c,getIframeScale as g,processTimeoutOptions as p,selectorEngine as s};
|
package/dist/index.js
CHANGED
|
@@ -13,12 +13,12 @@ import { fileURLToPath } from 'node:url';
|
|
|
13
13
|
import crypto from 'node:crypto';
|
|
14
14
|
import { mkdir, readFile as readFile$1 } from 'node:fs/promises';
|
|
15
15
|
import { parseErrorStacktrace, parseStacktrace } from '@vitest/utils/source-map';
|
|
16
|
-
import { P as PlaywrightBrowserProvider, W as WebdriverBrowserProvider } from './webdriver-
|
|
16
|
+
import { P as PlaywrightBrowserProvider, W as WebdriverBrowserProvider } from './webdriver-BH7t2pDp.js';
|
|
17
17
|
import { resolve as resolve$1, dirname as dirname$1, basename as basename$1, normalize as normalize$1 } from 'node:path';
|
|
18
18
|
import { WebSocketServer } from 'ws';
|
|
19
19
|
import * as nodeos from 'node:os';
|
|
20
20
|
|
|
21
|
-
var version = "3.1.
|
|
21
|
+
var version = "3.1.3";
|
|
22
22
|
|
|
23
23
|
const _DRIVE_LETTER_START_RE = /^[A-Za-z]:\//;
|
|
24
24
|
function normalizeWindowsPath(input = "") {
|
|
@@ -360,6 +360,9 @@ async function resolveOrchestrator(globalServer, url, res) {
|
|
|
360
360
|
if (!browserProject) {
|
|
361
361
|
return;
|
|
362
362
|
}
|
|
363
|
+
if (sessionId && sessionId !== "none" && !globalServer.vitest._browserSessions.sessionIds.has(sessionId)) {
|
|
364
|
+
return;
|
|
365
|
+
}
|
|
363
366
|
const injectorJs = typeof globalServer.injectorJs === "string" ? globalServer.injectorJs : await globalServer.injectorJs;
|
|
364
367
|
const injector = replacer(injectorJs, {
|
|
365
368
|
__VITEST_PROVIDER__: JSON.stringify(browserProject.config.browser.provider || "preview"),
|
|
@@ -2442,7 +2445,7 @@ const type = async (context, selector, text, options = {}) => {
|
|
|
2442
2445
|
return { unreleased: Array.from(unreleased) };
|
|
2443
2446
|
};
|
|
2444
2447
|
|
|
2445
|
-
const upload = async (context, selector, files) => {
|
|
2448
|
+
const upload = async (context, selector, files, options) => {
|
|
2446
2449
|
const testPath = context.testPath;
|
|
2447
2450
|
if (!testPath) {
|
|
2448
2451
|
throw new Error(`Cannot upload files outside of a test`);
|
|
@@ -2460,7 +2463,7 @@ const upload = async (context, selector, files) => {
|
|
|
2460
2463
|
buffer: Buffer.from(file.base64, "base64")
|
|
2461
2464
|
};
|
|
2462
2465
|
});
|
|
2463
|
-
await iframe.locator(selector).setInputFiles(playwrightFiles);
|
|
2466
|
+
await iframe.locator(selector).setInputFiles(playwrightFiles, options);
|
|
2464
2467
|
} else if (context.provider instanceof WebdriverBrowserProvider) {
|
|
2465
2468
|
for (const file of files) {
|
|
2466
2469
|
if (typeof file !== "string") {
|
|
@@ -2623,7 +2626,7 @@ class ParentBrowserProject {
|
|
|
2623
2626
|
if (mod) {
|
|
2624
2627
|
return id;
|
|
2625
2628
|
}
|
|
2626
|
-
const resolvedPath = resolve(
|
|
2629
|
+
const resolvedPath = resolve(this.vite.config.root, id.slice(1));
|
|
2627
2630
|
const modUrl = this.vite.moduleGraph.getModuleById(resolvedPath);
|
|
2628
2631
|
if (modUrl) {
|
|
2629
2632
|
return resolvedPath;
|
|
@@ -2951,6 +2954,10 @@ function setupBrowserRpc(globalServer, defaultMockerRegistry) {
|
|
|
2951
2954
|
if (!sessionId || !rpcId || projectName == null) {
|
|
2952
2955
|
return error(new Error(`[vitest] Invalid URL ${request.url}. "projectName", "sessionId" and "rpcId" queries are required.`));
|
|
2953
2956
|
}
|
|
2957
|
+
if (!vitest._browserSessions.sessionIds.has(sessionId)) {
|
|
2958
|
+
const ids = [...vitest._browserSessions.sessionIds].join(", ");
|
|
2959
|
+
return error(new Error(`[vitest] Unknown session id "${sessionId}". Expected one of ${ids}.`));
|
|
2960
|
+
}
|
|
2954
2961
|
if (type === "orchestrator") {
|
|
2955
2962
|
const session = vitest._browserSessions.getSession(sessionId);
|
|
2956
2963
|
session?.connected();
|
|
@@ -3252,6 +3259,7 @@ function createBrowserPool(vitest) {
|
|
|
3252
3259
|
if (isCancelled) {
|
|
3253
3260
|
return;
|
|
3254
3261
|
}
|
|
3262
|
+
debug?.("provider is ready for %s project", project.name);
|
|
3255
3263
|
const pool = ensurePool(project);
|
|
3256
3264
|
vitest.state.clearFiles(project, files);
|
|
3257
3265
|
providers.add(project.browser.provider);
|
|
@@ -3272,12 +3280,14 @@ function createBrowserPool(vitest) {
|
|
|
3272
3280
|
name: "browser",
|
|
3273
3281
|
async close() {
|
|
3274
3282
|
await Promise.all([...providers].map((provider) => provider.close()));
|
|
3283
|
+
vitest._browserSessions.sessionIds.clear();
|
|
3275
3284
|
providers.clear();
|
|
3276
3285
|
vitest.projects.forEach((project) => {
|
|
3277
3286
|
project.browser?.state.orchestrators.forEach((orchestrator) => {
|
|
3278
3287
|
orchestrator.$close();
|
|
3279
3288
|
});
|
|
3280
3289
|
});
|
|
3290
|
+
debug?.("browser pool closed all providers");
|
|
3281
3291
|
},
|
|
3282
3292
|
runTests: (files) => runWorkspaceTests("run", files),
|
|
3283
3293
|
collectTests: (files) => runWorkspaceTests("collect", files)
|
|
@@ -3309,6 +3319,7 @@ class BrowserPool {
|
|
|
3309
3319
|
async runTests(method, files) {
|
|
3310
3320
|
this._promise ??= createDefer();
|
|
3311
3321
|
if (!files.length) {
|
|
3322
|
+
debug?.("no tests found, finishing test run immediately");
|
|
3312
3323
|
this._promise.resolve();
|
|
3313
3324
|
return this._promise;
|
|
3314
3325
|
}
|
|
@@ -3321,18 +3332,23 @@ class BrowserPool {
|
|
|
3321
3332
|
}
|
|
3322
3333
|
});
|
|
3323
3334
|
if (this.orchestrators.size >= this.options.maxWorkers) {
|
|
3335
|
+
debug?.("all orchestrators are ready, not creating more");
|
|
3324
3336
|
return this._promise;
|
|
3325
3337
|
}
|
|
3326
3338
|
const workerCount = Math.min(this.options.maxWorkers - this.orchestrators.size, files.length);
|
|
3327
3339
|
const promises = [];
|
|
3328
3340
|
for (let i = 0; i < workerCount; i++) {
|
|
3329
3341
|
const sessionId = crypto.randomUUID();
|
|
3342
|
+
this.project.vitest._browserSessions.sessionIds.add(sessionId);
|
|
3343
|
+
const project = this.project.name;
|
|
3344
|
+
debug?.("[%s] creating session for %s", sessionId, project);
|
|
3330
3345
|
const page = this.openPage(sessionId).then(() => {
|
|
3331
3346
|
this.runNextTest(method, sessionId);
|
|
3332
3347
|
});
|
|
3333
3348
|
promises.push(page);
|
|
3334
3349
|
}
|
|
3335
3350
|
await Promise.all(promises);
|
|
3351
|
+
debug?.("all sessions are created");
|
|
3336
3352
|
return this._promise;
|
|
3337
3353
|
}
|
|
3338
3354
|
async openPage(sessionId) {
|
|
@@ -3354,7 +3370,9 @@ class BrowserPool {
|
|
|
3354
3370
|
if (this.readySessions.size === this.orchestrators.size) {
|
|
3355
3371
|
this._promise?.resolve();
|
|
3356
3372
|
this._promise = undefined;
|
|
3357
|
-
debug?.("all tests finished running");
|
|
3373
|
+
debug?.("[%s] all tests finished running", sessionId);
|
|
3374
|
+
} else {
|
|
3375
|
+
debug?.(`did not finish sessions for ${sessionId}: |ready - %s| |overall - %s|`, [...this.readySessions].join(", "), [...this.orchestrators.keys()].join(", "));
|
|
3358
3376
|
}
|
|
3359
3377
|
}
|
|
3360
3378
|
runNextTest(method, sessionId) {
|
|
@@ -3388,6 +3406,7 @@ class BrowserPool {
|
|
|
3388
3406
|
this.cancel();
|
|
3389
3407
|
this._promise?.resolve();
|
|
3390
3408
|
this._promise = undefined;
|
|
3409
|
+
debug?.("[%s] browser connection was closed", sessionId);
|
|
3391
3410
|
return;
|
|
3392
3411
|
}
|
|
3393
3412
|
debug?.("[%s] error during %s test run: %s", sessionId, file, error);
|
|
@@ -3425,6 +3444,7 @@ async function createBrowserServer(project, configFile, prePlugins = [], postPlu
|
|
|
3425
3444
|
const vite = await createViteServer({
|
|
3426
3445
|
...project.options,
|
|
3427
3446
|
base: "/",
|
|
3447
|
+
root: project.config.root,
|
|
3428
3448
|
logLevel,
|
|
3429
3449
|
customLogger: {
|
|
3430
3450
|
...logger,
|
package/dist/locators/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import"@vitest/browser/context";import"../public-utils-
|
|
1
|
+
import"@vitest/browser/context";import"../public-utils-DUr23h1p.js";export{L as Locator,s as selectorEngine}from"../index-C3ICQ6zz.js";import"vitest/utils";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{page,server}from"@vitest/browser/context";import{g as getByTitleSelector,a as getByTextSelector,b as getByPlaceholderSelector,c as getByAltTextSelector,d as getByTestIdSelector,e as getByRoleSelector,f as getByLabelSelector}from"../public-utils-
|
|
1
|
+
import{page,server}from"@vitest/browser/context";import{g as getByTitleSelector,a as getByTextSelector,b as getByPlaceholderSelector,c as getByAltTextSelector,d as getByTestIdSelector,e as getByRoleSelector,f as getByLabelSelector}from"../public-utils-DUr23h1p.js";import{s as selectorEngine,L as Locator,p as processTimeoutOptions,g as getIframeScale}from"../index-C3ICQ6zz.js";import"vitest/utils";page.extend({getByLabelText(e,_){return new PlaywrightLocator(getByLabelSelector(e,_))},getByRole(e,_){return new PlaywrightLocator(getByRoleSelector(e,_))},getByTestId(e){return new PlaywrightLocator(getByTestIdSelector(server.config.browser.locators.testIdAttribute,e))},getByAltText(e,_){return new PlaywrightLocator(getByAltTextSelector(e,_))},getByPlaceholder(e,_){return new PlaywrightLocator(getByPlaceholderSelector(e,_))},getByText(e,_){return new PlaywrightLocator(getByTextSelector(e,_))},getByTitle(e,_){return new PlaywrightLocator(getByTitleSelector(e,_))},elementLocator(e){return new PlaywrightLocator(selectorEngine.generateSelectorSimple(e),e)}});class PlaywrightLocator extends Locator{constructor(e,_){super(),this.selector=e,this._container=_}click(e){return super.click(processTimeoutOptions(processClickOptions(e)))}dblClick(e){return super.dblClick(processTimeoutOptions(processClickOptions(e)))}tripleClick(e){return super.tripleClick(processTimeoutOptions(processClickOptions(e)))}selectOptions(e,_){return super.selectOptions(e,processTimeoutOptions(_))}clear(e){return super.clear(processTimeoutOptions(e))}hover(e){return super.hover(processTimeoutOptions(processHoverOptions(e)))}upload(e,_){return super.upload(e,processTimeoutOptions(_))}fill(e,_){return super.fill(e,processTimeoutOptions(_))}dropTo(e,_){return super.dropTo(e,processTimeoutOptions(processDragAndDropOptions(_)))}locator(e){return new PlaywrightLocator(`${this.selector} >> ${e}`,this._container)}elementLocator(e){return new PlaywrightLocator(selectorEngine.generateSelectorSimple(e),e)}}function processDragAndDropOptions(e){if(!e)return e;let _=e;return _.sourcePosition&&=processPlaywrightPosition(_.sourcePosition),_.targetPosition&&=processPlaywrightPosition(_.targetPosition),e}function processHoverOptions(e){if(!e)return e;let _=e;return _.position&&=processPlaywrightPosition(_.position),e}function processClickOptions(e){if(!e)return e;let _=e;return _.position&&=processPlaywrightPosition(_.position),_}function processPlaywrightPosition(e){let _=getIframeScale();return e.x!=null&&(e.x*=_),e.y!=null&&(e.y*=_),e}
|
package/dist/locators/preview.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{page,server,userEvent}from"@vitest/browser/context";import{g as getByTitleSelector,a as getByTextSelector,b as getByPlaceholderSelector,c as getByAltTextSelector,d as getByTestIdSelector,e as getByRoleSelector,f as getByLabelSelector,h as getElementError}from"../public-utils-
|
|
1
|
+
import{page,server,userEvent}from"@vitest/browser/context";import{g as getByTitleSelector,a as getByTextSelector,b as getByPlaceholderSelector,c as getByAltTextSelector,d as getByTestIdSelector,e as getByRoleSelector,f as getByLabelSelector,h as getElementError}from"../public-utils-DUr23h1p.js";import{s as selectorEngine,L as Locator,c as convertElementToCssSelector}from"../index-C3ICQ6zz.js";import"vitest/utils";page.extend({getByLabelText(e,m){return new PreviewLocator(getByLabelSelector(e,m))},getByRole(e,m){return new PreviewLocator(getByRoleSelector(e,m))},getByTestId(e){return new PreviewLocator(getByTestIdSelector(server.config.browser.locators.testIdAttribute,e))},getByAltText(e,m){return new PreviewLocator(getByAltTextSelector(e,m))},getByPlaceholder(e,m){return new PreviewLocator(getByPlaceholderSelector(e,m))},getByText(e,m){return new PreviewLocator(getByTextSelector(e,m))},getByTitle(e,m){return new PreviewLocator(getByTitleSelector(e,m))},elementLocator(e){return new PreviewLocator(selectorEngine.generateSelectorSimple(e),e)}});class PreviewLocator extends Locator{constructor(e,m){super(),this._pwSelector=e,this._container=m}get selector(){let e=this.elements().map(e=>convertElementToCssSelector(e));if(!e.length)throw getElementError(this._pwSelector,this._container||document.body);return e.join(`, `)}click(){return userEvent.click(this.element())}dblClick(){return userEvent.dblClick(this.element())}tripleClick(){return userEvent.tripleClick(this.element())}hover(){return userEvent.hover(this.element())}unhover(){return userEvent.unhover(this.element())}async fill(e){return userEvent.fill(this.element(),e)}async upload(e){return userEvent.upload(this.element(),e)}selectOptions(e){return userEvent.selectOptions(this.element(),e)}clear(){return userEvent.clear(this.element())}locator(e){return new PreviewLocator(`${this._pwSelector} >> ${e}`,this._container)}elementLocator(e){return new PreviewLocator(selectorEngine.generateSelectorSimple(e),e)}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{page,server}from"@vitest/browser/context";import{g as getByTitleSelector,a as getByTextSelector,b as getByPlaceholderSelector,c as getByAltTextSelector,d as getByTestIdSelector,e as getByRoleSelector,f as getByLabelSelector,h as getElementError}from"../public-utils-
|
|
1
|
+
import{page,server}from"@vitest/browser/context";import{g as getByTitleSelector,a as getByTextSelector,b as getByPlaceholderSelector,c as getByAltTextSelector,d as getByTestIdSelector,e as getByRoleSelector,f as getByLabelSelector,h as getElementError}from"../public-utils-DUr23h1p.js";import{s as selectorEngine,L as Locator,c as convertElementToCssSelector,a as getBrowserState,g as getIframeScale}from"../index-C3ICQ6zz.js";import"vitest/utils";page.extend({getByLabelText(e,g){return new WebdriverIOLocator(getByLabelSelector(e,g))},getByRole(e,g){return new WebdriverIOLocator(getByRoleSelector(e,g))},getByTestId(e){return new WebdriverIOLocator(getByTestIdSelector(server.config.browser.locators.testIdAttribute,e))},getByAltText(e,g){return new WebdriverIOLocator(getByAltTextSelector(e,g))},getByPlaceholder(e,g){return new WebdriverIOLocator(getByPlaceholderSelector(e,g))},getByText(e,g){return new WebdriverIOLocator(getByTextSelector(e,g))},getByTitle(e,g){return new WebdriverIOLocator(getByTitleSelector(e,g))},elementLocator(e){return new WebdriverIOLocator(selectorEngine.generateSelectorSimple(e))}});class WebdriverIOLocator extends Locator{constructor(e,g){super(),this._pwSelector=e,this._container=g}get selector(){let e=this.elements().map(e=>convertElementToCssSelector(e));if(!e.length)throw getElementError(this._pwSelector,this._container||document.body);return e.join(`, `)}click(e){return super.click(processClickOptions(e))}dblClick(e){return super.dblClick(processClickOptions(e))}tripleClick(e){return super.tripleClick(processClickOptions(e))}selectOptions(e,g){let _=getWebdriverioSelectOptions(this.element(),e);return this.triggerCommand(`__vitest_selectOptions`,this.selector,_,g)}hover(e){return super.hover(processHoverOptions(e))}dropTo(e,g){return super.dropTo(e,processDragAndDropOptions(g))}locator(e){return new WebdriverIOLocator(`${this._pwSelector} >> ${e}`,this._container)}elementLocator(e){return new WebdriverIOLocator(selectorEngine.generateSelectorSimple(e),e)}}function getWebdriverioSelectOptions(e,g){let _=[...e.querySelectorAll(`option`)],v=Array.isArray(g)?g:[g];if(!v.length)return[];if(v.length>1)throw Error(`Provider "webdriverio" doesn't support selecting multiple values at once`);let y=v[0];if(typeof y!=`string`){let e=`element`in y?y.element():y,g=_.indexOf(e);if(g===-1)throw Error(`The element ${selectorEngine.previewNode(e)} was not found in the "select" options.`);return[{index:g}]}let b=_.findIndex(e=>e.value===y);if(b!==-1)return[{index:b}];let x=_.findIndex(e=>e.textContent?.trim()===y||e.ariaLabel===y);if(x===-1)throw Error(`The option "${y}" was not found in the "select" options.`);return[{index:x}]}function processClickOptions(e){if(!e||!getBrowserState().config.browser.ui)return e;let g=e;if(g.x!=null||g.y!=null){let e={};g.x!=null&&(g.x=scaleCoordinate(g.x,e)),g.y!=null&&(g.y=scaleCoordinate(g.y,e))}return e}function processHoverOptions(e){if(!e||!getBrowserState().config.browser.ui)return e;let g=e,_={};return g.xOffset!=null&&(g.xOffset=scaleCoordinate(g.xOffset,_)),g.yOffset!=null&&(g.yOffset=scaleCoordinate(g.yOffset,_)),e}function processDragAndDropOptions(e){if(!e||!getBrowserState().config.browser.ui)return e;let g={},_=e;return _.sourceX!=null&&(_.sourceX=scaleCoordinate(_.sourceX,g)),_.sourceY!=null&&(_.sourceY=scaleCoordinate(_.sourceY,g)),_.targetX!=null&&(_.targetX=scaleCoordinate(_.targetX,g)),_.targetY!=null&&(_.targetY=scaleCoordinate(_.targetY,g)),e}function scaleCoordinate(e,g){return Math.round(e*getCachedScale(g))}function getCachedScale(e){return e.scale??=getIframeScale()}
|
package/dist/providers.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { W as WebdriverBrowserProvider, P as PlaywrightBrowserProvider } from './webdriver-
|
|
1
|
+
import { W as WebdriverBrowserProvider, P as PlaywrightBrowserProvider } from './webdriver-BH7t2pDp.js';
|
|
2
2
|
import '@vitest/mocker/node';
|
|
3
|
+
import 'vitest/node';
|
|
3
4
|
|
|
4
5
|
class PreviewBrowserProvider {
|
|
5
6
|
name = "preview";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import{page}from"@vitest/browser/context";import{stringify}from"vitest/utils";var __defProp=Object.defineProperty,__defNormalProp=(e,w,E)=>w in e?__defProp(e,w,{enumerable:!0,configurable:!0,writable:!0,value:E}):e[w]=E,__publicField=(e,w,T)=>__defNormalProp(e,typeof w==`symbol`?w:w+``,T);function escapeWithQuotes(e,w=`'`){let T=JSON.stringify(e),E=T.substring(1,T.length-1).replace(/\\"/g,`"`);if(w===`'`)return w+E.replace(/'/g,`\\'`)+w;if(w===`"`)return w+E.replace(/"/g,`\\"`)+w;if(w==="`")return w+E.replace(/`/g,"`")+w;throw Error(`Invalid escape char`)}function cssEscape(e){let w=``;for(let T=0;T<e.length;T++)w+=cssEscapeOne(e,T);return w}function quoteCSSAttributeValue(e){return`"${cssEscape(e).replace(/\\ /g,` `)}"`}function cssEscapeOne(e,w){let T=e.charCodeAt(w);return T===0?`�`:T>=1&&T<=31||T>=48&&T<=57&&(w===0||w===1&&e.charCodeAt(0)===45)?`\\${T.toString(16)} `:w===0&&T===45&&e.length===1?`\\${e.charAt(w)}`:T>=128||T===45||T===95||T>=48&&T<=57||T>=65&&T<=90||T>=97&&T<=122?e.charAt(w):`\\${e.charAt(w)}`}function normalizeWhiteSpace(e){let w=e.replace(/[\u200b\u00ad]/g,``).trim().replace(/\s+/g,` `);return w}function normalizeEscapedRegexQuotes(e){return e.replace(/(^|[^\\])(\\\\)*\\(['"`])/g,`$1$2$3`)}function escapeRegexForSelector(e){return e.unicode||e.unicodeSets?String(e):String(e).replace(/(^|[^\\])(\\\\)*(["'`])/g,`$1$2\\$3`).replace(/>>/g,`\\>\\>`)}function escapeForTextSelector(e,w){return typeof e==`string`?`${JSON.stringify(e)}${w?`s`:`i`}`:escapeRegexForSelector(e)}function escapeForAttributeSelector(e,w){return typeof e==`string`?`"${e.replace(/\\/g,`\\\\`).replace(/"/g,`\\"`)}"${w?`s`:`i`}`:escapeRegexForSelector(e)}function trimString(e,w,T=``){if(e.length<=w)return e;let E=[...e];return E.length>w?E.slice(0,w-T.length).join(``)+T:E.join(``)}function trimStringWithEllipsis(e,w){return trimString(e,w,`…`)}function escapeRegExp(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}var between=function(e,w,T){return e>=w&&e<=T};function digit(e){return between(e,48,57)}function hexdigit(e){return digit(e)||between(e,65,70)||between(e,97,102)}function uppercaseletter(e){return between(e,65,90)}function lowercaseletter(e){return between(e,97,122)}function letter(e){return uppercaseletter(e)||lowercaseletter(e)}function nonascii(e){return e>=128}function namestartchar(e){return letter(e)||nonascii(e)||e===95}function namechar(e){return namestartchar(e)||digit(e)||e===45}function nonprintable(e){return between(e,0,8)||e===11||between(e,14,31)||e===127}function newline(e){return e===10}function whitespace(e){return newline(e)||e===9||e===32}var maximumallowedcodepoint=1114111,InvalidCharacterError=class extends Error{constructor(e){super(e),this.name=`InvalidCharacterError`}};function preprocess(e){let w=[];for(let T=0;T<e.length;T++){let E=e.charCodeAt(T);if(E===13&&e.charCodeAt(T+1)===10&&(E=10,T++),(E===13||E===12)&&(E=10),E===0&&(E=65533),between(E,55296,56319)&&between(e.charCodeAt(T+1),56320,57343)){let w=E-55296,D=e.charCodeAt(T+1)-56320;E=2**16+w*2**10+D,T++}w.push(E)}return w}function stringFromCode(e){if(e<=65535)return String.fromCharCode(e);e-=2**16;let w=Math.floor(e/2**10)+55296,T=e%2**10+56320;return String.fromCharCode(w)+String.fromCharCode(T)}function tokenize(e){let w=preprocess(e),T=-1,E=[],D,O=function(e){return e>=w.length?-1:w[e]},k=function(e){if(e===void 0&&(e=1),e>3)throw`Spec Error: no more than three codepoints of lookahead.`;return O(T+e)},A=function(e){return e===void 0&&(e=1),T+=e,D=O(T),!0},j=function(){return--T,!0},M=function(e){return e===void 0&&(e=D),e===-1},N=function(){if(P(),A(),whitespace(D)){for(;whitespace(k());)A();return new WhitespaceToken}else if(D===34)return L();else if(D===35)if(namechar(k())||B(k(1),k(2))){let e=new HashToken(``);return W(k(1),k(2),k(3))&&(e.type=`id`),e.value=Y(),e}else return new DelimToken(D);else if(D===36)return k()===61?(A(),new SuffixMatchToken):new DelimToken(D);else if(D===39)return L();else if(D===40)return new OpenParenToken;else if(D===41)return new CloseParenToken;else if(D===42)return k()===61?(A(),new SubstringMatchToken):new DelimToken(D);else if(D===43)return J()?(j(),F()):new DelimToken(D);else if(D===44)return new CommaToken;else if(D===45)return J()?(j(),F()):k(1)===45&&k(2)===62?(A(2),new CDCToken):G()?(j(),I()):new DelimToken(D);else if(D===46)return J()?(j(),F()):new DelimToken(D);else if(D===58)return new ColonToken;else if(D===59)return new SemicolonToken;else if(D===60)return k(1)===33&&k(2)===45&&k(3)===45?(A(3),new CDOToken):new DelimToken(D);else if(D===64)return W(k(1),k(2),k(3))?new AtKeywordToken(Y()):new DelimToken(D);else if(D===91)return new OpenSquareToken;else if(D===92)return U()?(j(),I()):new DelimToken(D);else if(D===93)return new CloseSquareToken;else if(D===94)return k()===61?(A(),new PrefixMatchToken):new DelimToken(D);else if(D===123)return new OpenCurlyToken;else if(D===124)return k()===61?(A(),new DashMatchToken):k()===124?(A(),new ColumnToken):new DelimToken(D);else if(D===125)return new CloseCurlyToken;else if(D===126)return k()===61?(A(),new IncludeMatchToken):new DelimToken(D);else if(digit(D))return j(),F();else if(namestartchar(D))return j(),I();else if(M())return new EOFToken;else return new DelimToken(D)},P=function(){for(;k(1)===47&&k(2)===42;)for(A(2);;)if(A(),D===42&&k()===47){A();break}else if(M())return},F=function(){let e=X();if(W(k(1),k(2),k(3))){let w=new DimensionToken;return w.value=e.value,w.repr=e.repr,w.type=e.type,w.unit=Y(),w}else if(k()===37){A();let w=new PercentageToken;return w.value=e.value,w.repr=e.repr,w}else{let w=new NumberToken;return w.value=e.value,w.repr=e.repr,w.type=e.type,w}},I=function(){let e=Y();if(e.toLowerCase()===`url`&&k()===40){for(A();whitespace(k(1))&&whitespace(k(2));)A();return k()===34||k()===39||whitespace(k())&&(k(2)===34||k(2)===39)?new FunctionToken(e):R()}else if(k()===40)return A(),new FunctionToken(e);else return new IdentToken(e)},L=function(e){e===void 0&&(e=D);let w=``;for(;A();){if(D===e||M())return new StringToken(w);if(newline(D))return j(),new BadStringToken;D===92?M(k())||(newline(k())?A():w+=stringFromCode(z())):w+=stringFromCode(D)}throw Error(`Internal error`)},R=function(){let e=new URLToken(``);for(;whitespace(k());)A();if(M(k()))return e;for(;A();){if(D===41||M())return e;if(whitespace(D)){for(;whitespace(k());)A();return k()===41||M(k())?(A(),e):(Q(),new BadURLToken)}else if(D===34||D===39||D===40||nonprintable(D))return Q(),new BadURLToken;else if(D===92)if(U())e.value+=stringFromCode(z());else return Q(),new BadURLToken;else e.value+=stringFromCode(D)}throw Error(`Internal error`)},z=function(){if(A(),hexdigit(D)){let e=[D];for(let w=0;w<5&&hexdigit(k());w++)A(),e.push(D);whitespace(k())&&A();let w=Number.parseInt(e.map(e=>String.fromCharCode(e)).join(``),16);return w>maximumallowedcodepoint&&(w=65533),w}else if(M())return 65533;else return D},B=function(e,w){return!(e!==92||newline(w))},U=function(){return B(D,k())},W=function(e,w,T){return e===45?namestartchar(w)||w===45||B(w,T):namestartchar(e)?!0:e===92?B(e,w):!1},G=function(){return W(D,k(1),k(2))},K=function(e,w,T){return e===43||e===45?!!(digit(w)||w===46&&digit(T)):e===46?!!digit(w):!!digit(e)},J=function(){return K(D,k(1),k(2))},Y=function(){let e=``;for(;A();)if(namechar(D))e+=stringFromCode(D);else if(U())e+=stringFromCode(z());else return j(),e;throw Error(`Internal parse error`)},X=function(){let e=``,w=`integer`;for((k()===43||k()===45)&&(A(),e+=stringFromCode(D));digit(k());)A(),e+=stringFromCode(D);if(k(1)===46&&digit(k(2)))for(A(),e+=stringFromCode(D),A(),e+=stringFromCode(D),w=`number`;digit(k());)A(),e+=stringFromCode(D);let T=k(1),E=k(2),O=k(3);if((T===69||T===101)&&digit(E))for(A(),e+=stringFromCode(D),A(),e+=stringFromCode(D),w=`number`;digit(k());)A(),e+=stringFromCode(D);else if((T===69||T===101)&&(E===43||E===45)&&digit(O))for(A(),e+=stringFromCode(D),A(),e+=stringFromCode(D),A(),e+=stringFromCode(D),w=`number`;digit(k());)A(),e+=stringFromCode(D);let j=Z(e);return{type:w,value:j,repr:e}},Z=function(e){return+e},Q=function(){for(;A();){if(D===41||M())return;U()&&z()}},$=0;for(;!M(k());)if(E.push(N()),$++,$>w.length*2)throw Error(`I'm infinite-looping!`);return E}var CSSParserToken=class{constructor(){__publicField(this,`tokenType`,``),__publicField(this,`value`)}toJSON(){return{token:this.tokenType}}toString(){return this.tokenType}toSource(){return`${this}`}},BadStringToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`tokenType`,`BADSTRING`)}},BadURLToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`tokenType`,`BADURL`)}},WhitespaceToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`tokenType`,`WHITESPACE`)}toString(){return`WS`}toSource(){return` `}},CDOToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`tokenType`,`CDO`)}toSource(){return`<!--`}},CDCToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`tokenType`,`CDC`)}toSource(){return`-->`}},ColonToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`tokenType`,`:`)}},SemicolonToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`tokenType`,`;`)}},CommaToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`tokenType`,`,`)}},GroupingToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`value`,``),__publicField(this,`mirror`,``)}},OpenCurlyToken=class extends GroupingToken{constructor(){super(),__publicField(this,`tokenType`,`{`),this.value=`{`,this.mirror=`}`}},CloseCurlyToken=class extends GroupingToken{constructor(){super(),__publicField(this,`tokenType`,`}`),this.value=`}`,this.mirror=`{`}},OpenSquareToken=class extends GroupingToken{constructor(){super(),__publicField(this,`tokenType`,`[`),this.value=`[`,this.mirror=`]`}},CloseSquareToken=class extends GroupingToken{constructor(){super(),__publicField(this,`tokenType`,`]`),this.value=`]`,this.mirror=`[`}},OpenParenToken=class extends GroupingToken{constructor(){super(),__publicField(this,`tokenType`,`(`),this.value=`(`,this.mirror=`)`}},CloseParenToken=class extends GroupingToken{constructor(){super(),__publicField(this,`tokenType`,`)`),this.value=`)`,this.mirror=`(`}},IncludeMatchToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`tokenType`,`~=`)}},DashMatchToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`tokenType`,`|=`)}},PrefixMatchToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`tokenType`,`^=`)}},SuffixMatchToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`tokenType`,`$=`)}},SubstringMatchToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`tokenType`,`*=`)}},ColumnToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`tokenType`,`||`)}},EOFToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`tokenType`,`EOF`)}toSource(){return``}},DelimToken=class extends CSSParserToken{constructor(e){super(),__publicField(this,`tokenType`,`DELIM`),__publicField(this,`value`,``),this.value=stringFromCode(e)}toString(){return`DELIM(${this.value})`}toJSON(){let e=this.constructor.prototype.constructor.prototype.toJSON.call(this);return e.value=this.value,e}toSource(){return this.value===`\\`?`\\
|
|
2
|
-
`:this.value}},StringValuedToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`value`,``)}ASCIIMatch(e){return this.value.toLowerCase()===e.toLowerCase()}toJSON(){let e=this.constructor.prototype.constructor.prototype.toJSON.call(this);return e.value=this.value,e}},IdentToken=class extends StringValuedToken{constructor(e){super(),__publicField(this,`tokenType`,`IDENT`),this.value=e}toString(){return`IDENT(${this.value})`}toSource(){return escapeIdent(this.value)}},FunctionToken=class extends StringValuedToken{constructor(e){super(),__publicField(this,`tokenType`,`FUNCTION`),__publicField(this,`mirror`),this.value=e,this.mirror=`)`}toString(){return`FUNCTION(${this.value})`}toSource(){return`${escapeIdent(this.value)}(`}},AtKeywordToken=class extends StringValuedToken{constructor(e){super(),__publicField(this,`tokenType`,`AT-KEYWORD`),this.value=e}toString(){return`AT(${this.value})`}toSource(){return`@${escapeIdent(this.value)}`}},HashToken=class extends StringValuedToken{constructor(e){super(),__publicField(this,`tokenType`,`HASH`),__publicField(this,`type`),this.value=e,this.type=`unrestricted`}toString(){return`HASH(${this.value})`}toJSON(){let e=this.constructor.prototype.constructor.prototype.toJSON.call(this);return e.value=this.value,e.type=this.type,e}toSource(){return this.type===`id`?`#${escapeIdent(this.value)}`:`#${escapeHash(this.value)}`}},StringToken=class extends StringValuedToken{constructor(e){super(),__publicField(this,`tokenType`,`STRING`),this.value=e}toString(){return`"${escapeString(this.value)}"`}},URLToken=class extends StringValuedToken{constructor(e){super(),__publicField(this,`tokenType`,`URL`),this.value=e}toString(){return`URL(${this.value})`}toSource(){return`url("${escapeString(this.value)}")`}},NumberToken=class extends CSSParserToken{constructor(){super(),__publicField(this,`tokenType`,`NUMBER`),__publicField(this,`type`),__publicField(this,`repr`),this.type=`integer`,this.repr=``}toString(){return this.type===`integer`?`INT(${this.value})`:`NUMBER(${this.value})`}toJSON(){let e=super.toJSON();return e.value=this.value,e.type=this.type,e.repr=this.repr,e}toSource(){return this.repr}},PercentageToken=class extends CSSParserToken{constructor(){super(),__publicField(this,`tokenType`,`PERCENTAGE`),__publicField(this,`repr`),this.repr=``}toString(){return`PERCENTAGE(${this.value})`}toJSON(){let e=this.constructor.prototype.constructor.prototype.toJSON.call(this);return e.value=this.value,e.repr=this.repr,e}toSource(){return`${this.repr}%`}},DimensionToken=class extends CSSParserToken{constructor(){super(),__publicField(this,`tokenType`,`DIMENSION`),__publicField(this,`type`),__publicField(this,`repr`),__publicField(this,`unit`),this.type=`integer`,this.repr=``,this.unit=``}toString(){return`DIM(${this.value},${this.unit})`}toJSON(){let e=this.constructor.prototype.constructor.prototype.toJSON.call(this);return e.value=this.value,e.type=this.type,e.repr=this.repr,e.unit=this.unit,e}toSource(){let e=this.repr,w=escapeIdent(this.unit);return w[0].toLowerCase()===`e`&&(w[1]===`-`||between(w.charCodeAt(1),48,57))&&(w=`\\65 ${w.slice(1,w.length)}`),e+w}};function escapeIdent(e){e=`${e}`;let w=``,T=e.charCodeAt(0);for(let E=0;E<e.length;E++){let D=e.charCodeAt(E);if(D===0)throw new InvalidCharacterError(`Invalid character: the input contains U+0000.`);between(D,1,31)||D===127||E===0&&between(D,48,57)||E===1&&between(D,48,57)&&T===45?w+=`\\${D.toString(16)} `:D>=128||D===45||D===95||between(D,48,57)||between(D,65,90)||between(D,97,122)?w+=e[E]:w+=`\\${e[E]}`}return w}function escapeHash(e){e=`${e}`;let w=``;for(let T=0;T<e.length;T++){let E=e.charCodeAt(T);if(E===0)throw new InvalidCharacterError(`Invalid character: the input contains U+0000.`);E>=128||E===45||E===95||between(E,48,57)||between(E,65,90)||between(E,97,122)?w+=e[T]:w+=`\\${E.toString(16)} `}return w}function escapeString(e){e=`${e}`;let w=``;for(let T=0;T<e.length;T++){let E=e.charCodeAt(T);if(E===0)throw new InvalidCharacterError(`Invalid character: the input contains U+0000.`);between(E,1,31)||E===127?w+=`\\${E.toString(16)} `:E===34||E===92?w+=`\\${e[T]}`:w+=e[T]}return w}var InvalidSelectorError=class extends Error{};function parseCSS(e,w){let T;try{T=tokenize(e),T[T.length-1]instanceof EOFToken||T.push(new EOFToken)}catch(w){let T=`${w.message} while parsing selector "${e}"`,E=(w.stack||``).indexOf(w.message);throw E!==-1&&(w.stack=w.stack.substring(0,E)+T+w.stack.substring(E+w.message.length)),w.message=T,w}let E=T.find(e=>e instanceof AtKeywordToken||e instanceof BadStringToken||e instanceof BadURLToken||e instanceof ColumnToken||e instanceof CDOToken||e instanceof CDCToken||e instanceof SemicolonToken||e instanceof OpenCurlyToken||e instanceof CloseCurlyToken||e instanceof URLToken||e instanceof PercentageToken);if(E)throw new InvalidSelectorError(`Unsupported token "${E.toSource()}" while parsing selector "${e}"`);let D=0,O=new Set;function k(){return new InvalidSelectorError(`Unexpected token "${T[D].toSource()}" while parsing selector "${e}"`)}function A(){for(;T[D]instanceof WhitespaceToken;)D++}function j(e=D){return T[e]instanceof IdentToken}function M(e=D){return T[e]instanceof StringToken}function N(e=D){return T[e]instanceof NumberToken}function P(e=D){return T[e]instanceof CommaToken}function F(e=D){return T[e]instanceof OpenParenToken}function I(e=D){return T[e]instanceof CloseParenToken}function L(e=D){return T[e]instanceof FunctionToken}function R(e=D){return T[e]instanceof DelimToken&&T[e].value===`*`}function z(e=D){return T[e]instanceof EOFToken}function B(e=D){return T[e]instanceof DelimToken&&[`>`,`+`,`~`].includes(T[e].value)}function V(e=D){return P(e)||I(e)||z(e)||B(e)||T[e]instanceof WhitespaceToken}function H(){let e=[U()];for(;A(),!!P();)D++,e.push(U());return e}function U(){return A(),N()||M()?T[D++].value:W()}function W(){let e={simples:[]};for(A(),B()?e.simples.push({selector:{functions:[{name:`scope`,args:[]}]},combinator:``}):e.simples.push({selector:G(),combinator:``});;){if(A(),B())e.simples[e.simples.length-1].combinator=T[D++].value,A();else if(V())break;e.simples.push({combinator:``,selector:G()})}return e}function G(){let e=``,E=[];for(;!V();)if(j()||R())e+=T[D++].toSource();else if(T[D]instanceof HashToken)e+=T[D++].toSource();else if(T[D]instanceof DelimToken&&T[D].value===`.`)if(D++,j())e+=`.${T[D++].toSource()}`;else throw k();else if(T[D]instanceof ColonToken)if(D++,j())if(!w.has(T[D].value.toLowerCase()))e+=`:${T[D++].toSource()}`;else{let e=T[D++].value.toLowerCase();E.push({name:e,args:[]}),O.add(e)}else if(L()){let j=T[D++].value.toLowerCase();if(w.has(j)?(E.push({name:j,args:H()}),O.add(j)):e+=`:${j}(${K()})`,A(),!I())throw k();D++}else throw k();else if(T[D]instanceof OpenSquareToken){for(e+=`[`,D++;!(T[D]instanceof CloseSquareToken)&&!z();)e+=T[D++].toSource();if(!(T[D]instanceof CloseSquareToken))throw k();e+=`]`,D++}else throw k();if(!e&&!E.length)throw k();return{css:e||void 0,functions:E}}function K(){let e=``,w=1;for(;!z()&&((F()||L())&&w++,I()&&w--,!!w);)e+=T[D++].toSource();return e}let q=H();if(!z())throw k();if(q.some(e=>typeof e!=`object`||!(`simples`in e)))throw new InvalidSelectorError(`Error while parsing selector "${e}"`);return{selector:q,names:Array.from(O)}}var kNestedSelectorNames=new Set([`internal:has`,`internal:has-not`,`internal:and`,`internal:or`,`internal:chain`,`left-of`,`right-of`,`above`,`below`,`near`]),kNestedSelectorNamesWithDistance=new Set([`left-of`,`right-of`,`above`,`below`,`near`]),customCSSNames=new Set([`not`,`is`,`where`,`has`,`scope`,`light`,`visible`,`text`,`text-matches`,`text-is`,`has-text`,`above`,`below`,`right-of`,`left-of`,`near`,`nth-match`]);function parseSelector(e){let w=parseSelectorString(e),T=[];for(let e of w.parts){if(e.name===`css`||e.name===`css:light`){e.name===`css:light`&&(e.body=`:light(${e.body})`);let w=parseCSS(e.body,customCSSNames);T.push({name:`css`,body:w.selector,source:e.body});continue}if(kNestedSelectorNames.has(e.name)){let w,E;try{let T=JSON.parse(`[${e.body}]`);if(!Array.isArray(T)||T.length<1||T.length>2||typeof T[0]!=`string`)throw new InvalidSelectorError(`Malformed selector: ${e.name}=${e.body}`);if(w=T[0],T.length===2){if(typeof T[1]!=`number`||!kNestedSelectorNamesWithDistance.has(e.name))throw new InvalidSelectorError(`Malformed selector: ${e.name}=${e.body}`);E=T[1]}}catch{throw new InvalidSelectorError(`Malformed selector: ${e.name}=${e.body}`)}let D={name:e.name,source:e.body,body:{parsed:parseSelector(w),distance:E}},O=[...D.body.parsed.parts].reverse().find(e=>e.name===`internal:control`&&e.body===`enter-frame`),k=O?D.body.parsed.parts.indexOf(O):-1;k!==-1&&selectorPartsEqual(D.body.parsed.parts.slice(0,k+1),T.slice(0,k+1))&&D.body.parsed.parts.splice(0,k+1),T.push(D);continue}T.push({...e,source:e.body})}if(kNestedSelectorNames.has(T[0].name))throw new InvalidSelectorError(`"${T[0].name}" selector cannot be first`);return{capture:w.capture,parts:T}}function selectorPartsEqual(e,w){return stringifySelector({parts:e})===stringifySelector({parts:w})}function stringifySelector(e,w){return typeof e==`string`?e:e.parts.map((T,E)=>{let D=!0;!w&&E!==e.capture&&(T.name===`css`||T.name===`xpath`&&T.source.startsWith(`//`)||T.source.startsWith(`..`))&&(D=!1);let O=D?`${T.name}=`:``;return`${E===e.capture?`*`:``}${O}${T.source}`}).join(` >> `)}function visitAllSelectorParts(e,w){let T=(e,E)=>{for(let D of e.parts)w(D,E),kNestedSelectorNames.has(D.name)&&T(D.body.parsed,!0)};T(e,!1)}function parseSelectorString(e){let w=0,T,E=0,D={parts:[]},O=()=>{let T=e.substring(E,w).trim(),O=T.indexOf(`=`),k,A;O!==-1&&T.substring(0,O).trim().match(/^[\w\-+:*]+$/)?(k=T.substring(0,O).trim(),A=T.substring(O+1)):T.length>1&&T[0]===`"`&&T[T.length-1]===`"`||T.length>1&&T[0]===`'`&&T[T.length-1]===`'`?(k=`text`,A=T):/^\(*\/\//.test(T)||T.startsWith(`..`)?(k=`xpath`,A=T):(k=`css`,A=T);let j=!1;if(k[0]===`*`&&(j=!0,k=k.substring(1)),D.parts.push({name:k,body:A}),j){if(D.capture!==void 0)throw new InvalidSelectorError(`Only one of the selectors can capture using * modifier`);D.capture=D.parts.length-1}};if(!e.includes(`>>`))return w=e.length,O(),D;let k=()=>{let T=e.substring(E,w),D=T.match(/^\s*text\s*=(.*)$/);return!!D&&!!D[1]};for(;w<e.length;){let D=e[w];D===`\\`&&w+1<e.length?w+=2:D===T?(T=void 0,w++):!T&&(D===`"`||D===`'`||D==="`")&&!k()?(T=D,w++):!T&&D===`>`&&e[w+1]===`>`?(O(),w+=2,E=w):w++}return O(),D}function parseAttributeSelector(e,w){let T=0,E=e.length===0,D=()=>e[T]||``,O=()=>{let w=D();return++T,E=T>=e.length,w},k=w=>{throw E?new InvalidSelectorError(`Unexpected end of selector while parsing selector \`${e}\``):new InvalidSelectorError(`Error while parsing selector \`${e}\` - unexpected symbol "${D()}" at position ${T}${w?` during ${w}`:``}`)};function A(){for(;!E&&/\s/.test(D());)O()}function j(e){return e>=``||e>=`0`&&e<=`9`||e>=`A`&&e<=`Z`||e>=`a`&&e<=`z`||e>=`0`&&e<=`9`||e===`_`||e===`-`}function M(){let e=``;for(A();!E&&j(D());)e+=O();return e}function N(e){let w=O();for(w!==e&&k(`parsing quoted string`);!E&&D()!==e;)D()===`\\`&&O(),w+=O();return D()!==e&&k(`parsing quoted string`),w+=O(),w}function P(){O()!==`/`&&k(`parsing regular expression`);let w=``,T=!1;for(;!E;){if(D()===`\\`)w+=O(),E&&k(`parsing regular expression`);else if(T&&D()===`]`)T=!1;else if(!T&&D()===`[`)T=!0;else if(!T&&D()===`/`)break;w+=O()}O()!==`/`&&k(`parsing regular expression`);let A=``;for(;!E&&D().match(/[dgimsuy]/);)A+=O();try{return new RegExp(w,A)}catch(w){throw new InvalidSelectorError(`Error while parsing selector \`${e}\`: ${w.message}`)}}function F(){let e=``;return A(),e=D()===`'`||D()===`"`?N(D()).slice(1,-1):M(),e||k(`parsing property path`),e}function I(){A();let e=``;return E||(e+=O()),!E&&e!==`=`&&(e+=O()),[`=`,`*=`,`^=`,`$=`,`|=`,`~=`].includes(e)||k(`parsing operator`),e}function L(){O();let w=[];for(w.push(F()),A();D()===`.`;)O(),w.push(F()),A();if(D()===`]`)return O(),{name:w.join(`.`),jsonPath:w,op:`<truthy>`,value:null,caseSensitive:!1};let T=I(),M,L=!0;if(A(),D()===`/`){if(T!==`=`)throw new InvalidSelectorError(`Error while parsing selector \`${e}\` - cannot use ${T} in attribute with regular expression`);M=P()}else if(D()===`'`||D()===`"`)M=N(D()).slice(1,-1),A(),D()===`i`||D()===`I`?(L=!1,O()):(D()===`s`||D()===`S`)&&(L=!0,O());else{for(M=``;!E&&(j(D())||D()===`+`||D()===`.`);)M+=O();M===`true`?M=!0:M===`false`&&(M=!1)}if(A(),D()!==`]`&&k(`parsing attribute value`),O(),T!==`=`&&typeof M!=`string`)throw new InvalidSelectorError(`Error while parsing selector \`${e}\` - cannot use ${T} in attribute with non-string matching value - ${M}`);return{name:w.join(`.`),jsonPath:w,op:T,value:M,caseSensitive:L}}let R={name:``,attributes:[]};for(R.name=M(),A();D()===`[`;)R.attributes.push(L()),A();if(E||k(void 0),!R.name&&!R.attributes.length)throw new InvalidSelectorError(`Error while parsing selector \`${e}\` - selector cannot be empty`);return R}function hasExplicitAccessibleName(e){return e.hasAttribute(`aria-label`)||e.hasAttribute(`aria-labelledby`)}var kAncestorPreventingLandmark=`article:not([role]), aside:not([role]), main:not([role]), nav:not([role]), section:not([role]), [role=article], [role=complementary], [role=main], [role=navigation], [role=region]`,kGlobalAriaAttributes=new Map([[`aria-atomic`,void 0],[`aria-busy`,void 0],[`aria-controls`,void 0],[`aria-current`,void 0],[`aria-describedby`,void 0],[`aria-details`,void 0],[`aria-dropeffect`,void 0],[`aria-flowto`,void 0],[`aria-grabbed`,void 0],[`aria-hidden`,void 0],[`aria-keyshortcuts`,void 0],[`aria-label`,new Set([`caption`,`code`,`deletion`,`emphasis`,`generic`,`insertion`,`paragraph`,`presentation`,`strong`,`subscript`,`superscript`])],[`aria-labelledby`,new Set([`caption`,`code`,`deletion`,`emphasis`,`generic`,`insertion`,`paragraph`,`presentation`,`strong`,`subscript`,`superscript`])],[`aria-live`,void 0],[`aria-owns`,void 0],[`aria-relevant`,void 0],[`aria-roledescription`,new Set([`generic`])]]);function hasGlobalAriaAttribute(e,w){return[...kGlobalAriaAttributes].some(([T,E])=>!E?.has(w||``)&&e.hasAttribute(T))}function hasTabIndex(e){return!Number.isNaN(Number(String(e.getAttribute(`tabindex`))))}function isFocusable(e){return!isNativelyDisabled(e)&&(isNativelyFocusable(e)||hasTabIndex(e))}function isNativelyFocusable(e){let w=elementSafeTagName(e);return[`BUTTON`,`DETAILS`,`SELECT`,`TEXTAREA`].includes(w)?!0:w===`A`||w===`AREA`?e.hasAttribute(`href`):w===`INPUT`?!e.hidden:!1}var kImplicitRoleByTagName={A:e=>e.hasAttribute(`href`)?`link`:null,AREA:e=>e.hasAttribute(`href`)?`link`:null,ARTICLE:()=>`article`,ASIDE:()=>`complementary`,BLOCKQUOTE:()=>`blockquote`,BUTTON:()=>`button`,CAPTION:()=>`caption`,CODE:()=>`code`,DATALIST:()=>`listbox`,DD:()=>`definition`,DEL:()=>`deletion`,DETAILS:()=>`group`,DFN:()=>`term`,DIALOG:()=>`dialog`,DT:()=>`term`,EM:()=>`emphasis`,FIELDSET:()=>`group`,FIGURE:()=>`figure`,FOOTER:e=>closestCrossShadow(e,kAncestorPreventingLandmark)?null:`contentinfo`,FORM:e=>hasExplicitAccessibleName(e)?`form`:null,H1:()=>`heading`,H2:()=>`heading`,H3:()=>`heading`,H4:()=>`heading`,H5:()=>`heading`,H6:()=>`heading`,HEADER:e=>closestCrossShadow(e,kAncestorPreventingLandmark)?null:`banner`,HR:()=>`separator`,HTML:()=>`document`,IMG:e=>e.getAttribute(`alt`)===``&&!e.getAttribute(`title`)&&!hasGlobalAriaAttribute(e)&&!hasTabIndex(e)?`presentation`:`img`,INPUT:e=>{let w=e.type.toLowerCase();if(w===`search`)return e.hasAttribute(`list`)?`combobox`:`searchbox`;if([`email`,`tel`,`text`,`url`,``].includes(w)){let w=getIdRefs(e,e.getAttribute(`list`))[0];return w&&elementSafeTagName(w)===`DATALIST`?`combobox`:`textbox`}return w===`hidden`?``:{button:`button`,checkbox:`checkbox`,image:`button`,number:`spinbutton`,radio:`radio`,range:`slider`,reset:`button`,submit:`button`}[w]||`textbox`},INS:()=>`insertion`,LI:()=>`listitem`,MAIN:()=>`main`,MARK:()=>`mark`,MATH:()=>`math`,MENU:()=>`list`,METER:()=>`meter`,NAV:()=>`navigation`,OL:()=>`list`,OPTGROUP:()=>`group`,OPTION:()=>`option`,OUTPUT:()=>`status`,P:()=>`paragraph`,PROGRESS:()=>`progressbar`,SECTION:e=>hasExplicitAccessibleName(e)?`region`:null,SELECT:e=>e.hasAttribute(`multiple`)||e.size>1?`listbox`:`combobox`,STRONG:()=>`strong`,SUB:()=>`subscript`,SUP:()=>`superscript`,SVG:()=>`img`,TABLE:()=>`table`,TBODY:()=>`rowgroup`,TD:e=>{let w=closestCrossShadow(e,`table`),T=w?getExplicitAriaRole(w):``;return T===`grid`||T===`treegrid`?`gridcell`:`cell`},TEXTAREA:()=>`textbox`,TFOOT:()=>`rowgroup`,TH:e=>{if(e.getAttribute(`scope`)===`col`)return`columnheader`;if(e.getAttribute(`scope`)===`row`)return`rowheader`;let w=closestCrossShadow(e,`table`),T=w?getExplicitAriaRole(w):``;return T===`grid`||T===`treegrid`?`gridcell`:`cell`},THEAD:()=>`rowgroup`,TIME:()=>`time`,TR:()=>`row`,UL:()=>`list`},kPresentationInheritanceParents={DD:[`DL`,`DIV`],DIV:[`DL`],DT:[`DL`,`DIV`],LI:[`OL`,`UL`],TBODY:[`TABLE`],TD:[`TR`],TFOOT:[`TABLE`],TH:[`TR`],THEAD:[`TABLE`],TR:[`THEAD`,`TBODY`,`TFOOT`,`TABLE`]};function getImplicitAriaRole(e){var w;let T=(w=kImplicitRoleByTagName[elementSafeTagName(e)])?.call(kImplicitRoleByTagName,e)||``;if(!T)return null;let E=e;for(;E;){let e=parentElementOrShadowHost(E),w=kPresentationInheritanceParents[elementSafeTagName(E)];if(!w||!e||!w.includes(elementSafeTagName(e)))break;let T=getExplicitAriaRole(e);if((T===`none`||T===`presentation`)&&!hasPresentationConflictResolution(e,T))return T;E=e}return T}var allRoles=`alert.alertdialog.application.article.banner.blockquote.button.caption.cell.checkbox.code.columnheader.combobox.command.complementary.composite.contentinfo.definition.deletion.dialog.directory.document.emphasis.feed.figure.form.generic.grid.gridcell.group.heading.img.input.insertion.landmark.link.list.listbox.listitem.log.main.marquee.math.meter.menu.menubar.menuitem.menuitemcheckbox.menuitemradio.navigation.none.note.option.paragraph.presentation.progressbar.radio.radiogroup.range.region.roletype.row.rowgroup.rowheader.scrollbar.search.searchbox.section.sectionhead.select.separator.slider.spinbutton.status.strong.structure.subscript.superscript.switch.tab.table.tablist.tabpanel.term.textbox.time.timer.toolbar.tooltip.tree.treegrid.treeitem.widget.window`.split(`.`),abstractRoles=[`command`,`composite`,`input`,`landmark`,`range`,`roletype`,`section`,`sectionhead`,`select`,`structure`,`widget`,`window`],validRoles=allRoles.filter(e=>!abstractRoles.includes(e));function getExplicitAriaRole(e){let w=(e.getAttribute(`role`)||``).split(` `).map(e=>e.trim());return w.find(e=>validRoles.includes(e))||null}function hasPresentationConflictResolution(e,w){return hasGlobalAriaAttribute(e,w)||isFocusable(e)}function getAriaRole(e){let w=getExplicitAriaRole(e);if(!w)return getImplicitAriaRole(e);if(w===`none`||w===`presentation`){let w=getImplicitAriaRole(e);if(hasPresentationConflictResolution(e,w))return w}return w}function getAriaBoolean(e){return e===null?void 0:e.toLowerCase()===`true`}function isElementIgnoredForAria(e){return[`STYLE`,`SCRIPT`,`NOSCRIPT`,`TEMPLATE`].includes(elementSafeTagName(e))}function isElementHiddenForAria(e){if(isElementIgnoredForAria(e))return!0;let w=getElementComputedStyle(e),T=e.nodeName===`SLOT`;if(w?.display===`contents`&&!T){for(let w=e.firstChild;w;w=w.nextSibling)if(w.nodeType===1&&!isElementHiddenForAria(w)||w.nodeType===3&&isVisibleTextNode(w))return!1;return!0}let E=e.nodeName===`OPTION`&&!!e.closest(`select`);return!E&&!T&&!isElementStyleVisibilityVisible(e,w)?!0:belongsToDisplayNoneOrAriaHiddenOrNonSlotted(e)}function belongsToDisplayNoneOrAriaHiddenOrNonSlotted(e){let w=cacheIsHidden?.get(e);if(w===void 0){if(w=!1,e.parentElement&&e.parentElement.shadowRoot&&!e.assignedSlot&&(w=!0),!w){let T=getElementComputedStyle(e);w=!T||T.display===`none`||getAriaBoolean(e.getAttribute(`aria-hidden`))===!0}if(!w){let T=parentElementOrShadowHost(e);T&&(w=belongsToDisplayNoneOrAriaHiddenOrNonSlotted(T))}cacheIsHidden?.set(e,w)}return w}function getIdRefs(e,w){if(!w)return[];let T=enclosingShadowRootOrDocument(e);if(!T)return[];try{let e=w.split(` `).filter(e=>!!e),E=new Set;for(let w of e){let e=T.querySelector(`#${CSS.escape(w)}`);e&&E.add(e)}return[...E]}catch{return[]}}function trimFlatString(e){return e.trim()}function asFlatString(e){return e.split(`\xA0`).map(e=>e.replace(/\r\n/g,`
|
|
3
|
-
`).replace(/[\u200b\u00ad]/g,``).replace(/\s\s*/g,` `)).join(`\xA0`).trim()}function queryInAriaOwned(e,w){let T=[...e.querySelectorAll(w)];for(let E of getIdRefs(e,e.getAttribute(`aria-owns`)))E.matches(w)&&T.push(E),T.push(...E.querySelectorAll(w));return T}function getPseudoContent(e,w){let T=w===`::before`?cachePseudoContentBefore:cachePseudoContentAfter;if(T?.has(e))return T?.get(e)||``;let E=getElementComputedStyle(e,w),D=getPseudoContentImpl(E);return T&&T.set(e,D),D}function getPseudoContentImpl(e){if(!e)return``;let w=e.content;if(w[0]===`'`&&w[w.length-1]===`'`||w[0]===`"`&&w[w.length-1]===`"`){let T=w.substring(1,w.length-1),E=e.display||`inline`;return E===`inline`?T:` ${T} `}return``}function getAriaLabelledByElements(e){let w=e.getAttribute(`aria-labelledby`);return w===null?null:getIdRefs(e,w)}function allowsNameFromContent(e,w){let T=[`button`,`cell`,`checkbox`,`columnheader`,`gridcell`,`heading`,`link`,`menuitem`,`menuitemcheckbox`,`menuitemradio`,`option`,`radio`,`row`,`rowheader`,`switch`,`tab`,`tooltip`,`treeitem`].includes(e),E=w&&[``,`caption`,`code`,`contentinfo`,`definition`,`deletion`,`emphasis`,`insertion`,`list`,`listitem`,`mark`,`none`,`paragraph`,`presentation`,`region`,`row`,`rowgroup`,`section`,`strong`,`subscript`,`superscript`,`table`,`term`,`time`].includes(e);return T||E}function getElementAccessibleName(e,w){let T=w?cacheAccessibleNameHidden:cacheAccessibleName,E=T?.get(e);if(E===void 0){E=``;let D=[`caption`,`code`,`definition`,`deletion`,`emphasis`,`generic`,`insertion`,`mark`,`paragraph`,`presentation`,`strong`,`subscript`,`suggestion`,`superscript`,`term`,`time`].includes(getAriaRole(e)||``);D||(E=asFlatString(getTextAlternativeInternal(e,{includeHidden:w,visitedElements:new Set,embeddedInDescribedBy:void 0,embeddedInLabelledBy:void 0,embeddedInLabel:void 0,embeddedInNativeTextAlternative:void 0,embeddedInTargetElement:`self`}))),T?.set(e,E)}return E}function getElementAccessibleDescription(e,w){let T=cacheAccessibleDescription,E=T?.get(e);if(E===void 0){if(E=``,e.hasAttribute(`aria-describedby`)){let T=getIdRefs(e,e.getAttribute(`aria-describedby`));E=asFlatString(T.map(e=>getTextAlternativeInternal(e,{includeHidden:w,visitedElements:new Set,embeddedInDescribedBy:{element:e,hidden:isElementHiddenForAria(e)}})).join(` `))}else E=e.hasAttribute(`aria-description`)?asFlatString(e.getAttribute(`aria-description`)||``):asFlatString(e.getAttribute(`title`)||``);T?.set(e,E)}return E}var kAriaInvalidRoles=[`application`,`checkbox`,`combobox`,`gridcell`,`listbox`,`radiogroup`,`slider`,`spinbutton`,`textbox`,`tree`,`columnheader`,`rowheader`,`searchbox`,`switch`,`treegrid`];function getAriaInvalid(e){let w=getAriaRole(e)||``;if(!w||!kAriaInvalidRoles.includes(w))return`false`;let T=e.getAttribute(`aria-invalid`);return!T||T.trim()===``||T.toLocaleLowerCase()===`false`?`false`:T===`true`||T===`grammar`||T===`spelling`?T:`true`}function getValidityInvalid(e){if(`validity`in e){let w=e.validity;return w?.valid===!1}return!1}function getElementAccessibleErrorMessage(e){let w=cacheAccessibleErrorMessage,T=cacheAccessibleErrorMessage?.get(e);if(T===void 0){T=``;let E=getAriaInvalid(e)!==`false`,D=getValidityInvalid(e);if(E||D){let w=e.getAttribute(`aria-errormessage`),E=getIdRefs(e,w),D=E.map(e=>asFlatString(getTextAlternativeInternal(e,{visitedElements:new Set,embeddedInDescribedBy:{element:e,hidden:isElementHiddenForAria(e)}})));T=D.join(` `).trim()}w?.set(e,T)}return T}function getTextAlternativeInternal(e,w){var T,E,D,O;if(w.visitedElements.has(e))return``;let k={...w,embeddedInTargetElement:w.embeddedInTargetElement===`self`?`descendant`:w.embeddedInTargetElement};if(!w.includeHidden){let k=!!(T=w.embeddedInLabelledBy)?.hidden||!!(E=w.embeddedInDescribedBy)?.hidden||!!(D=w.embeddedInNativeTextAlternative)?.hidden||!!(O=w.embeddedInLabel)?.hidden;if(isElementIgnoredForAria(e)||!k&&isElementHiddenForAria(e))return w.visitedElements.add(e),``}let A=getAriaLabelledByElements(e);if(!w.embeddedInLabelledBy){let e=(A||[]).map(e=>getTextAlternativeInternal(e,{...w,embeddedInLabelledBy:{element:e,hidden:isElementHiddenForAria(e)},embeddedInDescribedBy:void 0,embeddedInTargetElement:void 0,embeddedInLabel:void 0,embeddedInNativeTextAlternative:void 0})).join(` `);if(e)return e}let j=getAriaRole(e)||``,M=elementSafeTagName(e);if(w.embeddedInLabel||w.embeddedInLabelledBy||w.embeddedInTargetElement===`descendant`){let T=[...e.labels||[]].includes(e),E=(A||[]).includes(e);if(!T&&!E){if(j===`textbox`)return w.visitedElements.add(e),M===`INPUT`||M===`TEXTAREA`?e.value:e.textContent||``;if([`combobox`,`listbox`].includes(j)){w.visitedElements.add(e);let T;if(M===`SELECT`)T=[...e.selectedOptions],!T.length&&e.options.length&&T.push(e.options[0]);else{let w=j===`combobox`?queryInAriaOwned(e,`*`).find(e=>getAriaRole(e)===`listbox`):e;T=w?queryInAriaOwned(w,`[aria-selected="true"]`).filter(e=>getAriaRole(e)===`option`):[]}return!T.length&&M===`INPUT`?e.value:T.map(e=>getTextAlternativeInternal(e,k)).join(` `)}if([`progressbar`,`scrollbar`,`slider`,`spinbutton`,`meter`].includes(j))return w.visitedElements.add(e),e.hasAttribute(`aria-valuetext`)?e.getAttribute(`aria-valuetext`)||``:e.hasAttribute(`aria-valuenow`)?e.getAttribute(`aria-valuenow`)||``:e.getAttribute(`value`)||``;if([`menu`].includes(j))return w.visitedElements.add(e),``}}let N=e.getAttribute(`aria-label`)||``;if(trimFlatString(N))return w.visitedElements.add(e),N;if(![`presentation`,`none`].includes(j)){if(M===`INPUT`&&[`button`,`submit`,`reset`].includes(e.type)){w.visitedElements.add(e);let T=e.value||``;if(trimFlatString(T))return T;if(e.type===`submit`)return`Submit`;if(e.type===`reset`)return`Reset`;let E=e.getAttribute(`title`)||``;return E}if(M===`INPUT`&&e.type===`image`){w.visitedElements.add(e);let T=e.labels||[];if(T.length&&!w.embeddedInLabelledBy)return getAccessibleNameFromAssociatedLabels(T,w);let E=e.getAttribute(`alt`)||``;if(trimFlatString(E))return E;let D=e.getAttribute(`title`)||``;return trimFlatString(D)?D:`Submit`}if(!A&&M===`BUTTON`){w.visitedElements.add(e);let T=e.labels||[];if(T.length)return getAccessibleNameFromAssociatedLabels(T,w)}if(!A&&M===`OUTPUT`){w.visitedElements.add(e);let T=e.labels||[];return T.length?getAccessibleNameFromAssociatedLabels(T,w):e.getAttribute(`title`)||``}if(!A&&(M===`TEXTAREA`||M===`SELECT`||M===`INPUT`)){w.visitedElements.add(e);let T=e.labels||[];if(T.length)return getAccessibleNameFromAssociatedLabels(T,w);let E=M===`INPUT`&&[`text`,`password`,`search`,`tel`,`email`,`url`].includes(e.type)||M===`TEXTAREA`,D=e.getAttribute(`placeholder`)||``,O=e.getAttribute(`title`)||``;return!E||O?O:D}if(!A&&M===`FIELDSET`){w.visitedElements.add(e);for(let w=e.firstElementChild;w;w=w.nextElementSibling)if(elementSafeTagName(w)===`LEGEND`)return getTextAlternativeInternal(w,{...k,embeddedInNativeTextAlternative:{element:w,hidden:isElementHiddenForAria(w)}});let T=e.getAttribute(`title`)||``;return T}if(!A&&M===`FIGURE`){w.visitedElements.add(e);for(let w=e.firstElementChild;w;w=w.nextElementSibling)if(elementSafeTagName(w)===`FIGCAPTION`)return getTextAlternativeInternal(w,{...k,embeddedInNativeTextAlternative:{element:w,hidden:isElementHiddenForAria(w)}});let T=e.getAttribute(`title`)||``;return T}if(M===`IMG`){w.visitedElements.add(e);let T=e.getAttribute(`alt`)||``;if(trimFlatString(T))return T;let E=e.getAttribute(`title`)||``;return E}if(M===`TABLE`){w.visitedElements.add(e);for(let w=e.firstElementChild;w;w=w.nextElementSibling)if(elementSafeTagName(w)===`CAPTION`)return getTextAlternativeInternal(w,{...k,embeddedInNativeTextAlternative:{element:w,hidden:isElementHiddenForAria(w)}});let T=e.getAttribute(`summary`)||``;if(T)return T}if(M===`AREA`){w.visitedElements.add(e);let T=e.getAttribute(`alt`)||``;if(trimFlatString(T))return T;let E=e.getAttribute(`title`)||``;return E}if(M===`SVG`||e.ownerSVGElement){w.visitedElements.add(e);for(let w=e.firstElementChild;w;w=w.nextElementSibling)if(elementSafeTagName(w)===`TITLE`&&w.ownerSVGElement)return getTextAlternativeInternal(w,{...k,embeddedInLabelledBy:{element:w,hidden:isElementHiddenForAria(w)}})}if(e.ownerSVGElement&&M===`A`){let T=e.getAttribute(`xlink:title`)||``;if(trimFlatString(T))return w.visitedElements.add(e),T}}let P=M===`SUMMARY`&&![`presentation`,`none`].includes(j);if(allowsNameFromContent(j,w.embeddedInTargetElement===`descendant`)||P||w.embeddedInLabelledBy||w.embeddedInDescribedBy||w.embeddedInLabel||w.embeddedInNativeTextAlternative){w.visitedElements.add(e);let T=innerAccumulatedElementText(e,k),E=w.embeddedInTargetElement===`self`?trimFlatString(T):T;if(E)return T}if(![`presentation`,`none`].includes(j)||M===`IFRAME`){w.visitedElements.add(e);let T=e.getAttribute(`title`)||``;if(trimFlatString(T))return T}return w.visitedElements.add(e),``}function innerAccumulatedElementText(e,w){let T=[],E=(e,E)=>{var D;if(!(E&&e.assignedSlot))if(e.nodeType===1){let E=(D=getElementComputedStyle(e))?.display||`inline`,O=getTextAlternativeInternal(e,w);(E!==`inline`||e.nodeName===`BR`)&&(O=` `+O+` `),T.push(O)}else e.nodeType===3&&T.push(e.textContent||``)};T.push(getPseudoContent(e,`::before`));let D=e.nodeName===`SLOT`?e.assignedNodes():[];if(D.length)for(let e of D)E(e,!1);else{for(let w=e.firstChild;w;w=w.nextSibling)E(w,!0);if(e.shadowRoot)for(let w=e.shadowRoot.firstChild;w;w=w.nextSibling)E(w,!0);for(let w of getIdRefs(e,e.getAttribute(`aria-owns`)))E(w,!0)}return T.push(getPseudoContent(e,`::after`)),T.join(``)}var kAriaSelectedRoles=[`gridcell`,`option`,`row`,`tab`,`rowheader`,`columnheader`,`treeitem`];function getAriaSelected(e){return elementSafeTagName(e)===`OPTION`?e.selected:kAriaSelectedRoles.includes(getAriaRole(e)||``)?getAriaBoolean(e.getAttribute(`aria-selected`))===!0:!1}var kAriaCheckedRoles=[`checkbox`,`menuitemcheckbox`,`option`,`radio`,`switch`,`menuitemradio`,`treeitem`];function getAriaChecked(e){let w=getChecked(e);return w===`error`?!1:w}function getChecked(e,w){let T=elementSafeTagName(e);if(T===`INPUT`&&e.indeterminate)return`mixed`;if(T===`INPUT`&&[`checkbox`,`radio`].includes(e.type))return e.checked;if(kAriaCheckedRoles.includes(getAriaRole(e)||``)){let w=e.getAttribute(`aria-checked`);return w===`true`?!0:w===`mixed`?`mixed`:!1}return`error`}var kAriaPressedRoles=[`button`];function getAriaPressed(e){if(kAriaPressedRoles.includes(getAriaRole(e)||``)){let w=e.getAttribute(`aria-pressed`);if(w===`true`)return!0;if(w===`mixed`)return`mixed`}return!1}var kAriaExpandedRoles=[`application`,`button`,`checkbox`,`combobox`,`gridcell`,`link`,`listbox`,`menuitem`,`row`,`rowheader`,`tab`,`treeitem`,`columnheader`,`menuitemcheckbox`,`menuitemradio`,`rowheader`,`switch`];function getAriaExpanded(e){if(elementSafeTagName(e)===`DETAILS`)return e.open;if(kAriaExpandedRoles.includes(getAriaRole(e)||``)){let w=e.getAttribute(`aria-expanded`);return w===null?`none`:w===`true`}return`none`}var kAriaLevelRoles=[`heading`,`listitem`,`row`,`treeitem`];function getAriaLevel(e){let w={H1:1,H2:2,H3:3,H4:4,H5:5,H6:6}[elementSafeTagName(e)];if(w)return w;if(kAriaLevelRoles.includes(getAriaRole(e)||``)){let w=e.getAttribute(`aria-level`),T=w===null?NaN:Number(w);if(Number.isInteger(T)&&T>=1)return T}return 0}var kAriaDisabledRoles=`application.button.composite.gridcell.group.input.link.menuitem.scrollbar.separator.tab.checkbox.columnheader.combobox.grid.listbox.menu.menubar.menuitemcheckbox.menuitemradio.option.radio.radiogroup.row.rowheader.searchbox.select.slider.spinbutton.switch.tablist.textbox.toolbar.tree.treegrid.treeitem`.split(`.`);function getAriaDisabled(e){return isNativelyDisabled(e)||hasExplicitAriaDisabled(e)}function isNativelyDisabled(e){let w=[`BUTTON`,`INPUT`,`SELECT`,`TEXTAREA`,`OPTION`,`OPTGROUP`].includes(e.tagName);return w&&(e.hasAttribute(`disabled`)||belongsToDisabledFieldSet(e))}function belongsToDisabledFieldSet(e){let w=e?.closest(`FIELDSET[DISABLED]`);if(!w)return!1;let T=w.querySelector(`:scope > LEGEND`);return!T||!T.contains(e)}function hasExplicitAriaDisabled(e){if(!e)return!1;if(kAriaDisabledRoles.includes(getAriaRole(e)||``)){let w=(e.getAttribute(`aria-disabled`)||``).toLowerCase();if(w===`true`)return!0;if(w===`false`)return!1}return hasExplicitAriaDisabled(parentElementOrShadowHost(e))}function getAccessibleNameFromAssociatedLabels(e,w){return[...e].map(e=>getTextAlternativeInternal(e,{...w,embeddedInLabel:{element:e,hidden:isElementHiddenForAria(e)},embeddedInNativeTextAlternative:void 0,embeddedInLabelledBy:void 0,embeddedInDescribedBy:void 0,embeddedInTargetElement:void 0})).filter(e=>!!e).join(` `)}var cacheAccessibleName,cacheAccessibleNameHidden,cacheAccessibleErrorMessage,cacheAccessibleDescription,cacheIsHidden,cachePseudoContentBefore,cachePseudoContentAfter,cachesCounter=0;function beginAriaCaches(){++cachesCounter,cacheAccessibleName??=new Map,cacheAccessibleNameHidden??=new Map,cacheAccessibleDescription??=new Map,cacheAccessibleErrorMessage??=new Map,cacheIsHidden??=new Map,cachePseudoContentBefore??=new Map,cachePseudoContentAfter??=new Map}function endAriaCaches(){--cachesCounter||(cacheAccessibleName=void 0,cacheAccessibleNameHidden=void 0,cacheAccessibleDescription=void 0,cacheAccessibleErrorMessage=void 0,cacheIsHidden=void 0,cachePseudoContentBefore=void 0,cachePseudoContentAfter=void 0)}function matchesAttributePart(e,w){let T=typeof e==`string`&&!w.caseSensitive?e.toUpperCase():e,E=typeof w.value==`string`&&!w.caseSensitive?w.value.toUpperCase():w.value;return w.op===`<truthy>`?!!T:w.op===`=`?E instanceof RegExp?typeof T==`string`&&!!T.match(E):T===E:typeof T!=`string`||typeof E!=`string`?!1:w.op===`*=`?T.includes(E):w.op===`^=`?T.startsWith(E):w.op===`$=`?T.endsWith(E):w.op===`|=`?T===E||T.startsWith(`${E}-`):w.op===`~=`?T.split(` `).includes(E):!1}function shouldSkipForTextMatching(e){let w=e.ownerDocument;return e.nodeName===`SCRIPT`||e.nodeName===`NOSCRIPT`||e.nodeName===`STYLE`||w.head&&w.head.contains(e)}function elementText(e,w){let T=e.get(w);if(T===void 0){if(T={full:``,normalized:``,immediate:[]},!shouldSkipForTextMatching(w)){let E=``;if(w instanceof HTMLInputElement&&(w.type===`submit`||w.type===`button`))T={full:w.value,normalized:normalizeWhiteSpace(w.value),immediate:[w.value]};else{for(let D=w.firstChild;D;D=D.nextSibling)D.nodeType===Node.TEXT_NODE?(T.full+=D.nodeValue||``,E+=D.nodeValue||``):(E&&T.immediate.push(E),E=``,D.nodeType===Node.ELEMENT_NODE&&(T.full+=elementText(e,D).full));E&&T.immediate.push(E),w.shadowRoot&&(T.full+=elementText(e,w.shadowRoot).full),T.full&&(T.normalized=normalizeWhiteSpace(T.full))}}e.set(w,T)}return T}function elementMatchesText(e,w,T){if(shouldSkipForTextMatching(w)||!T(elementText(e,w)))return`none`;for(let E=w.firstChild;E;E=E.nextSibling)if(E.nodeType===Node.ELEMENT_NODE&&T(elementText(e,E)))return`selfAndChildren`;return w.shadowRoot&&T(elementText(e,w.shadowRoot))?`selfAndChildren`:`self`}function getElementLabels(e,w){let T=getAriaLabelledByElements(w);if(T)return T.map(w=>elementText(e,w));let E=w.getAttribute(`aria-label`);if(E!==null&&E.trim())return[{full:E,normalized:normalizeWhiteSpace(E),immediate:[E]}];let D=w.nodeName===`INPUT`&&w.type!==`hidden`;if([`BUTTON`,`METER`,`OUTPUT`,`PROGRESS`,`SELECT`,`TEXTAREA`].includes(w.nodeName)||D){let T=w.labels;if(T)return[...T].map(w=>elementText(e,w))}return[]}var kSupportedAttributes=[`selected`,`checked`,`pressed`,`expanded`,`level`,`disabled`,`name`,`include-hidden`];kSupportedAttributes.sort();function validateSupportedRole(e,w,T){if(!w.includes(T))throw Error(`"${e}" attribute is only supported for roles: ${w.slice().sort().map(e=>`"${e}"`).join(`, `)}`)}function validateSupportedValues(e,w){if(e.op!==`<truthy>`&&!w.includes(e.value))throw Error(`"${e.name}" must be one of ${w.map(e=>JSON.stringify(e)).join(`, `)}`)}function validateSupportedOp(e,w){if(!w.includes(e.op))throw Error(`"${e.name}" does not support "${e.op}" matcher`)}function validateAttributes(e,w){let T={role:w};for(let E of e)switch(E.name){case`checked`:validateSupportedRole(E.name,kAriaCheckedRoles,w),validateSupportedValues(E,[!0,!1,`mixed`]),validateSupportedOp(E,[`<truthy>`,`=`]),T.checked=E.op===`<truthy>`?!0:E.value;break;case`pressed`:validateSupportedRole(E.name,kAriaPressedRoles,w),validateSupportedValues(E,[!0,!1,`mixed`]),validateSupportedOp(E,[`<truthy>`,`=`]),T.pressed=E.op===`<truthy>`?!0:E.value;break;case`selected`:validateSupportedRole(E.name,kAriaSelectedRoles,w),validateSupportedValues(E,[!0,!1]),validateSupportedOp(E,[`<truthy>`,`=`]),T.selected=E.op===`<truthy>`?!0:E.value;break;case`expanded`:validateSupportedRole(E.name,kAriaExpandedRoles,w),validateSupportedValues(E,[!0,!1]),validateSupportedOp(E,[`<truthy>`,`=`]),T.expanded=E.op===`<truthy>`?!0:E.value;break;case`level`:if(validateSupportedRole(E.name,kAriaLevelRoles,w),typeof E.value==`string`&&(E.value=+E.value),E.op!==`=`||typeof E.value!=`number`||Number.isNaN(E.value))throw Error(`"level" attribute must be compared to a number`);T.level=E.value;break;case`disabled`:validateSupportedValues(E,[!0,!1]),validateSupportedOp(E,[`<truthy>`,`=`]),T.disabled=E.op===`<truthy>`?!0:E.value;break;case`name`:if(E.op===`<truthy>`)throw Error(`"name" attribute must have a value`);if(typeof E.value!=`string`&&!(E.value instanceof RegExp))throw TypeError(`"name" attribute must be a string or a regular expression`);T.name=E.value,T.nameOp=E.op,T.exact=E.caseSensitive;break;case`include-hidden`:validateSupportedValues(E,[!0,!1]),validateSupportedOp(E,[`<truthy>`,`=`]),T.includeHidden=E.op===`<truthy>`?!0:E.value;break;default:throw Error(`Unknown attribute "${E.name}", must be one of ${kSupportedAttributes.map(e=>`"${e}"`).join(`, `)}.`)}return T}function queryRole(e,w,T){let E=[],D=e=>{if(getAriaRole(e)===w.role&&!(w.selected!==void 0&&getAriaSelected(e)!==w.selected)&&!(w.checked!==void 0&&getAriaChecked(e)!==w.checked)&&!(w.pressed!==void 0&&getAriaPressed(e)!==w.pressed)&&!(w.expanded!==void 0&&getAriaExpanded(e)!==w.expanded)&&!(w.level!==void 0&&getAriaLevel(e)!==w.level)&&!(w.disabled!==void 0&&getAriaDisabled(e)!==w.disabled)){if(!w.includeHidden){let w=isElementHiddenForAria(e);if(w)return}if(w.name!==void 0){let E=normalizeWhiteSpace(getElementAccessibleName(e,!!w.includeHidden));if(typeof w.name==`string`&&(w.name=normalizeWhiteSpace(w.name)),T&&!w.exact&&w.nameOp===`=`&&(w.nameOp=`*=`),!matchesAttributePart(E,{op:w.nameOp||`=`,value:w.name,caseSensitive:!!w.exact}))return}E.push(e)}},O=e=>{let w=[];e.shadowRoot&&w.push(e.shadowRoot);for(let T of e.querySelectorAll(`*`))D(T),T.shadowRoot&&w.push(T.shadowRoot);w.forEach(O)};return O(e),E}function createRoleEngine(e){return{queryAll:(w,T)=>{let E=parseAttributeSelector(T),D=E.name.toLowerCase();if(!D)throw Error(`Role must not be empty`);let O=validateAttributes(E.attributes,D);beginAriaCaches();try{return queryRole(w,O,e)}finally{endAriaCaches()}}}}function asLocator(e,w,T=!1){return asLocators(e,w,T)[0]}function asLocators(e,w,T=!1,E=20,D){try{return innerAsLocators(new generators[e](D),parseSelector(w),T,E)}catch{return[w]}}function innerAsLocators(e,w,T=!1,E=20){let D=[...w.parts];for(let e=0;e<D.length-1;e++)if(D[e].name===`nth`&&D[e+1].name===`internal:control`&&D[e+1].body===`enter-frame`){let[w]=D.splice(e,1);D.splice(e+1,0,w)}let O=[],k=T?`frame-locator`:`page`;for(let w=0;w<D.length;w++){let T=D[w],A=k;if(k=`locator`,T.name===`nth`){T.body===`0`?O.push([e.generateLocator(A,`first`,``),e.generateLocator(A,`nth`,`0`)]):T.body===`-1`?O.push([e.generateLocator(A,`last`,``),e.generateLocator(A,`nth`,`-1`)]):O.push([e.generateLocator(A,`nth`,T.body)]);continue}if(T.name===`internal:text`){let{exact:w,text:E}=detectExact(T.body);O.push([e.generateLocator(A,`text`,E,{exact:w})]);continue}if(T.name===`internal:has-text`){let{exact:w,text:E}=detectExact(T.body);if(!w){O.push([e.generateLocator(A,`has-text`,E,{exact:w})]);continue}}if(T.name===`internal:has-not-text`){let{exact:w,text:E}=detectExact(T.body);if(!w){O.push([e.generateLocator(A,`has-not-text`,E,{exact:w})]);continue}}if(T.name===`internal:has`){let w=innerAsLocators(e,T.body.parsed,!1,E);O.push(w.map(w=>e.generateLocator(A,`has`,w)));continue}if(T.name===`internal:has-not`){let w=innerAsLocators(e,T.body.parsed,!1,E);O.push(w.map(w=>e.generateLocator(A,`hasNot`,w)));continue}if(T.name===`internal:and`){let w=innerAsLocators(e,T.body.parsed,!1,E);O.push(w.map(w=>e.generateLocator(A,`and`,w)));continue}if(T.name===`internal:or`){let w=innerAsLocators(e,T.body.parsed,!1,E);O.push(w.map(w=>e.generateLocator(A,`or`,w)));continue}if(T.name===`internal:chain`){let w=innerAsLocators(e,T.body.parsed,!1,E);O.push(w.map(w=>e.generateLocator(A,`chain`,w)));continue}if(T.name===`internal:label`){let{exact:w,text:E}=detectExact(T.body);O.push([e.generateLocator(A,`label`,E,{exact:w})]);continue}if(T.name===`internal:role`){let w=parseAttributeSelector(T.body),E={attrs:[]};for(let e of w.attributes)e.name===`name`?(E.exact=e.caseSensitive,E.name=e.value):(e.name===`level`&&typeof e.value==`string`&&(e.value=+e.value),E.attrs.push({name:e.name===`include-hidden`?`includeHidden`:e.name,value:e.value}));O.push([e.generateLocator(A,`role`,w.name,E)]);continue}if(T.name===`internal:testid`){let w=parseAttributeSelector(T.body),{value:E}=w.attributes[0];O.push([e.generateLocator(A,`test-id`,E)]);continue}if(T.name===`internal:attr`){let w=parseAttributeSelector(T.body),{name:E,value:D,caseSensitive:k}=w.attributes[0],j=D,M=!!k;if(E===`placeholder`){O.push([e.generateLocator(A,`placeholder`,j,{exact:M})]);continue}if(E===`alt`){O.push([e.generateLocator(A,`alt`,j,{exact:M})]);continue}if(E===`title`){O.push([e.generateLocator(A,`title`,j,{exact:M})]);continue}}let j=`default`,M=D[w+1];M&&M.name===`internal:control`&&M.body===`enter-frame`&&(j=`frame`,k=`frame-locator`,w++);let N=stringifySelector({parts:[T]}),P=e.generateLocator(A,j,N);if(j===`default`&&M&&[`internal:has-text`,`internal:has-not-text`].includes(M.name)){let{exact:T,text:E}=detectExact(M.body);if(!T){let D=e.generateLocator(`locator`,M.name===`internal:has-text`?`has-text`:`has-not-text`,E,{exact:T}),k={};M.name===`internal:has-text`?k.hasText=E:k.hasNotText=E;let j=e.generateLocator(A,`default`,N,k);O.push([e.chainLocators([P,D]),j]),w++;continue}}let F;if([`xpath`,`css`].includes(T.name)){let w=stringifySelector({parts:[T]},!0);F=e.generateLocator(A,j,w)}O.push([P,F].filter(Boolean))}return combineTokens(e,O,E)}function combineTokens(e,w,T){let E=w.map(()=>``),D=[],O=k=>{if(k===w.length)return D.push(e.chainLocators(E)),E.length<T;for(let e of w[k])if(E[k]=e,!O(k+1))return!1;return!0};return O(0),D}function detectExact(e){let w=!1,T=e.match(/^\/(.*)\/([igm]*)$/);return T?{text:new RegExp(T[1],T[2])}:(e.endsWith(`"`)?(e=JSON.parse(e),w=!0):e.endsWith(`"s`)?(e=JSON.parse(e.substring(0,e.length-1)),w=!0):e.endsWith(`"i`)&&(e=JSON.parse(e.substring(0,e.length-1)),w=!1),{exact:w,text:e})}var JavaScriptLocatorFactory=class{constructor(e){this.preferredQuote=e}generateLocator(e,w,T,E={}){switch(w){case`default`:return E.hasText===void 0?E.hasNotText===void 0?`locator(${this.quote(T)})`:`locator(${this.quote(T)}, { hasNotText: ${this.toHasText(E.hasNotText)} })`:`locator(${this.quote(T)}, { hasText: ${this.toHasText(E.hasText)} })`;case`frame`:return`frameLocator(${this.quote(T)})`;case`nth`:return`nth(${T})`;case`first`:return`first()`;case`last`:return`last()`;case`role`:{let e=[];isRegExp(E.name)?e.push(`name: ${this.regexToSourceString(E.name)}`):typeof E.name==`string`&&(e.push(`name: ${this.quote(E.name)}`),E.exact&&e.push(`exact: true`));for(let{name:w,value:T}of E.attrs)e.push(`${w}: ${typeof T==`string`?this.quote(T):T}`);let w=e.length?`, { ${e.join(`, `)} }`:``;return`getByRole(${this.quote(T)}${w})`}case`has-text`:return`filter({ hasText: ${this.toHasText(T)} })`;case`has-not-text`:return`filter({ hasNotText: ${this.toHasText(T)} })`;case`has`:return`filter({ has: ${T} })`;case`hasNot`:return`filter({ hasNot: ${T} })`;case`and`:return`and(${T})`;case`or`:return`or(${T})`;case`chain`:return`locator(${T})`;case`test-id`:return`getByTestId(${this.toTestIdValue(T)})`;case`text`:return this.toCallWithExact(`getByText`,T,!!E.exact);case`alt`:return this.toCallWithExact(`getByAltText`,T,!!E.exact);case`placeholder`:return this.toCallWithExact(`getByPlaceholder`,T,!!E.exact);case`label`:return this.toCallWithExact(`getByLabel`,T,!!E.exact);case`title`:return this.toCallWithExact(`getByTitle`,T,!!E.exact);default:throw Error(`Unknown selector kind ${w}`)}}chainLocators(e){return e.join(`.`)}regexToSourceString(e){return normalizeEscapedRegexQuotes(String(e))}toCallWithExact(e,w,T){return isRegExp(w)?`${e}(${this.regexToSourceString(w)})`:T?`${e}(${this.quote(w)}, { exact: true })`:`${e}(${this.quote(w)})`}toHasText(e){return isRegExp(e)?this.regexToSourceString(e):this.quote(e)}toTestIdValue(e){return isRegExp(e)?this.regexToSourceString(e):this.quote(e)}quote(e){var w;return escapeWithQuotes(e,(w=this.preferredQuote)??`'`)}},generators={javascript:JavaScriptLocatorFactory};function isRegExp(e){return e instanceof RegExp}var cacheAllowText=new Map,cacheDisallowText=new Map,kTextScoreRange=10,kExactPenalty=kTextScoreRange/2,kTestIdScore=1,kOtherTestIdScore=2,kIframeByAttributeScore=10,kBeginPenalizedScore=50,kPlaceholderScore=100,kLabelScore=120,kRoleWithNameScore=140,kAltTextScore=160,kTextScore=180,kTitleScore=200,kTextScoreRegex=250,kPlaceholderScoreExact=kPlaceholderScore+kExactPenalty,kLabelScoreExact=kLabelScore+kExactPenalty,kRoleWithNameScoreExact=kRoleWithNameScore+kExactPenalty,kAltTextScoreExact=kAltTextScore+kExactPenalty,kTextScoreExact=kTextScore+kExactPenalty,kTitleScoreExact=kTitleScore+kExactPenalty,kEndPenalizedScore=300,kCSSIdScore=500,kRoleWithoutNameScore=510,kCSSInputTypeNameScore=520,kCSSTagNameScore=530,kNthScore=1e4,kCSSFallbackScore=1e7;function generateSelector(e,w,T){e._evaluator.begin(),beginAriaCaches();try{let E=generateSelectorFor(e,w,T)||cssFallback(e,w,T);return joinTokens(E)}finally{cacheAllowText.clear(),cacheDisallowText.clear(),endAriaCaches(),e._evaluator.end()}}function filterRegexTokens(e){return e.filter(e=>e[0].selector[0]!==`/`)}function generateSelectorFor(e,w,T){if(w.ownerDocument.documentElement===w)return[{engine:`css`,selector:`html`,score:1}];let E=(E,O)=>{let k=E===w,A=O?buildTextCandidates(e,E,E===w):[];E!==w&&(A=filterRegexTokens(A));let j=buildNoTextCandidates(e,E,T).map(e=>[e]),M=chooseFirstSelector(e,w.ownerDocument,E,[...A,...j],k);A=filterRegexTokens(A);let N=w=>{let T=O&&!w.length,A=[...w,...j].filter(e=>M?combineScores(e)<combineScores(M):!0),N=A[0];if(N)for(let w=parentElementOrShadowHost(E);w;w=parentElementOrShadowHost(w)){let O=D(w,T);if(!O||M&&combineScores([...O,...N])>=combineScores(M))continue;if(N=chooseFirstSelector(e,w,E,A,k),!N)return;let j=[...O,...N];(!M||combineScores(j)<combineScores(M))&&(M=j)}};return N(A),E===w&&A.length&&N([]),M},D=(e,w)=>{let T=w?cacheAllowText:cacheDisallowText,D=T.get(e);return D===void 0&&(D=E(e,w),T.set(e,D)),D};return E(w,!T.noText)}function buildNoTextCandidates(e,w,T){let E=[];for(let e of[`data-testid`,`data-test-id`,`data-test`])e!==T.testIdAttributeName&&w.getAttribute(e)&&E.push({engine:`css`,selector:`[${e}=${quoteCSSAttributeValue(w.getAttribute(e))}]`,score:kOtherTestIdScore});if(!T.noCSSId){let e=w.getAttribute(`id`);e&&!isGuidLike(e)&&E.push({engine:`css`,selector:makeSelectorForId(e),score:kCSSIdScore})}if(E.push({engine:`css`,selector:cssEscape(w.nodeName.toLowerCase()),score:kCSSTagNameScore}),w.nodeName===`IFRAME`){for(let e of[`name`,`title`])w.getAttribute(e)&&E.push({engine:`css`,selector:`${cssEscape(w.nodeName.toLowerCase())}[${e}=${quoteCSSAttributeValue(w.getAttribute(e))}]`,score:kIframeByAttributeScore});return w.getAttribute(T.testIdAttributeName)&&E.push({engine:`css`,selector:`[${T.testIdAttributeName}=${quoteCSSAttributeValue(w.getAttribute(T.testIdAttributeName))}]`,score:kTestIdScore}),penalizeScoreForLength([E]),E}if(w.getAttribute(T.testIdAttributeName)&&E.push({engine:`internal:testid`,selector:`[${T.testIdAttributeName}=${escapeForAttributeSelector(w.getAttribute(T.testIdAttributeName),!0)}]`,score:kTestIdScore}),w.nodeName===`INPUT`||w.nodeName===`TEXTAREA`){let e=w;if(e.placeholder){E.push({engine:`internal:attr`,selector:`[placeholder=${escapeForAttributeSelector(e.placeholder,!0)}]`,score:kPlaceholderScoreExact});for(let w of suitableTextAlternatives(e.placeholder))E.push({engine:`internal:attr`,selector:`[placeholder=${escapeForAttributeSelector(w.text,!1)}]`,score:kPlaceholderScore-w.scoreBouns})}}let D=getElementLabels(e._evaluator._cacheText,w);for(let e of D){let w=e.normalized;E.push({engine:`internal:label`,selector:escapeForTextSelector(w,!0),score:kLabelScoreExact});for(let e of suitableTextAlternatives(w))E.push({engine:`internal:label`,selector:escapeForTextSelector(e.text,!1),score:kLabelScore-e.scoreBouns})}let O=getAriaRole(w);return O&&![`none`,`presentation`].includes(O)&&E.push({engine:`internal:role`,selector:O,score:kRoleWithoutNameScore}),w.getAttribute(`name`)&&[`BUTTON`,`FORM`,`FIELDSET`,`FRAME`,`IFRAME`,`INPUT`,`KEYGEN`,`OBJECT`,`OUTPUT`,`SELECT`,`TEXTAREA`,`MAP`,`META`,`PARAM`].includes(w.nodeName)&&E.push({engine:`css`,selector:`${cssEscape(w.nodeName.toLowerCase())}[name=${quoteCSSAttributeValue(w.getAttribute(`name`))}]`,score:kCSSInputTypeNameScore}),[`INPUT`,`TEXTAREA`].includes(w.nodeName)&&w.getAttribute(`type`)!==`hidden`&&w.getAttribute(`type`)&&E.push({engine:`css`,selector:`${cssEscape(w.nodeName.toLowerCase())}[type=${quoteCSSAttributeValue(w.getAttribute(`type`))}]`,score:kCSSInputTypeNameScore}),[`INPUT`,`TEXTAREA`,`SELECT`].includes(w.nodeName)&&w.getAttribute(`type`)!==`hidden`&&E.push({engine:`css`,selector:cssEscape(w.nodeName.toLowerCase()),score:kCSSInputTypeNameScore+1}),penalizeScoreForLength([E]),E}function buildTextCandidates(e,w,T){if(w.nodeName===`SELECT`)return[];let E=[],D=w.getAttribute(`title`);if(D){E.push([{engine:`internal:attr`,selector:`[title=${escapeForAttributeSelector(D,!0)}]`,score:kTitleScoreExact}]);for(let e of suitableTextAlternatives(D))E.push([{engine:`internal:attr`,selector:`[title=${escapeForAttributeSelector(e.text,!1)}]`,score:kTitleScore-e.scoreBouns}])}let O=w.getAttribute(`alt`);if(O&&[`APPLET`,`AREA`,`IMG`,`INPUT`].includes(w.nodeName)){E.push([{engine:`internal:attr`,selector:`[alt=${escapeForAttributeSelector(O,!0)}]`,score:kAltTextScoreExact}]);for(let e of suitableTextAlternatives(O))E.push([{engine:`internal:attr`,selector:`[alt=${escapeForAttributeSelector(e.text,!1)}]`,score:kAltTextScore-e.scoreBouns}])}let A=elementText(e._evaluator._cacheText,w).normalized;if(A){let e=suitableTextAlternatives(A);if(T){A.length<=80&&E.push([{engine:`internal:text`,selector:escapeForTextSelector(A,!0),score:kTextScoreExact}]);for(let w of e)E.push([{engine:`internal:text`,selector:escapeForTextSelector(w.text,!1),score:kTextScore-w.scoreBouns}])}let D={engine:`css`,selector:cssEscape(w.nodeName.toLowerCase()),score:kCSSTagNameScore};for(let w of e)E.push([D,{engine:`internal:has-text`,selector:escapeForTextSelector(w.text,!1),score:kTextScore-w.scoreBouns}]);if(A.length<=80){let e=RegExp(`^${escapeRegExp(A)}$`);E.push([D,{engine:`internal:has-text`,selector:escapeForTextSelector(e,!1),score:kTextScoreRegex}])}}let j=getAriaRole(w);if(j&&![`none`,`presentation`].includes(j)){let e=getElementAccessibleName(w,!1);if(e){E.push([{engine:`internal:role`,selector:`${j}[name=${escapeForAttributeSelector(e,!0)}]`,score:kRoleWithNameScoreExact}]);for(let w of suitableTextAlternatives(e))E.push([{engine:`internal:role`,selector:`${j}[name=${escapeForAttributeSelector(w.text,!1)}]`,score:kRoleWithNameScore-w.scoreBouns}])}}return penalizeScoreForLength(E),E}function makeSelectorForId(e){return/^[a-z][\w\-]+$/i.test(e)?`#${e}`:`[id="${cssEscape(e)}"]`}function cssFallback(e,w,T){let E=w.ownerDocument,D=[];function O(T){let O=D.slice();T&&O.unshift(T);let k=O.join(` > `),A=e.parseSelector(k),j=e.querySelector(A,E,!1);return j===w?k:void 0}function A(T){let D={engine:`css`,selector:T,score:kCSSFallbackScore},O=e.parseSelector(T),k=e.querySelectorAll(O,E);if(k.length===1)return[D];let A={engine:`nth`,selector:String(k.indexOf(w)),score:kNthScore};return[D,A]}for(let e=w;e&&e!==E;e=parentElementOrShadowHost(e)){let w=e.nodeName.toLowerCase(),E=``;if(e.id&&!T.noCSSId){let w=makeSelectorForId(e.id),T=O(w);if(T)return A(T);E=w}let j=e.parentNode,M=[...e.classList];for(let e=0;e<M.length;++e){let w=`.${cssEscape(M.slice(0,e+1).join(`.`))}`,T=O(w);if(T)return A(T);if(!E&&j){let e=j.querySelectorAll(w);e.length===1&&(E=w)}}if(j){let T=[...j.children],D=T.filter(e=>e.nodeName.toLowerCase()===w),M=D.indexOf(e)===0?cssEscape(w):`${cssEscape(w)}:nth-child(${1+T.indexOf(e)})`,N=O(M);if(N)return A(N);E||=M}else E||=cssEscape(w);D.unshift(E)}return A(O())}function penalizeScoreForLength(e){for(let w of e)for(let e of w)e.score>kBeginPenalizedScore&&e.score<kEndPenalizedScore&&(e.score+=Math.min(kTextScoreRange,e.selector.length/10|0))}function joinTokens(e){let w=[],T=``;for(let{engine:E,selector:D}of e)w.length&&(T!==`css`||E!==`css`||D.startsWith(`:nth-match(`))&&w.push(`>>`),T=E,E===`css`?w.push(D):w.push(`${E}=${D}`);return w.join(` `)}function combineScores(e){let w=0;for(let T=0;T<e.length;T++)w+=e[T].score*(e.length-T);return w}function chooseFirstSelector(e,w,T,E,D){let O=E.map(e=>({tokens:e,score:combineScores(e)}));O.sort((e,w)=>e.score-w.score);let k=null;for(let{tokens:E}of O){let O=e.parseSelector(joinTokens(E)),A=e.querySelectorAll(O,w);if(A[0]===T&&A.length===1)return E;let j=A.indexOf(T);if(!D||k||j===-1||A.length>5)continue;let M={engine:`nth`,selector:String(j),score:kNthScore};k=[...E,M]}return k}function isGuidLike(e){let w,T=0;for(let E=0;E<e.length;++E){let D=e[E],O;if(!(D===`-`||D===`_`)){if(O=D>=`a`&&D<=`z`?`lower`:D>=`A`&&D<=`Z`?`upper`:D>=`0`&&D<=`9`?`digit`:`other`,O===`lower`&&w===`upper`){w=O;continue}w&&w!==O&&++T,w=O}}return T>=e.length/4}function trimWordBoundary(e,w){if(e.length<=w)return e;e=e.substring(0,w);let T=e.match(/^(.*)\b(.+)$/);return T?T[1].trimEnd():``}function suitableTextAlternatives(e){let w=[];{let T=e.match(/^([\d.,]+)[^.,\w]/),E=T?T[1].length:0;if(E){let T=trimWordBoundary(e.substring(E).trimStart(),80);w.push({text:T,scoreBouns:T.length<=30?2:1})}}{let T=e.match(/[^.,\w]([\d.,]+)$/),E=T?T[1].length:0;if(E){let T=trimWordBoundary(e.substring(0,e.length-E).trimEnd(),80);w.push({text:T,scoreBouns:T.length<=30?2:1})}}return e.length<=30?w.push({text:e,scoreBouns:0}):(w.push({text:trimWordBoundary(e,80),scoreBouns:0}),w.push({text:trimWordBoundary(e,30),scoreBouns:1})),w=w.filter(e=>e.text),w.length||w.push({text:e.substring(0,80),scoreBouns:0}),w}function boxRightOf(e,w,T){let E=e.left-w.right;if(!(E<0||T!==void 0&&E>T))return E+Math.max(w.bottom-e.bottom,0)+Math.max(e.top-w.top,0)}function boxLeftOf(e,w,T){let E=w.left-e.right;if(!(E<0||T!==void 0&&E>T))return E+Math.max(w.bottom-e.bottom,0)+Math.max(e.top-w.top,0)}function boxAbove(e,w,T){let E=w.top-e.bottom;if(!(E<0||T!==void 0&&E>T))return E+Math.max(e.left-w.left,0)+Math.max(w.right-e.right,0)}function boxBelow(e,w,T){let E=e.top-w.bottom;if(!(E<0||T!==void 0&&E>T))return E+Math.max(e.left-w.left,0)+Math.max(w.right-e.right,0)}function boxNear(e,w,T){let E=T===void 0?50:T,D=0;return e.left-w.right>=0&&(D+=e.left-w.right),w.left-e.right>=0&&(D+=w.left-e.right),w.top-e.bottom>=0&&(D+=w.top-e.bottom),e.top-w.bottom>=0&&(D+=e.top-w.bottom),D>E?void 0:D}var kLayoutSelectorNames=[`left-of`,`right-of`,`above`,`below`,`near`];function layoutSelectorScore(e,w,T,E){let D=w.getBoundingClientRect(),O={"left-of":boxLeftOf,"right-of":boxRightOf,above:boxAbove,below:boxBelow,near:boxNear}[e],k;for(let e of T){if(e===w)continue;let T=O(D,e.getBoundingClientRect(),E);if(T===void 0)continue;(k===void 0||T<k)&&(k=T)}return k}var SelectorEvaluatorImpl=class{constructor(e){__publicField(this,`_engines`,new Map),__publicField(this,`_cacheQueryCSS`,new Map),__publicField(this,`_cacheMatches`,new Map),__publicField(this,`_cacheQuery`,new Map),__publicField(this,`_cacheMatchesSimple`,new Map),__publicField(this,`_cacheMatchesParents`,new Map),__publicField(this,`_cacheCallMatches`,new Map),__publicField(this,`_cacheCallQuery`,new Map),__publicField(this,`_cacheQuerySimple`,new Map),__publicField(this,`_cacheText`,new Map),__publicField(this,`_scoreMap`),__publicField(this,`_retainCacheCounter`,0);for(let[w,T]of e)this._engines.set(w,T);this._engines.set(`not`,notEngine),this._engines.set(`is`,isEngine),this._engines.set(`where`,isEngine),this._engines.set(`has`,hasEngine),this._engines.set(`scope`,scopeEngine),this._engines.set(`light`,lightEngine),this._engines.set(`visible`,visibleEngine),this._engines.set(`text`,textEngine),this._engines.set(`text-is`,textIsEngine),this._engines.set(`text-matches`,textMatchesEngine),this._engines.set(`has-text`,hasTextEngine),this._engines.set(`right-of`,createLayoutEngine(`right-of`)),this._engines.set(`left-of`,createLayoutEngine(`left-of`)),this._engines.set(`above`,createLayoutEngine(`above`)),this._engines.set(`below`,createLayoutEngine(`below`)),this._engines.set(`near`,createLayoutEngine(`near`)),this._engines.set(`nth-match`,nthMatchEngine);let w=[...this._engines.keys()];w.sort();let T=[...customCSSNames];if(T.sort(),w.join(`|`)!==T.join(`|`))throw Error(`Please keep customCSSNames in sync with evaluator engines: ${w.join(`|`)} vs ${T.join(`|`)}`)}begin(){++this._retainCacheCounter}end(){--this._retainCacheCounter,this._retainCacheCounter||(this._cacheQueryCSS.clear(),this._cacheMatches.clear(),this._cacheQuery.clear(),this._cacheMatchesSimple.clear(),this._cacheMatchesParents.clear(),this._cacheCallMatches.clear(),this._cacheCallQuery.clear(),this._cacheQuerySimple.clear(),this._cacheText.clear())}_cached(e,w,T,E){e.has(w)||e.set(w,[]);let D=e.get(w),O=D.find(e=>T.every((w,T)=>e.rest[T]===w));if(O)return O.result;let k=E();return D.push({rest:T,result:k}),k}_checkSelector(e){let w=typeof e==`object`&&e&&(Array.isArray(e)||`simples`in e&&e.simples.length);if(!w)throw Error(`Malformed selector "${e}"`);return e}matches(e,w,T){let E=this._checkSelector(w);this.begin();try{return this._cached(this._cacheMatches,e,[E,T.scope,T.pierceShadow,T.originalScope],()=>Array.isArray(E)?this._matchesEngine(isEngine,e,E,T):(this._hasScopeClause(E)&&(T=this._expandContextForScopeMatching(T)),this._matchesSimple(e,E.simples[E.simples.length-1].selector,T)?this._matchesParents(e,E,E.simples.length-2,T):!1))}finally{this.end()}}query(e,w){let T=this._checkSelector(w);this.begin();try{return this._cached(this._cacheQuery,T,[e.scope,e.pierceShadow,e.originalScope],()=>{if(Array.isArray(T))return this._queryEngine(isEngine,e,T);this._hasScopeClause(T)&&(e=this._expandContextForScopeMatching(e));let w=this._scoreMap;this._scoreMap=new Map;let E=this._querySimple(e,T.simples[T.simples.length-1].selector);return E=E.filter(w=>this._matchesParents(w,T,T.simples.length-2,e)),this._scoreMap.size&&E.sort((e,w)=>{let T=this._scoreMap.get(e),E=this._scoreMap.get(w);return T===E?0:T===void 0?1:E===void 0?-1:T-E}),this._scoreMap=w,E})}finally{this.end()}}_markScore(e,w){this._scoreMap&&this._scoreMap.set(e,w)}_hasScopeClause(e){return e.simples.some(e=>e.selector.functions.some(e=>e.name===`scope`))}_expandContextForScopeMatching(e){if(e.scope.nodeType!==1)return e;let w=parentElementOrShadowHost(e.scope);return w?{...e,scope:w,originalScope:e.originalScope||e.scope}:e}_matchesSimple(e,w,T){return this._cached(this._cacheMatchesSimple,e,[w,T.scope,T.pierceShadow,T.originalScope],()=>{if(e===T.scope||w.css&&!this._matchesCSS(e,w.css))return!1;for(let E of w.functions)if(!this._matchesEngine(this._getEngine(E.name),e,E.args,T))return!1;return!0})}_querySimple(e,w){return w.functions.length?this._cached(this._cacheQuerySimple,w,[e.scope,e.pierceShadow,e.originalScope],()=>{let T=w.css,E=w.functions;T===`*`&&E.length&&(T=void 0);let D,O=-1;T===void 0?(O=E.findIndex(e=>this._getEngine(e.name).query!==void 0),O===-1&&(O=0),D=this._queryEngine(this._getEngine(E[O].name),e,E[O].args)):D=this._queryCSS(e,T);for(let w=0;w<E.length;w++){if(w===O)continue;let T=this._getEngine(E[w].name);T.matches!==void 0&&(D=D.filter(D=>this._matchesEngine(T,D,E[w].args,e)))}for(let w=0;w<E.length;w++){if(w===O)continue;let T=this._getEngine(E[w].name);T.matches===void 0&&(D=D.filter(D=>this._matchesEngine(T,D,E[w].args,e)))}return D}):this._queryCSS(e,w.css||`*`)}_matchesParents(e,w,T,E){return T<0?!0:this._cached(this._cacheMatchesParents,e,[w,T,E.scope,E.pierceShadow,E.originalScope],()=>{let{selector:D,combinator:O}=w.simples[T];if(O===`>`){let O=parentElementOrShadowHostInContext(e,E);return!O||!this._matchesSimple(O,D,E)?!1:this._matchesParents(O,w,T-1,E)}if(O===`+`){let O=previousSiblingInContext(e,E);return!O||!this._matchesSimple(O,D,E)?!1:this._matchesParents(O,w,T-1,E)}if(O===``){let O=parentElementOrShadowHostInContext(e,E);for(;O;){if(this._matchesSimple(O,D,E)){if(this._matchesParents(O,w,T-1,E))return!0;if(w.simples[T-1].combinator===``)break}O=parentElementOrShadowHostInContext(O,E)}return!1}if(O===`~`){let O=previousSiblingInContext(e,E);for(;O;){if(this._matchesSimple(O,D,E)){if(this._matchesParents(O,w,T-1,E))return!0;if(w.simples[T-1].combinator===`~`)break}O=previousSiblingInContext(O,E)}return!1}if(O===`>=`){let O=e;for(;O;){if(this._matchesSimple(O,D,E)){if(this._matchesParents(O,w,T-1,E))return!0;if(w.simples[T-1].combinator===``)break}O=parentElementOrShadowHostInContext(O,E)}return!1}throw Error(`Unsupported combinator "${O}"`)})}_matchesEngine(e,w,T,E){if(e.matches)return this._callMatches(e,w,T,E);if(e.query)return this._callQuery(e,T,E).includes(w);throw Error(`Selector engine should implement "matches" or "query"`)}_queryEngine(e,w,T){if(e.query)return this._callQuery(e,T,w);if(e.matches)return this._queryCSS(w,`*`).filter(E=>this._callMatches(e,E,T,w));throw Error(`Selector engine should implement "matches" or "query"`)}_callMatches(e,w,T,E){return this._cached(this._cacheCallMatches,w,[e,E.scope,E.pierceShadow,E.originalScope,...T],()=>e.matches(w,T,E,this))}_callQuery(e,w,T){return this._cached(this._cacheCallQuery,e,[T.scope,T.pierceShadow,T.originalScope,...w],()=>e.query(T,w,this))}_matchesCSS(e,w){return e.matches(w)}_queryCSS(e,w){return this._cached(this._cacheQueryCSS,w,[e.scope,e.pierceShadow,e.originalScope],()=>{let T=[];function E(D){if(T=T.concat([...D.querySelectorAll(w)]),!!e.pierceShadow){D.shadowRoot&&E(D.shadowRoot);for(let e of D.querySelectorAll(`*`))e.shadowRoot&&E(e.shadowRoot)}}return E(e.scope),T})}_getEngine(e){let w=this._engines.get(e);if(!w)throw Error(`Unknown selector engine "${e}"`);return w}},isEngine={matches(e,w,T,E){if(w.length===0)throw Error(`"is" engine expects non-empty selector list`);return w.some(w=>E.matches(e,w,T))},query(e,w,T){if(w.length===0)throw Error(`"is" engine expects non-empty selector list`);let E=[];for(let D of w)E=E.concat(T.query(e,D));return w.length===1?E:sortInDOMOrder(E)}},hasEngine={matches(e,w,T,E){if(w.length===0)throw Error(`"has" engine expects non-empty selector list`);return E.query({...T,scope:e},w).length>0}},scopeEngine={matches(e,w,T,E){if(w.length!==0)throw Error(`"scope" engine expects no arguments`);let D=T.originalScope||T.scope;return D.nodeType===9?e===D.documentElement:e===D},query(e,w,T){if(w.length!==0)throw Error(`"scope" engine expects no arguments`);let E=e.originalScope||e.scope;if(E.nodeType===9){let e=E.documentElement;return e?[e]:[]}return E.nodeType===1?[E]:[]}},notEngine={matches(e,w,T,E){if(w.length===0)throw Error(`"not" engine expects non-empty selector list`);return!E.matches(e,w,T)}},lightEngine={query(e,w,T){return T.query({...e,pierceShadow:!1},w)},matches(e,w,T,E){return E.matches(e,w,{...T,pierceShadow:!1})}},visibleEngine={matches(e,w,T,E){if(w.length)throw Error(`"visible" engine expects no arguments`);return isElementVisible(e)}},textEngine={matches(e,w,T,E){if(w.length!==1||typeof w[0]!=`string`)throw Error(`"text" engine expects a single string`);let D=normalizeWhiteSpace(w[0]).toLowerCase(),O=e=>e.normalized.toLowerCase().includes(D);return elementMatchesText(E._cacheText,e,O)===`self`}},textIsEngine={matches(e,w,T,E){if(w.length!==1||typeof w[0]!=`string`)throw Error(`"text-is" engine expects a single string`);let D=normalizeWhiteSpace(w[0]),O=e=>!D&&!e.immediate.length?!0:e.immediate.some(e=>normalizeWhiteSpace(e)===D);return elementMatchesText(E._cacheText,e,O)!==`none`}},textMatchesEngine={matches(e,w,T,E){if(w.length===0||typeof w[0]!=`string`||w.length>2||w.length===2&&typeof w[1]!=`string`)throw Error(`"text-matches" engine expects a regexp body and optional regexp flags`);let D=new RegExp(w[0],w.length===2?w[1]:void 0),O=e=>D.test(e.full);return elementMatchesText(E._cacheText,e,O)===`self`}},hasTextEngine={matches(e,w,T,E){if(w.length!==1||typeof w[0]!=`string`)throw Error(`"has-text" engine expects a single string`);if(shouldSkipForTextMatching(e))return!1;let D=normalizeWhiteSpace(w[0]).toLowerCase(),O=e=>e.normalized.toLowerCase().includes(D);return O(elementText(E._cacheText,e))}};function createLayoutEngine(e){return{matches(w,T,E,D){let O=T.length&&typeof T[T.length-1]==`number`?T[T.length-1]:void 0,k=O===void 0?T:T.slice(0,T.length-1);if(T.length<1+(O===void 0?0:1))throw Error(`"${e}" engine expects a selector list and optional maximum distance in pixels`);let A=D.query(E,k),j=layoutSelectorScore(e,w,A,O);return j===void 0?!1:(D._markScore(w,j),!0)}}}var nthMatchEngine={query(e,w,T){let E=w[w.length-1];if(w.length<2)throw Error(`"nth-match" engine expects non-empty selector list and an index argument`);if(typeof E!=`number`||E<1)throw Error(`"nth-match" engine expects a one-based index as the last argument`);let D=isEngine.query(e,w.slice(0,w.length-1),T);return E--,E<D.length?[D[E]]:[]}};function parentElementOrShadowHostInContext(e,w){if(e!==w.scope)return w.pierceShadow?parentElementOrShadowHost(e):e.parentElement||void 0}function previousSiblingInContext(e,w){if(e!==w.scope)return e.previousElementSibling||void 0}function sortInDOMOrder(e){let w=new Map,T=[],E=[];function D(e){let E=w.get(e);if(E)return E;let O=parentElementOrShadowHost(e);if(O){let w=D(O);w.children.push(e)}else T.push(e);return E={children:[],taken:!1},w.set(e,E),E}for(let w of e)D(w).taken=!0;function O(e){let T=w.get(e);if(T.taken&&E.push(e),T.children.length>1){let w=new Set(T.children);T.children=[];let E=e.firstElementChild;for(;E&&T.children.length<w.size;)w.has(E)&&T.children.push(E),E=E.nextElementSibling;for(E=e.shadowRoot?e.shadowRoot.firstElementChild:null;E&&T.children.length<w.size;)w.has(E)&&T.children.push(E),E=E.nextElementSibling}T.children.forEach(O)}return T.forEach(O),E}function getByAttributeTextSelector(e,w,T){return`internal:attr=[${e}=${escapeForAttributeSelector(w,T?.exact||!1)}]`}function getByTestIdSelector(e,w){return`internal:testid=[${e}=${escapeForAttributeSelector(w,!0)}]`}function getByLabelSelector(e,w){return`internal:label=${escapeForTextSelector(e,!!w?.exact)}`}function getByAltTextSelector(e,w){return getByAttributeTextSelector(`alt`,e,w)}function getByTitleSelector(e,w){return getByAttributeTextSelector(`title`,e,w)}function getByPlaceholderSelector(e,w){return getByAttributeTextSelector(`placeholder`,e,w)}function getByTextSelector(e,w){return`internal:text=${escapeForTextSelector(e,!!w?.exact)}`}function getByRoleSelector(e,w={}){let T=[];return w.checked!==void 0&&T.push([`checked`,String(w.checked)]),w.disabled!==void 0&&T.push([`disabled`,String(w.disabled)]),w.selected!==void 0&&T.push([`selected`,String(w.selected)]),w.expanded!==void 0&&T.push([`expanded`,String(w.expanded)]),w.includeHidden!==void 0&&T.push([`include-hidden`,String(w.includeHidden)]),w.level!==void 0&&T.push([`level`,String(w.level)]),w.name!==void 0&&T.push([`name`,escapeForAttributeSelector(w.name,!!w.exact)]),w.pressed!==void 0&&T.push([`pressed`,String(w.pressed)]),`internal:role=${e}${T.map(([e,w])=>`[${e}=${w}]`).join(``)}`}var _Ivya=class e{constructor(){__publicField(this,`_engines`),__publicField(this,`_evaluator`),this._evaluator=new SelectorEvaluatorImpl(new Map),this._engines=new Map,this._engines.set(`xpath`,XPathEngine),this._engines.set(`xpath:light`,XPathEngine),this._engines.set(`role`,createRoleEngine(!1)),this._engines.set(`text`,this._createTextEngine(!0,!1)),this._engines.set(`text:light`,this._createTextEngine(!1,!1)),this._engines.set(`id`,this._createAttributeEngine(`id`,!0)),this._engines.set(`id:light`,this._createAttributeEngine(`id`,!1)),this._engines.set(`data-testid`,this._createAttributeEngine(`data-testid`,!0)),this._engines.set(`data-testid:light`,this._createAttributeEngine(`data-testid`,!1)),this._engines.set(`data-test-id`,this._createAttributeEngine(`data-test-id`,!0)),this._engines.set(`data-test-id:light`,this._createAttributeEngine(`data-test-id`,!1)),this._engines.set(`data-test`,this._createAttributeEngine(`data-test`,!0)),this._engines.set(`data-test:light`,this._createAttributeEngine(`data-test`,!1)),this._engines.set(`css`,this._createCSSEngine()),this._engines.set(`nth`,{queryAll:()=>[]}),this._engines.set(`visible`,this._createVisibleEngine()),this._engines.set(`internal:control`,{queryAll:()=>[]}),this._engines.set(`internal:has`,this._createHasEngine()),this._engines.set(`internal:has-not`,this._createHasNotEngine()),this._engines.set(`internal:and`,{queryAll:()=>[]}),this._engines.set(`internal:or`,{queryAll:()=>[]}),this._engines.set(`internal:chain`,this._createInternalChainEngine()),this._engines.set(`internal:label`,this._createInternalLabelEngine()),this._engines.set(`internal:text`,this._createTextEngine(!0,!0)),this._engines.set(`internal:has-text`,this._createInternalHasTextEngine()),this._engines.set(`internal:has-not-text`,this._createInternalHasNotTextEngine()),this._engines.set(`internal:attr`,this._createNamedAttributeEngine()),this._engines.set(`internal:testid`,this._createNamedAttributeEngine()),this._engines.set(`internal:role`,createRoleEngine(!0))}static create(w){return Object.assign(e.options,w),e.singleton||=new e}queryLocatorSelector(e,w=document.documentElement,T=!0){return this.querySelector(this.parseSelector(e),w,T)}queryLocatorSelectorAll(e,w=document.documentElement){return this.querySelectorAll(this.parseSelector(e),w)}querySelector(e,w,T=!0){let E=this.querySelectorAll(e,w);if(T&&E.length>1)throw this.strictModeViolationError(e,E);return E[0]||null}queryAllByRole(e,w,T=document.documentElement){let E=this.parseSelector(getByRoleSelector(e,w));return this.querySelectorAll(E,T)}queryAllByLabelText(e,w,T=document.documentElement){let E=this.parseSelector(getByLabelSelector(e,w));return this.querySelectorAll(E,T)}queryAllByTestId(w,T=document.documentElement){let E=this.parseSelector(getByTestIdSelector(e.options.testIdAttribute,w));return this.querySelectorAll(E,T)}queryAllByText(e,w,T=document.documentElement){let E=this.parseSelector(getByTextSelector(e,w));return this.querySelectorAll(E,T)}queryAllByTitle(e,w,T=document.documentElement){let E=this.parseSelector(getByTitleSelector(e,w));return this.querySelectorAll(E,T)}queryAllByPlaceholder(e,w,T=document.documentElement){let E=this.parseSelector(getByPlaceholderSelector(e,w));return this.querySelectorAll(E,T)}queryAllByAltText(e,w,T=document.documentElement){let E=this.parseSelector(getByAltTextSelector(e,w));return this.querySelectorAll(E,T)}queryByRole(e,w,T=document.documentElement){let E=this.parseSelector(getByRoleSelector(e,w));return this.querySelector(E,T,!1)}queryByLabelText(e,w,T=document.documentElement){let E=this.parseSelector(getByLabelSelector(e,w));return this.querySelector(E,T,!1)}queryByTestId(w,T=document.documentElement){let E=this.parseSelector(getByTestIdSelector(e.options.testIdAttribute,w));return this.querySelector(E,T,!1)}queryByText(e,w,T=document.documentElement){let E=this.parseSelector(getByTextSelector(e,w));return this.querySelector(E,T,!1)}queryByTitle(e,w,T=document.documentElement){let E=this.parseSelector(getByTitleSelector(e,w));return this.querySelector(E,T,!1)}queryByPlaceholder(e,w,T=document.documentElement){let E=this.parseSelector(getByPlaceholderSelector(e,w));return this.querySelector(E,T,!1)}queryByAltText(e,w,T=document.documentElement){let E=this.parseSelector(getByAltTextSelector(e,w));return this.querySelector(E,T,!1)}strictModeViolationError(e,w){let T=w.slice(0,10).map(e=>({preview:this.previewNode(e),selector:this.generateSelectorSimple(e)})),E=T.map((e,w)=>`
|
|
2
|
+
`:this.value}},StringValuedToken=class extends CSSParserToken{constructor(){super(...arguments),__publicField(this,`value`,``)}ASCIIMatch(e){return this.value.toLowerCase()===e.toLowerCase()}toJSON(){let e=this.constructor.prototype.constructor.prototype.toJSON.call(this);return e.value=this.value,e}},IdentToken=class extends StringValuedToken{constructor(e){super(),__publicField(this,`tokenType`,`IDENT`),this.value=e}toString(){return`IDENT(${this.value})`}toSource(){return escapeIdent(this.value)}},FunctionToken=class extends StringValuedToken{constructor(e){super(),__publicField(this,`tokenType`,`FUNCTION`),__publicField(this,`mirror`),this.value=e,this.mirror=`)`}toString(){return`FUNCTION(${this.value})`}toSource(){return`${escapeIdent(this.value)}(`}},AtKeywordToken=class extends StringValuedToken{constructor(e){super(),__publicField(this,`tokenType`,`AT-KEYWORD`),this.value=e}toString(){return`AT(${this.value})`}toSource(){return`@${escapeIdent(this.value)}`}},HashToken=class extends StringValuedToken{constructor(e){super(),__publicField(this,`tokenType`,`HASH`),__publicField(this,`type`),this.value=e,this.type=`unrestricted`}toString(){return`HASH(${this.value})`}toJSON(){let e=this.constructor.prototype.constructor.prototype.toJSON.call(this);return e.value=this.value,e.type=this.type,e}toSource(){return this.type===`id`?`#${escapeIdent(this.value)}`:`#${escapeHash(this.value)}`}},StringToken=class extends StringValuedToken{constructor(e){super(),__publicField(this,`tokenType`,`STRING`),this.value=e}toString(){return`"${escapeString(this.value)}"`}},URLToken=class extends StringValuedToken{constructor(e){super(),__publicField(this,`tokenType`,`URL`),this.value=e}toString(){return`URL(${this.value})`}toSource(){return`url("${escapeString(this.value)}")`}},NumberToken=class extends CSSParserToken{constructor(){super(),__publicField(this,`tokenType`,`NUMBER`),__publicField(this,`type`),__publicField(this,`repr`),this.type=`integer`,this.repr=``}toString(){return this.type===`integer`?`INT(${this.value})`:`NUMBER(${this.value})`}toJSON(){let e=super.toJSON();return e.value=this.value,e.type=this.type,e.repr=this.repr,e}toSource(){return this.repr}},PercentageToken=class extends CSSParserToken{constructor(){super(),__publicField(this,`tokenType`,`PERCENTAGE`),__publicField(this,`repr`),this.repr=``}toString(){return`PERCENTAGE(${this.value})`}toJSON(){let e=this.constructor.prototype.constructor.prototype.toJSON.call(this);return e.value=this.value,e.repr=this.repr,e}toSource(){return`${this.repr}%`}},DimensionToken=class extends CSSParserToken{constructor(){super(),__publicField(this,`tokenType`,`DIMENSION`),__publicField(this,`type`),__publicField(this,`repr`),__publicField(this,`unit`),this.type=`integer`,this.repr=``,this.unit=``}toString(){return`DIM(${this.value},${this.unit})`}toJSON(){let e=this.constructor.prototype.constructor.prototype.toJSON.call(this);return e.value=this.value,e.type=this.type,e.repr=this.repr,e.unit=this.unit,e}toSource(){let e=this.repr,w=escapeIdent(this.unit);return w[0].toLowerCase()===`e`&&(w[1]===`-`||between(w.charCodeAt(1),48,57))&&(w=`\\65 ${w.slice(1,w.length)}`),e+w}};function escapeIdent(e){e=`${e}`;let w=``,T=e.charCodeAt(0);for(let E=0;E<e.length;E++){let D=e.charCodeAt(E);if(D===0)throw new InvalidCharacterError(`Invalid character: the input contains U+0000.`);between(D,1,31)||D===127||E===0&&between(D,48,57)||E===1&&between(D,48,57)&&T===45?w+=`\\${D.toString(16)} `:D>=128||D===45||D===95||between(D,48,57)||between(D,65,90)||between(D,97,122)?w+=e[E]:w+=`\\${e[E]}`}return w}function escapeHash(e){e=`${e}`;let w=``;for(let T=0;T<e.length;T++){let E=e.charCodeAt(T);if(E===0)throw new InvalidCharacterError(`Invalid character: the input contains U+0000.`);E>=128||E===45||E===95||between(E,48,57)||between(E,65,90)||between(E,97,122)?w+=e[T]:w+=`\\${E.toString(16)} `}return w}function escapeString(e){e=`${e}`;let w=``;for(let T=0;T<e.length;T++){let E=e.charCodeAt(T);if(E===0)throw new InvalidCharacterError(`Invalid character: the input contains U+0000.`);between(E,1,31)||E===127?w+=`\\${E.toString(16)} `:E===34||E===92?w+=`\\${e[T]}`:w+=e[T]}return w}var InvalidSelectorError=class extends Error{};function parseCSS(e,w){let T;try{T=tokenize(e),T[T.length-1]instanceof EOFToken||T.push(new EOFToken)}catch(w){let T=`${w.message} while parsing selector "${e}"`,E=(w.stack||``).indexOf(w.message);throw E!==-1&&(w.stack=w.stack.substring(0,E)+T+w.stack.substring(E+w.message.length)),w.message=T,w}let E=T.find(e=>e instanceof AtKeywordToken||e instanceof BadStringToken||e instanceof BadURLToken||e instanceof ColumnToken||e instanceof CDOToken||e instanceof CDCToken||e instanceof SemicolonToken||e instanceof OpenCurlyToken||e instanceof CloseCurlyToken||e instanceof URLToken||e instanceof PercentageToken);if(E)throw new InvalidSelectorError(`Unsupported token "${E.toSource()}" while parsing selector "${e}"`);let D=0,O=new Set;function k(){return new InvalidSelectorError(`Unexpected token "${T[D].toSource()}" while parsing selector "${e}"`)}function A(){for(;T[D]instanceof WhitespaceToken;)D++}function j(e=D){return T[e]instanceof IdentToken}function M(e=D){return T[e]instanceof StringToken}function N(e=D){return T[e]instanceof NumberToken}function P(e=D){return T[e]instanceof CommaToken}function F(e=D){return T[e]instanceof OpenParenToken}function I(e=D){return T[e]instanceof CloseParenToken}function L(e=D){return T[e]instanceof FunctionToken}function R(e=D){return T[e]instanceof DelimToken&&T[e].value===`*`}function z(e=D){return T[e]instanceof EOFToken}function B(e=D){return T[e]instanceof DelimToken&&[`>`,`+`,`~`].includes(T[e].value)}function V(e=D){return P(e)||I(e)||z(e)||B(e)||T[e]instanceof WhitespaceToken}function H(){let e=[U()];for(;A(),P();)D++,e.push(U());return e}function U(){return A(),N()||M()?T[D++].value:W()}function W(){let e={simples:[]};for(A(),B()?e.simples.push({selector:{functions:[{name:`scope`,args:[]}]},combinator:``}):e.simples.push({selector:G(),combinator:``});;){if(A(),B())e.simples[e.simples.length-1].combinator=T[D++].value,A();else if(V())break;e.simples.push({combinator:``,selector:G()})}return e}function G(){let e=``,E=[];for(;!V();)if(j()||R())e+=T[D++].toSource();else if(T[D]instanceof HashToken)e+=T[D++].toSource();else if(T[D]instanceof DelimToken&&T[D].value===`.`)if(D++,j())e+=`.${T[D++].toSource()}`;else throw k();else if(T[D]instanceof ColonToken)if(D++,j())if(!w.has(T[D].value.toLowerCase()))e+=`:${T[D++].toSource()}`;else{let e=T[D++].value.toLowerCase();E.push({name:e,args:[]}),O.add(e)}else if(L()){let j=T[D++].value.toLowerCase();if(w.has(j)?(E.push({name:j,args:H()}),O.add(j)):e+=`:${j}(${K()})`,A(),!I())throw k();D++}else throw k();else if(T[D]instanceof OpenSquareToken){for(e+=`[`,D++;!(T[D]instanceof CloseSquareToken)&&!z();)e+=T[D++].toSource();if(!(T[D]instanceof CloseSquareToken))throw k();e+=`]`,D++}else throw k();if(!e&&!E.length)throw k();return{css:e||void 0,functions:E}}function K(){let e=``,w=1;for(;!z()&&((F()||L())&&w++,I()&&w--,w);)e+=T[D++].toSource();return e}let q=H();if(!z())throw k();if(q.some(e=>typeof e!=`object`||!(`simples`in e)))throw new InvalidSelectorError(`Error while parsing selector "${e}"`);return{selector:q,names:Array.from(O)}}var kNestedSelectorNames=new Set([`internal:has`,`internal:has-not`,`internal:and`,`internal:or`,`internal:chain`,`left-of`,`right-of`,`above`,`below`,`near`]),kNestedSelectorNamesWithDistance=new Set([`left-of`,`right-of`,`above`,`below`,`near`]),customCSSNames=new Set([`not`,`is`,`where`,`has`,`scope`,`light`,`visible`,`text`,`text-matches`,`text-is`,`has-text`,`above`,`below`,`right-of`,`left-of`,`near`,`nth-match`]);function parseSelector(e){let w=parseSelectorString(e),T=[];for(let e of w.parts){if(e.name===`css`||e.name===`css:light`){e.name===`css:light`&&(e.body=`:light(${e.body})`);let w=parseCSS(e.body,customCSSNames);T.push({name:`css`,body:w.selector,source:e.body});continue}if(kNestedSelectorNames.has(e.name)){let w,E;try{let T=JSON.parse(`[${e.body}]`);if(!Array.isArray(T)||T.length<1||T.length>2||typeof T[0]!=`string`)throw new InvalidSelectorError(`Malformed selector: ${e.name}=${e.body}`);if(w=T[0],T.length===2){if(typeof T[1]!=`number`||!kNestedSelectorNamesWithDistance.has(e.name))throw new InvalidSelectorError(`Malformed selector: ${e.name}=${e.body}`);E=T[1]}}catch{throw new InvalidSelectorError(`Malformed selector: ${e.name}=${e.body}`)}let D={name:e.name,source:e.body,body:{parsed:parseSelector(w),distance:E}},O=[...D.body.parsed.parts].reverse().find(e=>e.name===`internal:control`&&e.body===`enter-frame`),k=O?D.body.parsed.parts.indexOf(O):-1;k!==-1&&selectorPartsEqual(D.body.parsed.parts.slice(0,k+1),T.slice(0,k+1))&&D.body.parsed.parts.splice(0,k+1),T.push(D);continue}T.push({...e,source:e.body})}if(kNestedSelectorNames.has(T[0].name))throw new InvalidSelectorError(`"${T[0].name}" selector cannot be first`);return{capture:w.capture,parts:T}}function selectorPartsEqual(e,w){return stringifySelector({parts:e})===stringifySelector({parts:w})}function stringifySelector(e,w){return typeof e==`string`?e:e.parts.map((T,E)=>{let D=!0;!w&&E!==e.capture&&(T.name===`css`||T.name===`xpath`&&T.source.startsWith(`//`)||T.source.startsWith(`..`))&&(D=!1);let O=D?`${T.name}=`:``;return`${E===e.capture?`*`:``}${O}${T.source}`}).join(` >> `)}function visitAllSelectorParts(e,w){let T=(e,E)=>{for(let D of e.parts)w(D,E),kNestedSelectorNames.has(D.name)&&T(D.body.parsed,!0)};T(e,!1)}function parseSelectorString(e){let w=0,T,E=0,D={parts:[]},O=()=>{let T=e.substring(E,w).trim(),O=T.indexOf(`=`),k,A;O!==-1&&T.substring(0,O).trim().match(/^[\w\-+:*]+$/)?(k=T.substring(0,O).trim(),A=T.substring(O+1)):T.length>1&&T[0]===`"`&&T[T.length-1]===`"`||T.length>1&&T[0]===`'`&&T[T.length-1]===`'`?(k=`text`,A=T):/^\(*\/\//.test(T)||T.startsWith(`..`)?(k=`xpath`,A=T):(k=`css`,A=T);let j=!1;if(k[0]===`*`&&(j=!0,k=k.substring(1)),D.parts.push({name:k,body:A}),j){if(D.capture!==void 0)throw new InvalidSelectorError(`Only one of the selectors can capture using * modifier`);D.capture=D.parts.length-1}};if(!e.includes(`>>`))return w=e.length,O(),D;let k=()=>{let T=e.substring(E,w),D=T.match(/^\s*text\s*=(.*)$/);return!!D&&!!D[1]};for(;w<e.length;){let D=e[w];D===`\\`&&w+1<e.length?w+=2:D===T?(T=void 0,w++):!T&&(D===`"`||D===`'`||D==="`")&&!k()?(T=D,w++):!T&&D===`>`&&e[w+1]===`>`?(O(),w+=2,E=w):w++}return O(),D}function parseAttributeSelector(e,w){let T=0,E=e.length===0,D=()=>e[T]||``,O=()=>{let w=D();return++T,E=T>=e.length,w},k=w=>{throw E?new InvalidSelectorError(`Unexpected end of selector while parsing selector \`${e}\``):new InvalidSelectorError(`Error while parsing selector \`${e}\` - unexpected symbol "${D()}" at position ${T}${w?` during ${w}`:``}`)};function A(){for(;!E&&/\s/.test(D());)O()}function j(e){return e>=``||e>=`0`&&e<=`9`||e>=`A`&&e<=`Z`||e>=`a`&&e<=`z`||e>=`0`&&e<=`9`||e===`_`||e===`-`}function M(){let e=``;for(A();!E&&j(D());)e+=O();return e}function N(e){let w=O();for(w!==e&&k(`parsing quoted string`);!E&&D()!==e;)D()===`\\`&&O(),w+=O();return D()!==e&&k(`parsing quoted string`),w+=O(),w}function P(){O()!==`/`&&k(`parsing regular expression`);let w=``,T=!1;for(;!E;){if(D()===`\\`)w+=O(),E&&k(`parsing regular expression`);else if(T&&D()===`]`)T=!1;else if(!T&&D()===`[`)T=!0;else if(!T&&D()===`/`)break;w+=O()}O()!==`/`&&k(`parsing regular expression`);let A=``;for(;!E&&D().match(/[dgimsuy]/);)A+=O();try{return new RegExp(w,A)}catch(w){throw new InvalidSelectorError(`Error while parsing selector \`${e}\`: ${w.message}`)}}function F(){let e=``;return A(),e=D()===`'`||D()===`"`?N(D()).slice(1,-1):M(),e||k(`parsing property path`),e}function I(){A();let e=``;return E||(e+=O()),!E&&e!==`=`&&(e+=O()),[`=`,`*=`,`^=`,`$=`,`|=`,`~=`].includes(e)||k(`parsing operator`),e}function L(){O();let w=[];for(w.push(F()),A();D()===`.`;)O(),w.push(F()),A();if(D()===`]`)return O(),{name:w.join(`.`),jsonPath:w,op:`<truthy>`,value:null,caseSensitive:!1};let T=I(),M,L=!0;if(A(),D()===`/`){if(T!==`=`)throw new InvalidSelectorError(`Error while parsing selector \`${e}\` - cannot use ${T} in attribute with regular expression`);M=P()}else if(D()===`'`||D()===`"`)M=N(D()).slice(1,-1),A(),D()===`i`||D()===`I`?(L=!1,O()):(D()===`s`||D()===`S`)&&(L=!0,O());else{for(M=``;!E&&(j(D())||D()===`+`||D()===`.`);)M+=O();M===`true`?M=!0:M===`false`&&(M=!1)}if(A(),D()!==`]`&&k(`parsing attribute value`),O(),T!==`=`&&typeof M!=`string`)throw new InvalidSelectorError(`Error while parsing selector \`${e}\` - cannot use ${T} in attribute with non-string matching value - ${M}`);return{name:w.join(`.`),jsonPath:w,op:T,value:M,caseSensitive:L}}let R={name:``,attributes:[]};for(R.name=M(),A();D()===`[`;)R.attributes.push(L()),A();if(E||k(void 0),!R.name&&!R.attributes.length)throw new InvalidSelectorError(`Error while parsing selector \`${e}\` - selector cannot be empty`);return R}function hasExplicitAccessibleName(e){return e.hasAttribute(`aria-label`)||e.hasAttribute(`aria-labelledby`)}var kAncestorPreventingLandmark=`article:not([role]), aside:not([role]), main:not([role]), nav:not([role]), section:not([role]), [role=article], [role=complementary], [role=main], [role=navigation], [role=region]`,kGlobalAriaAttributes=new Map([[`aria-atomic`,void 0],[`aria-busy`,void 0],[`aria-controls`,void 0],[`aria-current`,void 0],[`aria-describedby`,void 0],[`aria-details`,void 0],[`aria-dropeffect`,void 0],[`aria-flowto`,void 0],[`aria-grabbed`,void 0],[`aria-hidden`,void 0],[`aria-keyshortcuts`,void 0],[`aria-label`,new Set([`caption`,`code`,`deletion`,`emphasis`,`generic`,`insertion`,`paragraph`,`presentation`,`strong`,`subscript`,`superscript`])],[`aria-labelledby`,new Set([`caption`,`code`,`deletion`,`emphasis`,`generic`,`insertion`,`paragraph`,`presentation`,`strong`,`subscript`,`superscript`])],[`aria-live`,void 0],[`aria-owns`,void 0],[`aria-relevant`,void 0],[`aria-roledescription`,new Set([`generic`])]]);function hasGlobalAriaAttribute(e,w){return[...kGlobalAriaAttributes].some(([T,E])=>!E?.has(w||``)&&e.hasAttribute(T))}function hasTabIndex(e){return!Number.isNaN(Number(String(e.getAttribute(`tabindex`))))}function isFocusable(e){return!isNativelyDisabled(e)&&(isNativelyFocusable(e)||hasTabIndex(e))}function isNativelyFocusable(e){let w=elementSafeTagName(e);return[`BUTTON`,`DETAILS`,`SELECT`,`TEXTAREA`].includes(w)?!0:w===`A`||w===`AREA`?e.hasAttribute(`href`):w===`INPUT`?!e.hidden:!1}var kImplicitRoleByTagName={A:e=>e.hasAttribute(`href`)?`link`:null,AREA:e=>e.hasAttribute(`href`)?`link`:null,ARTICLE:()=>`article`,ASIDE:()=>`complementary`,BLOCKQUOTE:()=>`blockquote`,BUTTON:()=>`button`,CAPTION:()=>`caption`,CODE:()=>`code`,DATALIST:()=>`listbox`,DD:()=>`definition`,DEL:()=>`deletion`,DETAILS:()=>`group`,DFN:()=>`term`,DIALOG:()=>`dialog`,DT:()=>`term`,EM:()=>`emphasis`,FIELDSET:()=>`group`,FIGURE:()=>`figure`,FOOTER:e=>closestCrossShadow(e,kAncestorPreventingLandmark)?null:`contentinfo`,FORM:e=>hasExplicitAccessibleName(e)?`form`:null,H1:()=>`heading`,H2:()=>`heading`,H3:()=>`heading`,H4:()=>`heading`,H5:()=>`heading`,H6:()=>`heading`,HEADER:e=>closestCrossShadow(e,kAncestorPreventingLandmark)?null:`banner`,HR:()=>`separator`,HTML:()=>`document`,IMG:e=>e.getAttribute(`alt`)===``&&!e.getAttribute(`title`)&&!hasGlobalAriaAttribute(e)&&!hasTabIndex(e)?`presentation`:`img`,INPUT:e=>{let w=e.type.toLowerCase();if(w===`search`)return e.hasAttribute(`list`)?`combobox`:`searchbox`;if([`email`,`tel`,`text`,`url`,``].includes(w)){let w=getIdRefs(e,e.getAttribute(`list`))[0];return w&&elementSafeTagName(w)===`DATALIST`?`combobox`:`textbox`}return w===`hidden`?``:{button:`button`,checkbox:`checkbox`,image:`button`,number:`spinbutton`,radio:`radio`,range:`slider`,reset:`button`,submit:`button`}[w]||`textbox`},INS:()=>`insertion`,LI:()=>`listitem`,MAIN:()=>`main`,MARK:()=>`mark`,MATH:()=>`math`,MENU:()=>`list`,METER:()=>`meter`,NAV:()=>`navigation`,OL:()=>`list`,OPTGROUP:()=>`group`,OPTION:()=>`option`,OUTPUT:()=>`status`,P:()=>`paragraph`,PROGRESS:()=>`progressbar`,SECTION:e=>hasExplicitAccessibleName(e)?`region`:null,SELECT:e=>e.hasAttribute(`multiple`)||e.size>1?`listbox`:`combobox`,STRONG:()=>`strong`,SUB:()=>`subscript`,SUP:()=>`superscript`,SVG:()=>`img`,TABLE:()=>`table`,TBODY:()=>`rowgroup`,TD:e=>{let w=closestCrossShadow(e,`table`),T=w?getExplicitAriaRole(w):``;return T===`grid`||T===`treegrid`?`gridcell`:`cell`},TEXTAREA:()=>`textbox`,TFOOT:()=>`rowgroup`,TH:e=>{if(e.getAttribute(`scope`)===`col`)return`columnheader`;if(e.getAttribute(`scope`)===`row`)return`rowheader`;let w=closestCrossShadow(e,`table`),T=w?getExplicitAriaRole(w):``;return T===`grid`||T===`treegrid`?`gridcell`:`cell`},THEAD:()=>`rowgroup`,TIME:()=>`time`,TR:()=>`row`,UL:()=>`list`},kPresentationInheritanceParents={DD:[`DL`,`DIV`],DIV:[`DL`],DT:[`DL`,`DIV`],LI:[`OL`,`UL`],TBODY:[`TABLE`],TD:[`TR`],TFOOT:[`TABLE`],TH:[`TR`],THEAD:[`TABLE`],TR:[`THEAD`,`TBODY`,`TFOOT`,`TABLE`]};function getImplicitAriaRole(e){var w;let T=(w=kImplicitRoleByTagName[elementSafeTagName(e)])?.call(kImplicitRoleByTagName,e)||``;if(!T)return null;let E=e;for(;E;){let e=parentElementOrShadowHost(E),w=kPresentationInheritanceParents[elementSafeTagName(E)];if(!w||!e||!w.includes(elementSafeTagName(e)))break;let T=getExplicitAriaRole(e);if((T===`none`||T===`presentation`)&&!hasPresentationConflictResolution(e,T))return T;E=e}return T}var allRoles=`alert.alertdialog.application.article.banner.blockquote.button.caption.cell.checkbox.code.columnheader.combobox.command.complementary.composite.contentinfo.definition.deletion.dialog.directory.document.emphasis.feed.figure.form.generic.grid.gridcell.group.heading.img.input.insertion.landmark.link.list.listbox.listitem.log.main.marquee.math.meter.menu.menubar.menuitem.menuitemcheckbox.menuitemradio.navigation.none.note.option.paragraph.presentation.progressbar.radio.radiogroup.range.region.roletype.row.rowgroup.rowheader.scrollbar.search.searchbox.section.sectionhead.select.separator.slider.spinbutton.status.strong.structure.subscript.superscript.switch.tab.table.tablist.tabpanel.term.textbox.time.timer.toolbar.tooltip.tree.treegrid.treeitem.widget.window`.split(`.`),abstractRoles=[`command`,`composite`,`input`,`landmark`,`range`,`roletype`,`section`,`sectionhead`,`select`,`structure`,`widget`,`window`],validRoles=allRoles.filter(e=>!abstractRoles.includes(e));function getExplicitAriaRole(e){let w=(e.getAttribute(`role`)||``).split(` `).map(e=>e.trim());return w.find(e=>validRoles.includes(e))||null}function hasPresentationConflictResolution(e,w){return hasGlobalAriaAttribute(e,w)||isFocusable(e)}function getAriaRole(e){let w=getExplicitAriaRole(e);if(!w)return getImplicitAriaRole(e);if(w===`none`||w===`presentation`){let w=getImplicitAriaRole(e);if(hasPresentationConflictResolution(e,w))return w}return w}function getAriaBoolean(e){return e===null?void 0:e.toLowerCase()===`true`}function isElementIgnoredForAria(e){return[`STYLE`,`SCRIPT`,`NOSCRIPT`,`TEMPLATE`].includes(elementSafeTagName(e))}function isElementHiddenForAria(e){if(isElementIgnoredForAria(e))return!0;let w=getElementComputedStyle(e),T=e.nodeName===`SLOT`;if(w?.display===`contents`&&!T){for(let w=e.firstChild;w;w=w.nextSibling)if(w.nodeType===1&&!isElementHiddenForAria(w)||w.nodeType===3&&isVisibleTextNode(w))return!1;return!0}let E=e.nodeName===`OPTION`&&!!e.closest(`select`);return!E&&!T&&!isElementStyleVisibilityVisible(e,w)?!0:belongsToDisplayNoneOrAriaHiddenOrNonSlotted(e)}function belongsToDisplayNoneOrAriaHiddenOrNonSlotted(e){let w=cacheIsHidden?.get(e);if(w===void 0){if(w=!1,e.parentElement&&e.parentElement.shadowRoot&&!e.assignedSlot&&(w=!0),!w){let T=getElementComputedStyle(e);w=!T||T.display===`none`||getAriaBoolean(e.getAttribute(`aria-hidden`))===!0}if(!w){let T=parentElementOrShadowHost(e);T&&(w=belongsToDisplayNoneOrAriaHiddenOrNonSlotted(T))}cacheIsHidden?.set(e,w)}return w}function getIdRefs(e,w){if(!w)return[];let T=enclosingShadowRootOrDocument(e);if(!T)return[];try{let e=w.split(` `).filter(e=>!!e),E=new Set;for(let w of e){let e=T.querySelector(`#${CSS.escape(w)}`);e&&E.add(e)}return[...E]}catch{return[]}}function trimFlatString(e){return e.trim()}function asFlatString(e){return e.split(`\xA0`).map(e=>e.replace(/\r\n/g,`
|
|
3
|
+
`).replace(/[\u200b\u00ad]/g,``).replace(/\s\s*/g,` `)).join(`\xA0`).trim()}function queryInAriaOwned(e,w){let T=[...e.querySelectorAll(w)];for(let E of getIdRefs(e,e.getAttribute(`aria-owns`)))E.matches(w)&&T.push(E),T.push(...E.querySelectorAll(w));return T}function getPseudoContent(e,w){let T=w===`::before`?cachePseudoContentBefore:cachePseudoContentAfter;if(T?.has(e))return T?.get(e)||``;let E=getElementComputedStyle(e,w),D=getPseudoContentImpl(E);return T&&T.set(e,D),D}function getPseudoContentImpl(e){if(!e)return``;let w=e.content;if(w[0]===`'`&&w[w.length-1]===`'`||w[0]===`"`&&w[w.length-1]===`"`){let T=w.substring(1,w.length-1),E=e.display||`inline`;return E===`inline`?T:` ${T} `}return``}function getAriaLabelledByElements(e){let w=e.getAttribute(`aria-labelledby`);return w===null?null:getIdRefs(e,w)}function allowsNameFromContent(e,w){let T=[`button`,`cell`,`checkbox`,`columnheader`,`gridcell`,`heading`,`link`,`menuitem`,`menuitemcheckbox`,`menuitemradio`,`option`,`radio`,`row`,`rowheader`,`switch`,`tab`,`tooltip`,`treeitem`].includes(e),E=w&&[``,`caption`,`code`,`contentinfo`,`definition`,`deletion`,`emphasis`,`insertion`,`list`,`listitem`,`mark`,`none`,`paragraph`,`presentation`,`region`,`row`,`rowgroup`,`section`,`strong`,`subscript`,`superscript`,`table`,`term`,`time`].includes(e);return T||E}function getElementAccessibleName(e,w){let T=w?cacheAccessibleNameHidden:cacheAccessibleName,E=T?.get(e);if(E===void 0){E=``;let D=[`caption`,`code`,`definition`,`deletion`,`emphasis`,`generic`,`insertion`,`mark`,`paragraph`,`presentation`,`strong`,`subscript`,`suggestion`,`superscript`,`term`,`time`].includes(getAriaRole(e)||``);D||(E=asFlatString(getTextAlternativeInternal(e,{includeHidden:w,visitedElements:new Set,embeddedInDescribedBy:void 0,embeddedInLabelledBy:void 0,embeddedInLabel:void 0,embeddedInNativeTextAlternative:void 0,embeddedInTargetElement:`self`}))),T?.set(e,E)}return E}function getElementAccessibleDescription(e,w){let T=cacheAccessibleDescription,E=T?.get(e);if(E===void 0){if(E=``,e.hasAttribute(`aria-describedby`)){let T=getIdRefs(e,e.getAttribute(`aria-describedby`));E=asFlatString(T.map(e=>getTextAlternativeInternal(e,{includeHidden:w,visitedElements:new Set,embeddedInDescribedBy:{element:e,hidden:isElementHiddenForAria(e)}})).join(` `))}else E=e.hasAttribute(`aria-description`)?asFlatString(e.getAttribute(`aria-description`)||``):asFlatString(e.getAttribute(`title`)||``);T?.set(e,E)}return E}var kAriaInvalidRoles=[`application`,`checkbox`,`combobox`,`gridcell`,`listbox`,`radiogroup`,`slider`,`spinbutton`,`textbox`,`tree`,`columnheader`,`rowheader`,`searchbox`,`switch`,`treegrid`];function getAriaInvalid(e){let w=getAriaRole(e)||``;if(!w||!kAriaInvalidRoles.includes(w))return`false`;let T=e.getAttribute(`aria-invalid`);return!T||T.trim()===``||T.toLocaleLowerCase()===`false`?`false`:T===`true`||T===`grammar`||T===`spelling`?T:`true`}function getValidityInvalid(e){if(`validity`in e){let w=e.validity;return w?.valid===!1}return!1}function getElementAccessibleErrorMessage(e){let w=cacheAccessibleErrorMessage,T=cacheAccessibleErrorMessage?.get(e);if(T===void 0){T=``;let E=getAriaInvalid(e)!==`false`,D=getValidityInvalid(e);if(E||D){let w=e.getAttribute(`aria-errormessage`),E=getIdRefs(e,w),D=E.map(e=>asFlatString(getTextAlternativeInternal(e,{visitedElements:new Set,embeddedInDescribedBy:{element:e,hidden:isElementHiddenForAria(e)}})));T=D.join(` `).trim()}w?.set(e,T)}return T}function getTextAlternativeInternal(e,w){var T,E,D,O;if(w.visitedElements.has(e))return``;let k={...w,embeddedInTargetElement:w.embeddedInTargetElement===`self`?`descendant`:w.embeddedInTargetElement};if(!w.includeHidden){let k=!!(T=w.embeddedInLabelledBy)?.hidden||!!(E=w.embeddedInDescribedBy)?.hidden||!!(D=w.embeddedInNativeTextAlternative)?.hidden||!!(O=w.embeddedInLabel)?.hidden;if(isElementIgnoredForAria(e)||!k&&isElementHiddenForAria(e))return w.visitedElements.add(e),``}let A=getAriaLabelledByElements(e);if(!w.embeddedInLabelledBy){let e=(A||[]).map(e=>getTextAlternativeInternal(e,{...w,embeddedInLabelledBy:{element:e,hidden:isElementHiddenForAria(e)},embeddedInDescribedBy:void 0,embeddedInTargetElement:void 0,embeddedInLabel:void 0,embeddedInNativeTextAlternative:void 0})).join(` `);if(e)return e}let j=getAriaRole(e)||``,M=elementSafeTagName(e);if(w.embeddedInLabel||w.embeddedInLabelledBy||w.embeddedInTargetElement===`descendant`){let T=[...e.labels||[]].includes(e),E=(A||[]).includes(e);if(!T&&!E){if(j===`textbox`)return w.visitedElements.add(e),M===`INPUT`||M===`TEXTAREA`?e.value:e.textContent||``;if([`combobox`,`listbox`].includes(j)){w.visitedElements.add(e);let T;if(M===`SELECT`)T=[...e.selectedOptions],!T.length&&e.options.length&&T.push(e.options[0]);else{let w=j===`combobox`?queryInAriaOwned(e,`*`).find(e=>getAriaRole(e)===`listbox`):e;T=w?queryInAriaOwned(w,`[aria-selected="true"]`).filter(e=>getAriaRole(e)===`option`):[]}return!T.length&&M===`INPUT`?e.value:T.map(e=>getTextAlternativeInternal(e,k)).join(` `)}if([`progressbar`,`scrollbar`,`slider`,`spinbutton`,`meter`].includes(j))return w.visitedElements.add(e),e.hasAttribute(`aria-valuetext`)?e.getAttribute(`aria-valuetext`)||``:e.hasAttribute(`aria-valuenow`)?e.getAttribute(`aria-valuenow`)||``:e.getAttribute(`value`)||``;if([`menu`].includes(j))return w.visitedElements.add(e),``}}let N=e.getAttribute(`aria-label`)||``;if(trimFlatString(N))return w.visitedElements.add(e),N;if(![`presentation`,`none`].includes(j)){if(M===`INPUT`&&[`button`,`submit`,`reset`].includes(e.type)){w.visitedElements.add(e);let T=e.value||``;if(trimFlatString(T))return T;if(e.type===`submit`)return`Submit`;if(e.type===`reset`)return`Reset`;let E=e.getAttribute(`title`)||``;return E}if(M===`INPUT`&&e.type===`image`){w.visitedElements.add(e);let T=e.labels||[];if(T.length&&!w.embeddedInLabelledBy)return getAccessibleNameFromAssociatedLabels(T,w);let E=e.getAttribute(`alt`)||``;if(trimFlatString(E))return E;let D=e.getAttribute(`title`)||``;return trimFlatString(D)?D:`Submit`}if(!A&&M===`BUTTON`){w.visitedElements.add(e);let T=e.labels||[];if(T.length)return getAccessibleNameFromAssociatedLabels(T,w)}if(!A&&M===`OUTPUT`){w.visitedElements.add(e);let T=e.labels||[];return T.length?getAccessibleNameFromAssociatedLabels(T,w):e.getAttribute(`title`)||``}if(!A&&(M===`TEXTAREA`||M===`SELECT`||M===`INPUT`)){w.visitedElements.add(e);let T=e.labels||[];if(T.length)return getAccessibleNameFromAssociatedLabels(T,w);let E=M===`INPUT`&&[`text`,`password`,`search`,`tel`,`email`,`url`].includes(e.type)||M===`TEXTAREA`,D=e.getAttribute(`placeholder`)||``,O=e.getAttribute(`title`)||``;return!E||O?O:D}if(!A&&M===`FIELDSET`){w.visitedElements.add(e);for(let w=e.firstElementChild;w;w=w.nextElementSibling)if(elementSafeTagName(w)===`LEGEND`)return getTextAlternativeInternal(w,{...k,embeddedInNativeTextAlternative:{element:w,hidden:isElementHiddenForAria(w)}});let T=e.getAttribute(`title`)||``;return T}if(!A&&M===`FIGURE`){w.visitedElements.add(e);for(let w=e.firstElementChild;w;w=w.nextElementSibling)if(elementSafeTagName(w)===`FIGCAPTION`)return getTextAlternativeInternal(w,{...k,embeddedInNativeTextAlternative:{element:w,hidden:isElementHiddenForAria(w)}});let T=e.getAttribute(`title`)||``;return T}if(M===`IMG`){w.visitedElements.add(e);let T=e.getAttribute(`alt`)||``;if(trimFlatString(T))return T;let E=e.getAttribute(`title`)||``;return E}if(M===`TABLE`){w.visitedElements.add(e);for(let w=e.firstElementChild;w;w=w.nextElementSibling)if(elementSafeTagName(w)===`CAPTION`)return getTextAlternativeInternal(w,{...k,embeddedInNativeTextAlternative:{element:w,hidden:isElementHiddenForAria(w)}});let T=e.getAttribute(`summary`)||``;if(T)return T}if(M===`AREA`){w.visitedElements.add(e);let T=e.getAttribute(`alt`)||``;if(trimFlatString(T))return T;let E=e.getAttribute(`title`)||``;return E}if(M===`SVG`||e.ownerSVGElement){w.visitedElements.add(e);for(let w=e.firstElementChild;w;w=w.nextElementSibling)if(elementSafeTagName(w)===`TITLE`&&w.ownerSVGElement)return getTextAlternativeInternal(w,{...k,embeddedInLabelledBy:{element:w,hidden:isElementHiddenForAria(w)}})}if(e.ownerSVGElement&&M===`A`){let T=e.getAttribute(`xlink:title`)||``;if(trimFlatString(T))return w.visitedElements.add(e),T}}let P=M===`SUMMARY`&&![`presentation`,`none`].includes(j);if(allowsNameFromContent(j,w.embeddedInTargetElement===`descendant`)||P||w.embeddedInLabelledBy||w.embeddedInDescribedBy||w.embeddedInLabel||w.embeddedInNativeTextAlternative){w.visitedElements.add(e);let T=innerAccumulatedElementText(e,k),E=w.embeddedInTargetElement===`self`?trimFlatString(T):T;if(E)return T}if(![`presentation`,`none`].includes(j)||M===`IFRAME`){w.visitedElements.add(e);let T=e.getAttribute(`title`)||``;if(trimFlatString(T))return T}return w.visitedElements.add(e),``}function innerAccumulatedElementText(e,w){let T=[],E=(e,E)=>{var D;if(!(E&&e.assignedSlot))if(e.nodeType===1){let E=(D=getElementComputedStyle(e))?.display||`inline`,O=getTextAlternativeInternal(e,w);(E!==`inline`||e.nodeName===`BR`)&&(O=` `+O+` `),T.push(O)}else e.nodeType===3&&T.push(e.textContent||``)};T.push(getPseudoContent(e,`::before`));let D=e.nodeName===`SLOT`?e.assignedNodes():[];if(D.length)for(let e of D)E(e,!1);else{for(let w=e.firstChild;w;w=w.nextSibling)E(w,!0);if(e.shadowRoot)for(let w=e.shadowRoot.firstChild;w;w=w.nextSibling)E(w,!0);for(let w of getIdRefs(e,e.getAttribute(`aria-owns`)))E(w,!0)}return T.push(getPseudoContent(e,`::after`)),T.join(``)}var kAriaSelectedRoles=[`gridcell`,`option`,`row`,`tab`,`rowheader`,`columnheader`,`treeitem`];function getAriaSelected(e){return elementSafeTagName(e)===`OPTION`?e.selected:kAriaSelectedRoles.includes(getAriaRole(e)||``)?getAriaBoolean(e.getAttribute(`aria-selected`))===!0:!1}var kAriaCheckedRoles=[`checkbox`,`menuitemcheckbox`,`option`,`radio`,`switch`,`menuitemradio`,`treeitem`];function getAriaChecked(e){let w=getChecked(e);return w===`error`?!1:w}function getChecked(e,w){let T=elementSafeTagName(e);if(T===`INPUT`&&e.indeterminate)return`mixed`;if(T===`INPUT`&&[`checkbox`,`radio`].includes(e.type))return e.checked;if(kAriaCheckedRoles.includes(getAriaRole(e)||``)){let w=e.getAttribute(`aria-checked`);return w===`true`?!0:w===`mixed`?`mixed`:!1}return`error`}var kAriaPressedRoles=[`button`];function getAriaPressed(e){if(kAriaPressedRoles.includes(getAriaRole(e)||``)){let w=e.getAttribute(`aria-pressed`);if(w===`true`)return!0;if(w===`mixed`)return`mixed`}return!1}var kAriaExpandedRoles=[`application`,`button`,`checkbox`,`combobox`,`gridcell`,`link`,`listbox`,`menuitem`,`row`,`rowheader`,`tab`,`treeitem`,`columnheader`,`menuitemcheckbox`,`menuitemradio`,`rowheader`,`switch`];function getAriaExpanded(e){if(elementSafeTagName(e)===`DETAILS`)return e.open;if(kAriaExpandedRoles.includes(getAriaRole(e)||``)){let w=e.getAttribute(`aria-expanded`);return w===null?`none`:w===`true`}return`none`}var kAriaLevelRoles=[`heading`,`listitem`,`row`,`treeitem`];function getAriaLevel(e){let w={H1:1,H2:2,H3:3,H4:4,H5:5,H6:6}[elementSafeTagName(e)];if(w)return w;if(kAriaLevelRoles.includes(getAriaRole(e)||``)){let w=e.getAttribute(`aria-level`),T=w===null?NaN:Number(w);if(Number.isInteger(T)&&T>=1)return T}return 0}var kAriaDisabledRoles=`application.button.composite.gridcell.group.input.link.menuitem.scrollbar.separator.tab.checkbox.columnheader.combobox.grid.listbox.menu.menubar.menuitemcheckbox.menuitemradio.option.radio.radiogroup.row.rowheader.searchbox.select.slider.spinbutton.switch.tablist.textbox.toolbar.tree.treegrid.treeitem`.split(`.`);function getAriaDisabled(e){return isNativelyDisabled(e)||hasExplicitAriaDisabled(e)}function isNativelyDisabled(e){let w=[`BUTTON`,`INPUT`,`SELECT`,`TEXTAREA`,`OPTION`,`OPTGROUP`].includes(e.tagName);return w&&(e.hasAttribute(`disabled`)||belongsToDisabledFieldSet(e))}function belongsToDisabledFieldSet(e){let w=e?.closest(`FIELDSET[DISABLED]`);if(!w)return!1;let T=w.querySelector(`:scope > LEGEND`);return!T||!T.contains(e)}function hasExplicitAriaDisabled(e){if(!e)return!1;if(kAriaDisabledRoles.includes(getAriaRole(e)||``)){let w=(e.getAttribute(`aria-disabled`)||``).toLowerCase();if(w===`true`)return!0;if(w===`false`)return!1}return hasExplicitAriaDisabled(parentElementOrShadowHost(e))}function getAccessibleNameFromAssociatedLabels(e,w){return[...e].map(e=>getTextAlternativeInternal(e,{...w,embeddedInLabel:{element:e,hidden:isElementHiddenForAria(e)},embeddedInNativeTextAlternative:void 0,embeddedInLabelledBy:void 0,embeddedInDescribedBy:void 0,embeddedInTargetElement:void 0})).filter(e=>!!e).join(` `)}var cacheAccessibleName,cacheAccessibleNameHidden,cacheAccessibleErrorMessage,cacheAccessibleDescription,cacheIsHidden,cachePseudoContentBefore,cachePseudoContentAfter,cachesCounter=0;function beginAriaCaches(){++cachesCounter,cacheAccessibleName??=new Map,cacheAccessibleNameHidden??=new Map,cacheAccessibleDescription??=new Map,cacheAccessibleErrorMessage??=new Map,cacheIsHidden??=new Map,cachePseudoContentBefore??=new Map,cachePseudoContentAfter??=new Map}function endAriaCaches(){--cachesCounter||(cacheAccessibleName=void 0,cacheAccessibleNameHidden=void 0,cacheAccessibleDescription=void 0,cacheAccessibleErrorMessage=void 0,cacheIsHidden=void 0,cachePseudoContentBefore=void 0,cachePseudoContentAfter=void 0)}function matchesAttributePart(e,w){let T=typeof e==`string`&&!w.caseSensitive?e.toUpperCase():e,E=typeof w.value==`string`&&!w.caseSensitive?w.value.toUpperCase():w.value;return w.op===`<truthy>`?!!T:w.op===`=`?E instanceof RegExp?typeof T==`string`&&!!T.match(E):T===E:typeof T!=`string`||typeof E!=`string`?!1:w.op===`*=`?T.includes(E):w.op===`^=`?T.startsWith(E):w.op===`$=`?T.endsWith(E):w.op===`|=`?T===E||T.startsWith(`${E}-`):w.op===`~=`?T.split(` `).includes(E):!1}function shouldSkipForTextMatching(e){let w=e.ownerDocument;return e.nodeName===`SCRIPT`||e.nodeName===`NOSCRIPT`||e.nodeName===`STYLE`||w.head&&w.head.contains(e)}function elementText(e,w){let T=e.get(w);if(T===void 0){if(T={full:``,normalized:``,immediate:[]},!shouldSkipForTextMatching(w)){let E=``;if(w instanceof HTMLInputElement&&(w.type===`submit`||w.type===`button`))T={full:w.value,normalized:normalizeWhiteSpace(w.value),immediate:[w.value]};else{for(let D=w.firstChild;D;D=D.nextSibling)D.nodeType===Node.TEXT_NODE?(T.full+=D.nodeValue||``,E+=D.nodeValue||``):(E&&T.immediate.push(E),E=``,D.nodeType===Node.ELEMENT_NODE&&(T.full+=elementText(e,D).full));E&&T.immediate.push(E),w.shadowRoot&&(T.full+=elementText(e,w.shadowRoot).full),T.full&&(T.normalized=normalizeWhiteSpace(T.full))}}e.set(w,T)}return T}function elementMatchesText(e,w,T){if(shouldSkipForTextMatching(w)||!T(elementText(e,w)))return`none`;for(let E=w.firstChild;E;E=E.nextSibling)if(E.nodeType===Node.ELEMENT_NODE&&T(elementText(e,E)))return`selfAndChildren`;return w.shadowRoot&&T(elementText(e,w.shadowRoot))?`selfAndChildren`:`self`}function getElementLabels(e,w){let T=getAriaLabelledByElements(w);if(T)return T.map(w=>elementText(e,w));let E=w.getAttribute(`aria-label`);if(E!==null&&E.trim())return[{full:E,normalized:normalizeWhiteSpace(E),immediate:[E]}];let D=w.nodeName===`INPUT`&&w.type!==`hidden`;if([`BUTTON`,`METER`,`OUTPUT`,`PROGRESS`,`SELECT`,`TEXTAREA`].includes(w.nodeName)||D){let T=w.labels;if(T)return[...T].map(w=>elementText(e,w))}return[]}var kSupportedAttributes=[`selected`,`checked`,`pressed`,`expanded`,`level`,`disabled`,`name`,`include-hidden`];kSupportedAttributes.sort();function validateSupportedRole(e,w,T){if(!w.includes(T))throw Error(`"${e}" attribute is only supported for roles: ${w.slice().sort().map(e=>`"${e}"`).join(`, `)}`)}function validateSupportedValues(e,w){if(e.op!==`<truthy>`&&!w.includes(e.value))throw Error(`"${e.name}" must be one of ${w.map(e=>JSON.stringify(e)).join(`, `)}`)}function validateSupportedOp(e,w){if(!w.includes(e.op))throw Error(`"${e.name}" does not support "${e.op}" matcher`)}function validateAttributes(e,w){let T={role:w};for(let E of e)switch(E.name){case`checked`:validateSupportedRole(E.name,kAriaCheckedRoles,w),validateSupportedValues(E,[!0,!1,`mixed`]),validateSupportedOp(E,[`<truthy>`,`=`]),T.checked=E.op===`<truthy>`?!0:E.value;break;case`pressed`:validateSupportedRole(E.name,kAriaPressedRoles,w),validateSupportedValues(E,[!0,!1,`mixed`]),validateSupportedOp(E,[`<truthy>`,`=`]),T.pressed=E.op===`<truthy>`?!0:E.value;break;case`selected`:validateSupportedRole(E.name,kAriaSelectedRoles,w),validateSupportedValues(E,[!0,!1]),validateSupportedOp(E,[`<truthy>`,`=`]),T.selected=E.op===`<truthy>`?!0:E.value;break;case`expanded`:validateSupportedRole(E.name,kAriaExpandedRoles,w),validateSupportedValues(E,[!0,!1]),validateSupportedOp(E,[`<truthy>`,`=`]),T.expanded=E.op===`<truthy>`?!0:E.value;break;case`level`:if(validateSupportedRole(E.name,kAriaLevelRoles,w),typeof E.value==`string`&&(E.value=+E.value),E.op!==`=`||typeof E.value!=`number`||Number.isNaN(E.value))throw Error(`"level" attribute must be compared to a number`);T.level=E.value;break;case`disabled`:validateSupportedValues(E,[!0,!1]),validateSupportedOp(E,[`<truthy>`,`=`]),T.disabled=E.op===`<truthy>`?!0:E.value;break;case`name`:if(E.op===`<truthy>`)throw Error(`"name" attribute must have a value`);if(typeof E.value!=`string`&&!(E.value instanceof RegExp))throw TypeError(`"name" attribute must be a string or a regular expression`);T.name=E.value,T.nameOp=E.op,T.exact=E.caseSensitive;break;case`include-hidden`:validateSupportedValues(E,[!0,!1]),validateSupportedOp(E,[`<truthy>`,`=`]),T.includeHidden=E.op===`<truthy>`?!0:E.value;break;default:throw Error(`Unknown attribute "${E.name}", must be one of ${kSupportedAttributes.map(e=>`"${e}"`).join(`, `)}.`)}return T}function queryRole(e,w,T){let E=[],D=e=>{if(getAriaRole(e)===w.role&&!(w.selected!==void 0&&getAriaSelected(e)!==w.selected)&&!(w.checked!==void 0&&getAriaChecked(e)!==w.checked)&&!(w.pressed!==void 0&&getAriaPressed(e)!==w.pressed)&&!(w.expanded!==void 0&&getAriaExpanded(e)!==w.expanded)&&!(w.level!==void 0&&getAriaLevel(e)!==w.level)&&!(w.disabled!==void 0&&getAriaDisabled(e)!==w.disabled)){if(!w.includeHidden){let w=isElementHiddenForAria(e);if(w)return}if(w.name!==void 0){let E=normalizeWhiteSpace(getElementAccessibleName(e,!!w.includeHidden));if(typeof w.name==`string`&&(w.name=normalizeWhiteSpace(w.name)),T&&!w.exact&&w.nameOp===`=`&&(w.nameOp=`*=`),!matchesAttributePart(E,{op:w.nameOp||`=`,value:w.name,caseSensitive:!!w.exact}))return}E.push(e)}},O=e=>{let w=[];e.shadowRoot&&w.push(e.shadowRoot);for(let T of e.querySelectorAll(`*`))D(T),T.shadowRoot&&w.push(T.shadowRoot);w.forEach(O)};return O(e),E}function createRoleEngine(e){return{queryAll:(w,T)=>{let E=parseAttributeSelector(T),D=E.name.toLowerCase();if(!D)throw Error(`Role must not be empty`);let O=validateAttributes(E.attributes,D);beginAriaCaches();try{return queryRole(w,O,e)}finally{endAriaCaches()}}}}function asLocator(e,w,T=!1){return asLocators(e,w,T)[0]}function asLocators(e,w,T=!1,E=20,D){try{return innerAsLocators(new generators[e](D),parseSelector(w),T,E)}catch{return[w]}}function innerAsLocators(e,w,T=!1,E=20){let D=[...w.parts];for(let e=0;e<D.length-1;e++)if(D[e].name===`nth`&&D[e+1].name===`internal:control`&&D[e+1].body===`enter-frame`){let[w]=D.splice(e,1);D.splice(e+1,0,w)}let O=[],k=T?`frame-locator`:`page`;for(let w=0;w<D.length;w++){let T=D[w],A=k;if(k=`locator`,T.name===`nth`){T.body===`0`?O.push([e.generateLocator(A,`first`,``),e.generateLocator(A,`nth`,`0`)]):T.body===`-1`?O.push([e.generateLocator(A,`last`,``),e.generateLocator(A,`nth`,`-1`)]):O.push([e.generateLocator(A,`nth`,T.body)]);continue}if(T.name===`internal:text`){let{exact:w,text:E}=detectExact(T.body);O.push([e.generateLocator(A,`text`,E,{exact:w})]);continue}if(T.name===`internal:has-text`){let{exact:w,text:E}=detectExact(T.body);if(!w){O.push([e.generateLocator(A,`has-text`,E,{exact:w})]);continue}}if(T.name===`internal:has-not-text`){let{exact:w,text:E}=detectExact(T.body);if(!w){O.push([e.generateLocator(A,`has-not-text`,E,{exact:w})]);continue}}if(T.name===`internal:has`){let w=innerAsLocators(e,T.body.parsed,!1,E);O.push(w.map(w=>e.generateLocator(A,`has`,w)));continue}if(T.name===`internal:has-not`){let w=innerAsLocators(e,T.body.parsed,!1,E);O.push(w.map(w=>e.generateLocator(A,`hasNot`,w)));continue}if(T.name===`internal:and`){let w=innerAsLocators(e,T.body.parsed,!1,E);O.push(w.map(w=>e.generateLocator(A,`and`,w)));continue}if(T.name===`internal:or`){let w=innerAsLocators(e,T.body.parsed,!1,E);O.push(w.map(w=>e.generateLocator(A,`or`,w)));continue}if(T.name===`internal:chain`){let w=innerAsLocators(e,T.body.parsed,!1,E);O.push(w.map(w=>e.generateLocator(A,`chain`,w)));continue}if(T.name===`internal:label`){let{exact:w,text:E}=detectExact(T.body);O.push([e.generateLocator(A,`label`,E,{exact:w})]);continue}if(T.name===`internal:role`){let w=parseAttributeSelector(T.body),E={attrs:[]};for(let e of w.attributes)e.name===`name`?(E.exact=e.caseSensitive,E.name=e.value):(e.name===`level`&&typeof e.value==`string`&&(e.value=+e.value),E.attrs.push({name:e.name===`include-hidden`?`includeHidden`:e.name,value:e.value}));O.push([e.generateLocator(A,`role`,w.name,E)]);continue}if(T.name===`internal:testid`){let w=parseAttributeSelector(T.body),{value:E}=w.attributes[0];O.push([e.generateLocator(A,`test-id`,E)]);continue}if(T.name===`internal:attr`){let w=parseAttributeSelector(T.body),{name:E,value:D,caseSensitive:k}=w.attributes[0],j=D,M=!!k;if(E===`placeholder`){O.push([e.generateLocator(A,`placeholder`,j,{exact:M})]);continue}if(E===`alt`){O.push([e.generateLocator(A,`alt`,j,{exact:M})]);continue}if(E===`title`){O.push([e.generateLocator(A,`title`,j,{exact:M})]);continue}}let j=`default`,M=D[w+1];M&&M.name===`internal:control`&&M.body===`enter-frame`&&(j=`frame`,k=`frame-locator`,w++);let N=stringifySelector({parts:[T]}),P=e.generateLocator(A,j,N);if(j===`default`&&M&&[`internal:has-text`,`internal:has-not-text`].includes(M.name)){let{exact:T,text:E}=detectExact(M.body);if(!T){let D=e.generateLocator(`locator`,M.name===`internal:has-text`?`has-text`:`has-not-text`,E,{exact:T}),k={};M.name===`internal:has-text`?k.hasText=E:k.hasNotText=E;let j=e.generateLocator(A,`default`,N,k);O.push([e.chainLocators([P,D]),j]),w++;continue}}let F;if([`xpath`,`css`].includes(T.name)){let w=stringifySelector({parts:[T]},!0);F=e.generateLocator(A,j,w)}O.push([P,F].filter(Boolean))}return combineTokens(e,O,E)}function combineTokens(e,w,T){let E=w.map(()=>``),D=[],O=k=>{if(k===w.length)return D.push(e.chainLocators(E)),E.length<T;for(let e of w[k])if(E[k]=e,!O(k+1))return!1;return!0};return O(0),D}function detectExact(e){let w=!1,T=e.match(/^\/(.*)\/([igm]*)$/);return T?{text:new RegExp(T[1],T[2])}:(e.endsWith(`"`)?(e=JSON.parse(e),w=!0):e.endsWith(`"s`)?(e=JSON.parse(e.substring(0,e.length-1)),w=!0):e.endsWith(`"i`)&&(e=JSON.parse(e.substring(0,e.length-1)),w=!1),{exact:w,text:e})}var JavaScriptLocatorFactory=class{constructor(e){this.preferredQuote=e}generateLocator(e,w,T,E={}){switch(w){case`default`:return E.hasText===void 0?E.hasNotText===void 0?`locator(${this.quote(T)})`:`locator(${this.quote(T)}, { hasNotText: ${this.toHasText(E.hasNotText)} })`:`locator(${this.quote(T)}, { hasText: ${this.toHasText(E.hasText)} })`;case`frame`:return`frameLocator(${this.quote(T)})`;case`nth`:return`nth(${T})`;case`first`:return`first()`;case`last`:return`last()`;case`role`:{let e=[];isRegExp(E.name)?e.push(`name: ${this.regexToSourceString(E.name)}`):typeof E.name==`string`&&(e.push(`name: ${this.quote(E.name)}`),E.exact&&e.push(`exact: true`));for(let{name:w,value:T}of E.attrs)e.push(`${w}: ${typeof T==`string`?this.quote(T):T}`);let w=e.length?`, { ${e.join(`, `)} }`:``;return`getByRole(${this.quote(T)}${w})`}case`has-text`:return`filter({ hasText: ${this.toHasText(T)} })`;case`has-not-text`:return`filter({ hasNotText: ${this.toHasText(T)} })`;case`has`:return`filter({ has: ${T} })`;case`hasNot`:return`filter({ hasNot: ${T} })`;case`and`:return`and(${T})`;case`or`:return`or(${T})`;case`chain`:return`locator(${T})`;case`test-id`:return`getByTestId(${this.toTestIdValue(T)})`;case`text`:return this.toCallWithExact(`getByText`,T,!!E.exact);case`alt`:return this.toCallWithExact(`getByAltText`,T,!!E.exact);case`placeholder`:return this.toCallWithExact(`getByPlaceholder`,T,!!E.exact);case`label`:return this.toCallWithExact(`getByLabel`,T,!!E.exact);case`title`:return this.toCallWithExact(`getByTitle`,T,!!E.exact);default:throw Error(`Unknown selector kind ${w}`)}}chainLocators(e){return e.join(`.`)}regexToSourceString(e){return normalizeEscapedRegexQuotes(String(e))}toCallWithExact(e,w,T){return isRegExp(w)?`${e}(${this.regexToSourceString(w)})`:T?`${e}(${this.quote(w)}, { exact: true })`:`${e}(${this.quote(w)})`}toHasText(e){return isRegExp(e)?this.regexToSourceString(e):this.quote(e)}toTestIdValue(e){return isRegExp(e)?this.regexToSourceString(e):this.quote(e)}quote(e){var w;return escapeWithQuotes(e,(w=this.preferredQuote)??`'`)}},generators={javascript:JavaScriptLocatorFactory};function isRegExp(e){return e instanceof RegExp}var cacheAllowText=new Map,cacheDisallowText=new Map,kTextScoreRange=10,kExactPenalty=kTextScoreRange/2,kTestIdScore=1,kOtherTestIdScore=2,kIframeByAttributeScore=10,kBeginPenalizedScore=50,kPlaceholderScore=100,kLabelScore=120,kRoleWithNameScore=140,kAltTextScore=160,kTextScore=180,kTitleScore=200,kTextScoreRegex=250,kPlaceholderScoreExact=kPlaceholderScore+kExactPenalty,kLabelScoreExact=kLabelScore+kExactPenalty,kRoleWithNameScoreExact=kRoleWithNameScore+kExactPenalty,kAltTextScoreExact=kAltTextScore+kExactPenalty,kTextScoreExact=kTextScore+kExactPenalty,kTitleScoreExact=kTitleScore+kExactPenalty,kEndPenalizedScore=300,kCSSIdScore=500,kRoleWithoutNameScore=510,kCSSInputTypeNameScore=520,kCSSTagNameScore=530,kNthScore=1e4,kCSSFallbackScore=1e7;function generateSelector(e,w,T){e._evaluator.begin(),beginAriaCaches();try{let E=generateSelectorFor(e,w,T)||cssFallback(e,w,T);return joinTokens(E)}finally{cacheAllowText.clear(),cacheDisallowText.clear(),endAriaCaches(),e._evaluator.end()}}function filterRegexTokens(e){return e.filter(e=>e[0].selector[0]!==`/`)}function generateSelectorFor(e,w,T){if(w.ownerDocument.documentElement===w)return[{engine:`css`,selector:`html`,score:1}];let E=(E,O)=>{let k=E===w,A=O?buildTextCandidates(e,E,E===w):[];E!==w&&(A=filterRegexTokens(A));let j=buildNoTextCandidates(e,E,T).map(e=>[e]),M=chooseFirstSelector(e,w.ownerDocument,E,[...A,...j],k);A=filterRegexTokens(A);let N=w=>{let T=O&&!w.length,A=[...w,...j].filter(e=>M?combineScores(e)<combineScores(M):!0),N=A[0];if(N)for(let w=parentElementOrShadowHost(E);w;w=parentElementOrShadowHost(w)){let O=D(w,T);if(!O||M&&combineScores([...O,...N])>=combineScores(M))continue;if(N=chooseFirstSelector(e,w,E,A,k),!N)return;let j=[...O,...N];(!M||combineScores(j)<combineScores(M))&&(M=j)}};return N(A),E===w&&A.length&&N([]),M},D=(e,w)=>{let T=w?cacheAllowText:cacheDisallowText,D=T.get(e);return D===void 0&&(D=E(e,w),T.set(e,D)),D};return E(w,!T.noText)}function buildNoTextCandidates(e,w,T){let E=[];for(let e of[`data-testid`,`data-test-id`,`data-test`])e!==T.testIdAttributeName&&w.getAttribute(e)&&E.push({engine:`css`,selector:`[${e}=${quoteCSSAttributeValue(w.getAttribute(e))}]`,score:kOtherTestIdScore});if(!T.noCSSId){let e=w.getAttribute(`id`);e&&!isGuidLike(e)&&E.push({engine:`css`,selector:makeSelectorForId(e),score:kCSSIdScore})}if(E.push({engine:`css`,selector:cssEscape(w.nodeName.toLowerCase()),score:kCSSTagNameScore}),w.nodeName===`IFRAME`){for(let e of[`name`,`title`])w.getAttribute(e)&&E.push({engine:`css`,selector:`${cssEscape(w.nodeName.toLowerCase())}[${e}=${quoteCSSAttributeValue(w.getAttribute(e))}]`,score:kIframeByAttributeScore});return w.getAttribute(T.testIdAttributeName)&&E.push({engine:`css`,selector:`[${T.testIdAttributeName}=${quoteCSSAttributeValue(w.getAttribute(T.testIdAttributeName))}]`,score:kTestIdScore}),penalizeScoreForLength([E]),E}if(w.getAttribute(T.testIdAttributeName)&&E.push({engine:`internal:testid`,selector:`[${T.testIdAttributeName}=${escapeForAttributeSelector(w.getAttribute(T.testIdAttributeName),!0)}]`,score:kTestIdScore}),w.nodeName===`INPUT`||w.nodeName===`TEXTAREA`){let e=w;if(e.placeholder){E.push({engine:`internal:attr`,selector:`[placeholder=${escapeForAttributeSelector(e.placeholder,!0)}]`,score:kPlaceholderScoreExact});for(let w of suitableTextAlternatives(e.placeholder))E.push({engine:`internal:attr`,selector:`[placeholder=${escapeForAttributeSelector(w.text,!1)}]`,score:kPlaceholderScore-w.scoreBouns})}}let D=getElementLabels(e._evaluator._cacheText,w);for(let e of D){let w=e.normalized;E.push({engine:`internal:label`,selector:escapeForTextSelector(w,!0),score:kLabelScoreExact});for(let e of suitableTextAlternatives(w))E.push({engine:`internal:label`,selector:escapeForTextSelector(e.text,!1),score:kLabelScore-e.scoreBouns})}let O=getAriaRole(w);return O&&![`none`,`presentation`].includes(O)&&E.push({engine:`internal:role`,selector:O,score:kRoleWithoutNameScore}),w.getAttribute(`name`)&&[`BUTTON`,`FORM`,`FIELDSET`,`FRAME`,`IFRAME`,`INPUT`,`KEYGEN`,`OBJECT`,`OUTPUT`,`SELECT`,`TEXTAREA`,`MAP`,`META`,`PARAM`].includes(w.nodeName)&&E.push({engine:`css`,selector:`${cssEscape(w.nodeName.toLowerCase())}[name=${quoteCSSAttributeValue(w.getAttribute(`name`))}]`,score:kCSSInputTypeNameScore}),[`INPUT`,`TEXTAREA`].includes(w.nodeName)&&w.getAttribute(`type`)!==`hidden`&&w.getAttribute(`type`)&&E.push({engine:`css`,selector:`${cssEscape(w.nodeName.toLowerCase())}[type=${quoteCSSAttributeValue(w.getAttribute(`type`))}]`,score:kCSSInputTypeNameScore}),[`INPUT`,`TEXTAREA`,`SELECT`].includes(w.nodeName)&&w.getAttribute(`type`)!==`hidden`&&E.push({engine:`css`,selector:cssEscape(w.nodeName.toLowerCase()),score:kCSSInputTypeNameScore+1}),penalizeScoreForLength([E]),E}function buildTextCandidates(e,w,T){if(w.nodeName===`SELECT`)return[];let E=[],D=w.getAttribute(`title`);if(D){E.push([{engine:`internal:attr`,selector:`[title=${escapeForAttributeSelector(D,!0)}]`,score:kTitleScoreExact}]);for(let e of suitableTextAlternatives(D))E.push([{engine:`internal:attr`,selector:`[title=${escapeForAttributeSelector(e.text,!1)}]`,score:kTitleScore-e.scoreBouns}])}let O=w.getAttribute(`alt`);if(O&&[`APPLET`,`AREA`,`IMG`,`INPUT`].includes(w.nodeName)){E.push([{engine:`internal:attr`,selector:`[alt=${escapeForAttributeSelector(O,!0)}]`,score:kAltTextScoreExact}]);for(let e of suitableTextAlternatives(O))E.push([{engine:`internal:attr`,selector:`[alt=${escapeForAttributeSelector(e.text,!1)}]`,score:kAltTextScore-e.scoreBouns}])}let A=elementText(e._evaluator._cacheText,w).normalized;if(A){let e=suitableTextAlternatives(A);if(T){A.length<=80&&E.push([{engine:`internal:text`,selector:escapeForTextSelector(A,!0),score:kTextScoreExact}]);for(let w of e)E.push([{engine:`internal:text`,selector:escapeForTextSelector(w.text,!1),score:kTextScore-w.scoreBouns}])}let D={engine:`css`,selector:cssEscape(w.nodeName.toLowerCase()),score:kCSSTagNameScore};for(let w of e)E.push([D,{engine:`internal:has-text`,selector:escapeForTextSelector(w.text,!1),score:kTextScore-w.scoreBouns}]);if(A.length<=80){let e=RegExp(`^${escapeRegExp(A)}$`);E.push([D,{engine:`internal:has-text`,selector:escapeForTextSelector(e,!1),score:kTextScoreRegex}])}}let j=getAriaRole(w);if(j&&![`none`,`presentation`].includes(j)){let e=getElementAccessibleName(w,!1);if(e){E.push([{engine:`internal:role`,selector:`${j}[name=${escapeForAttributeSelector(e,!0)}]`,score:kRoleWithNameScoreExact}]);for(let w of suitableTextAlternatives(e))E.push([{engine:`internal:role`,selector:`${j}[name=${escapeForAttributeSelector(w.text,!1)}]`,score:kRoleWithNameScore-w.scoreBouns}])}}return penalizeScoreForLength(E),E}function makeSelectorForId(e){return/^[a-z][\w\-]+$/i.test(e)?`#${e}`:`[id="${cssEscape(e)}"]`}function cssFallback(e,w,T){let E=w.ownerDocument,D=[];function O(T){let O=D.slice();T&&O.unshift(T);let k=O.join(` > `),A=e.parseSelector(k),j=e.querySelector(A,E,!1);return j===w?k:void 0}function A(T){let D={engine:`css`,selector:T,score:kCSSFallbackScore},O=e.parseSelector(T),k=e.querySelectorAll(O,E);if(k.length===1)return[D];let A={engine:`nth`,selector:String(k.indexOf(w)),score:kNthScore};return[D,A]}for(let e=w;e&&e!==E;e=parentElementOrShadowHost(e)){let w=e.nodeName.toLowerCase(),E=``;if(e.id&&!T.noCSSId){let w=makeSelectorForId(e.id),T=O(w);if(T)return A(T);E=w}let j=e.parentNode,M=[...e.classList];for(let e=0;e<M.length;++e){let w=`.${cssEscape(M.slice(0,e+1).join(`.`))}`,T=O(w);if(T)return A(T);if(!E&&j){let e=j.querySelectorAll(w);e.length===1&&(E=w)}}if(j){let T=[...j.children],D=T.filter(e=>e.nodeName.toLowerCase()===w),M=D.indexOf(e)===0?cssEscape(w):`${cssEscape(w)}:nth-child(${1+T.indexOf(e)})`,N=O(M);if(N)return A(N);E||=M}else E||=cssEscape(w);D.unshift(E)}return A(O())}function penalizeScoreForLength(e){for(let w of e)for(let e of w)e.score>kBeginPenalizedScore&&e.score<kEndPenalizedScore&&(e.score+=Math.min(kTextScoreRange,e.selector.length/10|0))}function joinTokens(e){let w=[],T=``;for(let{engine:E,selector:D}of e)w.length&&(T!==`css`||E!==`css`||D.startsWith(`:nth-match(`))&&w.push(`>>`),T=E,E===`css`?w.push(D):w.push(`${E}=${D}`);return w.join(` `)}function combineScores(e){let w=0;for(let T=0;T<e.length;T++)w+=e[T].score*(e.length-T);return w}function chooseFirstSelector(e,w,T,E,D){let O=E.map(e=>({tokens:e,score:combineScores(e)}));O.sort((e,w)=>e.score-w.score);let k=null;for(let{tokens:E}of O){let O=e.parseSelector(joinTokens(E)),A=e.querySelectorAll(O,w);if(A[0]===T&&A.length===1)return E;let j=A.indexOf(T);if(!D||k||j===-1||A.length>5)continue;let M={engine:`nth`,selector:String(j),score:kNthScore};k=[...E,M]}return k}function isGuidLike(e){let w,T=0;for(let E=0;E<e.length;++E){let D=e[E],O;if(!(D===`-`||D===`_`)){if(O=D>=`a`&&D<=`z`?`lower`:D>=`A`&&D<=`Z`?`upper`:D>=`0`&&D<=`9`?`digit`:`other`,O===`lower`&&w===`upper`){w=O;continue}w&&w!==O&&++T,w=O}}return T>=e.length/4}function trimWordBoundary(e,w){if(e.length<=w)return e;e=e.substring(0,w);let T=e.match(/^(.*)\b(.+)$/);return T?T[1].trimEnd():``}function suitableTextAlternatives(e){let w=[];{let T=e.match(/^([\d.,]+)[^.,\w]/),E=T?T[1].length:0;if(E){let T=trimWordBoundary(e.substring(E).trimStart(),80);w.push({text:T,scoreBouns:T.length<=30?2:1})}}{let T=e.match(/[^.,\w]([\d.,]+)$/),E=T?T[1].length:0;if(E){let T=trimWordBoundary(e.substring(0,e.length-E).trimEnd(),80);w.push({text:T,scoreBouns:T.length<=30?2:1})}}return e.length<=30?w.push({text:e,scoreBouns:0}):(w.push({text:trimWordBoundary(e,80),scoreBouns:0}),w.push({text:trimWordBoundary(e,30),scoreBouns:1})),w=w.filter(e=>e.text),w.length||w.push({text:e.substring(0,80),scoreBouns:0}),w}function boxRightOf(e,w,T){let E=e.left-w.right;if(!(E<0||T!==void 0&&E>T))return E+Math.max(w.bottom-e.bottom,0)+Math.max(e.top-w.top,0)}function boxLeftOf(e,w,T){let E=w.left-e.right;if(!(E<0||T!==void 0&&E>T))return E+Math.max(w.bottom-e.bottom,0)+Math.max(e.top-w.top,0)}function boxAbove(e,w,T){let E=w.top-e.bottom;if(!(E<0||T!==void 0&&E>T))return E+Math.max(e.left-w.left,0)+Math.max(w.right-e.right,0)}function boxBelow(e,w,T){let E=e.top-w.bottom;if(!(E<0||T!==void 0&&E>T))return E+Math.max(e.left-w.left,0)+Math.max(w.right-e.right,0)}function boxNear(e,w,T){let E=T===void 0?50:T,D=0;return e.left-w.right>=0&&(D+=e.left-w.right),w.left-e.right>=0&&(D+=w.left-e.right),w.top-e.bottom>=0&&(D+=w.top-e.bottom),e.top-w.bottom>=0&&(D+=e.top-w.bottom),D>E?void 0:D}var kLayoutSelectorNames=[`left-of`,`right-of`,`above`,`below`,`near`];function layoutSelectorScore(e,w,T,E){let D=w.getBoundingClientRect(),O={"left-of":boxLeftOf,"right-of":boxRightOf,above:boxAbove,below:boxBelow,near:boxNear}[e],k;for(let e of T){if(e===w)continue;let T=O(D,e.getBoundingClientRect(),E);if(T===void 0)continue;(k===void 0||T<k)&&(k=T)}return k}var SelectorEvaluatorImpl=class{constructor(e){__publicField(this,`_engines`,new Map),__publicField(this,`_cacheQueryCSS`,new Map),__publicField(this,`_cacheMatches`,new Map),__publicField(this,`_cacheQuery`,new Map),__publicField(this,`_cacheMatchesSimple`,new Map),__publicField(this,`_cacheMatchesParents`,new Map),__publicField(this,`_cacheCallMatches`,new Map),__publicField(this,`_cacheCallQuery`,new Map),__publicField(this,`_cacheQuerySimple`,new Map),__publicField(this,`_cacheText`,new Map),__publicField(this,`_scoreMap`),__publicField(this,`_retainCacheCounter`,0);for(let[w,T]of e)this._engines.set(w,T);this._engines.set(`not`,notEngine),this._engines.set(`is`,isEngine),this._engines.set(`where`,isEngine),this._engines.set(`has`,hasEngine),this._engines.set(`scope`,scopeEngine),this._engines.set(`light`,lightEngine),this._engines.set(`visible`,visibleEngine),this._engines.set(`text`,textEngine),this._engines.set(`text-is`,textIsEngine),this._engines.set(`text-matches`,textMatchesEngine),this._engines.set(`has-text`,hasTextEngine),this._engines.set(`right-of`,createLayoutEngine(`right-of`)),this._engines.set(`left-of`,createLayoutEngine(`left-of`)),this._engines.set(`above`,createLayoutEngine(`above`)),this._engines.set(`below`,createLayoutEngine(`below`)),this._engines.set(`near`,createLayoutEngine(`near`)),this._engines.set(`nth-match`,nthMatchEngine);let w=[...this._engines.keys()];w.sort();let T=[...customCSSNames];if(T.sort(),w.join(`|`)!==T.join(`|`))throw Error(`Please keep customCSSNames in sync with evaluator engines: ${w.join(`|`)} vs ${T.join(`|`)}`)}begin(){++this._retainCacheCounter}end(){--this._retainCacheCounter,this._retainCacheCounter||(this._cacheQueryCSS.clear(),this._cacheMatches.clear(),this._cacheQuery.clear(),this._cacheMatchesSimple.clear(),this._cacheMatchesParents.clear(),this._cacheCallMatches.clear(),this._cacheCallQuery.clear(),this._cacheQuerySimple.clear(),this._cacheText.clear())}_cached(e,w,T,E){e.has(w)||e.set(w,[]);let D=e.get(w),O=D.find(e=>T.every((w,T)=>e.rest[T]===w));if(O)return O.result;let k=E();return D.push({rest:T,result:k}),k}_checkSelector(e){let w=typeof e==`object`&&e&&(Array.isArray(e)||`simples`in e&&e.simples.length);if(!w)throw Error(`Malformed selector "${e}"`);return e}matches(e,w,T){let E=this._checkSelector(w);this.begin();try{return this._cached(this._cacheMatches,e,[E,T.scope,T.pierceShadow,T.originalScope],()=>Array.isArray(E)?this._matchesEngine(isEngine,e,E,T):(this._hasScopeClause(E)&&(T=this._expandContextForScopeMatching(T)),this._matchesSimple(e,E.simples[E.simples.length-1].selector,T)?this._matchesParents(e,E,E.simples.length-2,T):!1))}finally{this.end()}}query(e,w){let T=this._checkSelector(w);this.begin();try{return this._cached(this._cacheQuery,T,[e.scope,e.pierceShadow,e.originalScope],()=>{if(Array.isArray(T))return this._queryEngine(isEngine,e,T);this._hasScopeClause(T)&&(e=this._expandContextForScopeMatching(e));let w=this._scoreMap;this._scoreMap=new Map;let E=this._querySimple(e,T.simples[T.simples.length-1].selector);return E=E.filter(w=>this._matchesParents(w,T,T.simples.length-2,e)),this._scoreMap.size&&E.sort((e,w)=>{let T=this._scoreMap.get(e),E=this._scoreMap.get(w);return T===E?0:T===void 0?1:E===void 0?-1:T-E}),this._scoreMap=w,E})}finally{this.end()}}_markScore(e,w){this._scoreMap&&this._scoreMap.set(e,w)}_hasScopeClause(e){return e.simples.some(e=>e.selector.functions.some(e=>e.name===`scope`))}_expandContextForScopeMatching(e){if(e.scope.nodeType!==1)return e;let w=parentElementOrShadowHost(e.scope);return w?{...e,scope:w,originalScope:e.originalScope||e.scope}:e}_matchesSimple(e,w,T){return this._cached(this._cacheMatchesSimple,e,[w,T.scope,T.pierceShadow,T.originalScope],()=>{if(e===T.scope||w.css&&!this._matchesCSS(e,w.css))return!1;for(let E of w.functions)if(!this._matchesEngine(this._getEngine(E.name),e,E.args,T))return!1;return!0})}_querySimple(e,w){return w.functions.length?this._cached(this._cacheQuerySimple,w,[e.scope,e.pierceShadow,e.originalScope],()=>{let T=w.css,E=w.functions;T===`*`&&E.length&&(T=void 0);let D,O=-1;T===void 0?(O=E.findIndex(e=>this._getEngine(e.name).query!==void 0),O===-1&&(O=0),D=this._queryEngine(this._getEngine(E[O].name),e,E[O].args)):D=this._queryCSS(e,T);for(let w=0;w<E.length;w++){if(w===O)continue;let T=this._getEngine(E[w].name);T.matches!==void 0&&(D=D.filter(D=>this._matchesEngine(T,D,E[w].args,e)))}for(let w=0;w<E.length;w++){if(w===O)continue;let T=this._getEngine(E[w].name);T.matches===void 0&&(D=D.filter(D=>this._matchesEngine(T,D,E[w].args,e)))}return D}):this._queryCSS(e,w.css||`*`)}_matchesParents(e,w,T,E){return T<0?!0:this._cached(this._cacheMatchesParents,e,[w,T,E.scope,E.pierceShadow,E.originalScope],()=>{let{selector:D,combinator:O}=w.simples[T];if(O===`>`){let O=parentElementOrShadowHostInContext(e,E);return!O||!this._matchesSimple(O,D,E)?!1:this._matchesParents(O,w,T-1,E)}if(O===`+`){let O=previousSiblingInContext(e,E);return!O||!this._matchesSimple(O,D,E)?!1:this._matchesParents(O,w,T-1,E)}if(O===``){let O=parentElementOrShadowHostInContext(e,E);for(;O;){if(this._matchesSimple(O,D,E)){if(this._matchesParents(O,w,T-1,E))return!0;if(w.simples[T-1].combinator===``)break}O=parentElementOrShadowHostInContext(O,E)}return!1}if(O===`~`){let O=previousSiblingInContext(e,E);for(;O;){if(this._matchesSimple(O,D,E)){if(this._matchesParents(O,w,T-1,E))return!0;if(w.simples[T-1].combinator===`~`)break}O=previousSiblingInContext(O,E)}return!1}if(O===`>=`){let O=e;for(;O;){if(this._matchesSimple(O,D,E)){if(this._matchesParents(O,w,T-1,E))return!0;if(w.simples[T-1].combinator===``)break}O=parentElementOrShadowHostInContext(O,E)}return!1}throw Error(`Unsupported combinator "${O}"`)})}_matchesEngine(e,w,T,E){if(e.matches)return this._callMatches(e,w,T,E);if(e.query)return this._callQuery(e,T,E).includes(w);throw Error(`Selector engine should implement "matches" or "query"`)}_queryEngine(e,w,T){if(e.query)return this._callQuery(e,T,w);if(e.matches)return this._queryCSS(w,`*`).filter(E=>this._callMatches(e,E,T,w));throw Error(`Selector engine should implement "matches" or "query"`)}_callMatches(e,w,T,E){return this._cached(this._cacheCallMatches,w,[e,E.scope,E.pierceShadow,E.originalScope,...T],()=>e.matches(w,T,E,this))}_callQuery(e,w,T){return this._cached(this._cacheCallQuery,e,[T.scope,T.pierceShadow,T.originalScope,...w],()=>e.query(T,w,this))}_matchesCSS(e,w){return e.matches(w)}_queryCSS(e,w){return this._cached(this._cacheQueryCSS,w,[e.scope,e.pierceShadow,e.originalScope],()=>{let T=[];function E(D){if(T=T.concat([...D.querySelectorAll(w)]),e.pierceShadow){D.shadowRoot&&E(D.shadowRoot);for(let e of D.querySelectorAll(`*`))e.shadowRoot&&E(e.shadowRoot)}}return E(e.scope),T})}_getEngine(e){let w=this._engines.get(e);if(!w)throw Error(`Unknown selector engine "${e}"`);return w}},isEngine={matches(e,w,T,E){if(w.length===0)throw Error(`"is" engine expects non-empty selector list`);return w.some(w=>E.matches(e,w,T))},query(e,w,T){if(w.length===0)throw Error(`"is" engine expects non-empty selector list`);let E=[];for(let D of w)E=E.concat(T.query(e,D));return w.length===1?E:sortInDOMOrder(E)}},hasEngine={matches(e,w,T,E){if(w.length===0)throw Error(`"has" engine expects non-empty selector list`);return E.query({...T,scope:e},w).length>0}},scopeEngine={matches(e,w,T,E){if(w.length!==0)throw Error(`"scope" engine expects no arguments`);let D=T.originalScope||T.scope;return D.nodeType===9?e===D.documentElement:e===D},query(e,w,T){if(w.length!==0)throw Error(`"scope" engine expects no arguments`);let E=e.originalScope||e.scope;if(E.nodeType===9){let e=E.documentElement;return e?[e]:[]}return E.nodeType===1?[E]:[]}},notEngine={matches(e,w,T,E){if(w.length===0)throw Error(`"not" engine expects non-empty selector list`);return!E.matches(e,w,T)}},lightEngine={query(e,w,T){return T.query({...e,pierceShadow:!1},w)},matches(e,w,T,E){return E.matches(e,w,{...T,pierceShadow:!1})}},visibleEngine={matches(e,w,T,E){if(w.length)throw Error(`"visible" engine expects no arguments`);return isElementVisible(e)}},textEngine={matches(e,w,T,E){if(w.length!==1||typeof w[0]!=`string`)throw Error(`"text" engine expects a single string`);let D=normalizeWhiteSpace(w[0]).toLowerCase(),O=e=>e.normalized.toLowerCase().includes(D);return elementMatchesText(E._cacheText,e,O)===`self`}},textIsEngine={matches(e,w,T,E){if(w.length!==1||typeof w[0]!=`string`)throw Error(`"text-is" engine expects a single string`);let D=normalizeWhiteSpace(w[0]),O=e=>!D&&!e.immediate.length?!0:e.immediate.some(e=>normalizeWhiteSpace(e)===D);return elementMatchesText(E._cacheText,e,O)!==`none`}},textMatchesEngine={matches(e,w,T,E){if(w.length===0||typeof w[0]!=`string`||w.length>2||w.length===2&&typeof w[1]!=`string`)throw Error(`"text-matches" engine expects a regexp body and optional regexp flags`);let D=new RegExp(w[0],w.length===2?w[1]:void 0),O=e=>D.test(e.full);return elementMatchesText(E._cacheText,e,O)===`self`}},hasTextEngine={matches(e,w,T,E){if(w.length!==1||typeof w[0]!=`string`)throw Error(`"has-text" engine expects a single string`);if(shouldSkipForTextMatching(e))return!1;let D=normalizeWhiteSpace(w[0]).toLowerCase(),O=e=>e.normalized.toLowerCase().includes(D);return O(elementText(E._cacheText,e))}};function createLayoutEngine(e){return{matches(w,T,E,D){let O=T.length&&typeof T[T.length-1]==`number`?T[T.length-1]:void 0,k=O===void 0?T:T.slice(0,T.length-1);if(T.length<1+(O===void 0?0:1))throw Error(`"${e}" engine expects a selector list and optional maximum distance in pixels`);let A=D.query(E,k),j=layoutSelectorScore(e,w,A,O);return j===void 0?!1:(D._markScore(w,j),!0)}}}var nthMatchEngine={query(e,w,T){let E=w[w.length-1];if(w.length<2)throw Error(`"nth-match" engine expects non-empty selector list and an index argument`);if(typeof E!=`number`||E<1)throw Error(`"nth-match" engine expects a one-based index as the last argument`);let D=isEngine.query(e,w.slice(0,w.length-1),T);return E--,E<D.length?[D[E]]:[]}};function parentElementOrShadowHostInContext(e,w){if(e!==w.scope)return w.pierceShadow?parentElementOrShadowHost(e):e.parentElement||void 0}function previousSiblingInContext(e,w){if(e!==w.scope)return e.previousElementSibling||void 0}function sortInDOMOrder(e){let w=new Map,T=[],E=[];function D(e){let E=w.get(e);if(E)return E;let O=parentElementOrShadowHost(e);if(O){let w=D(O);w.children.push(e)}else T.push(e);return E={children:[],taken:!1},w.set(e,E),E}for(let w of e)D(w).taken=!0;function O(e){let T=w.get(e);if(T.taken&&E.push(e),T.children.length>1){let w=new Set(T.children);T.children=[];let E=e.firstElementChild;for(;E&&T.children.length<w.size;)w.has(E)&&T.children.push(E),E=E.nextElementSibling;for(E=e.shadowRoot?e.shadowRoot.firstElementChild:null;E&&T.children.length<w.size;)w.has(E)&&T.children.push(E),E=E.nextElementSibling}T.children.forEach(O)}return T.forEach(O),E}function getByAttributeTextSelector(e,w,T){return`internal:attr=[${e}=${escapeForAttributeSelector(w,T?.exact||!1)}]`}function getByTestIdSelector(e,w){return`internal:testid=[${e}=${escapeForAttributeSelector(w,!0)}]`}function getByLabelSelector(e,w){return`internal:label=${escapeForTextSelector(e,!!w?.exact)}`}function getByAltTextSelector(e,w){return getByAttributeTextSelector(`alt`,e,w)}function getByTitleSelector(e,w){return getByAttributeTextSelector(`title`,e,w)}function getByPlaceholderSelector(e,w){return getByAttributeTextSelector(`placeholder`,e,w)}function getByTextSelector(e,w){return`internal:text=${escapeForTextSelector(e,!!w?.exact)}`}function getByRoleSelector(e,w={}){let T=[];return w.checked!==void 0&&T.push([`checked`,String(w.checked)]),w.disabled!==void 0&&T.push([`disabled`,String(w.disabled)]),w.selected!==void 0&&T.push([`selected`,String(w.selected)]),w.expanded!==void 0&&T.push([`expanded`,String(w.expanded)]),w.includeHidden!==void 0&&T.push([`include-hidden`,String(w.includeHidden)]),w.level!==void 0&&T.push([`level`,String(w.level)]),w.name!==void 0&&T.push([`name`,escapeForAttributeSelector(w.name,!!w.exact)]),w.pressed!==void 0&&T.push([`pressed`,String(w.pressed)]),`internal:role=${e}${T.map(([e,w])=>`[${e}=${w}]`).join(``)}`}var _Ivya=class e{constructor(){__publicField(this,`_engines`),__publicField(this,`_evaluator`),this._evaluator=new SelectorEvaluatorImpl(new Map),this._engines=new Map,this._engines.set(`xpath`,XPathEngine),this._engines.set(`xpath:light`,XPathEngine),this._engines.set(`role`,createRoleEngine(!1)),this._engines.set(`text`,this._createTextEngine(!0,!1)),this._engines.set(`text:light`,this._createTextEngine(!1,!1)),this._engines.set(`id`,this._createAttributeEngine(`id`,!0)),this._engines.set(`id:light`,this._createAttributeEngine(`id`,!1)),this._engines.set(`data-testid`,this._createAttributeEngine(`data-testid`,!0)),this._engines.set(`data-testid:light`,this._createAttributeEngine(`data-testid`,!1)),this._engines.set(`data-test-id`,this._createAttributeEngine(`data-test-id`,!0)),this._engines.set(`data-test-id:light`,this._createAttributeEngine(`data-test-id`,!1)),this._engines.set(`data-test`,this._createAttributeEngine(`data-test`,!0)),this._engines.set(`data-test:light`,this._createAttributeEngine(`data-test`,!1)),this._engines.set(`css`,this._createCSSEngine()),this._engines.set(`nth`,{queryAll:()=>[]}),this._engines.set(`visible`,this._createVisibleEngine()),this._engines.set(`internal:control`,{queryAll:()=>[]}),this._engines.set(`internal:has`,this._createHasEngine()),this._engines.set(`internal:has-not`,this._createHasNotEngine()),this._engines.set(`internal:and`,{queryAll:()=>[]}),this._engines.set(`internal:or`,{queryAll:()=>[]}),this._engines.set(`internal:chain`,this._createInternalChainEngine()),this._engines.set(`internal:label`,this._createInternalLabelEngine()),this._engines.set(`internal:text`,this._createTextEngine(!0,!0)),this._engines.set(`internal:has-text`,this._createInternalHasTextEngine()),this._engines.set(`internal:has-not-text`,this._createInternalHasNotTextEngine()),this._engines.set(`internal:attr`,this._createNamedAttributeEngine()),this._engines.set(`internal:testid`,this._createNamedAttributeEngine()),this._engines.set(`internal:role`,createRoleEngine(!0))}static create(w){return Object.assign(e.options,w),e.singleton||=new e}queryLocatorSelector(e,w=document.documentElement,T=!0){return this.querySelector(this.parseSelector(e),w,T)}queryLocatorSelectorAll(e,w=document.documentElement){return this.querySelectorAll(this.parseSelector(e),w)}querySelector(e,w,T=!0){let E=this.querySelectorAll(e,w);if(T&&E.length>1)throw this.strictModeViolationError(e,E);return E[0]||null}queryAllByRole(e,w,T=document.documentElement){let E=this.parseSelector(getByRoleSelector(e,w));return this.querySelectorAll(E,T)}queryAllByLabelText(e,w,T=document.documentElement){let E=this.parseSelector(getByLabelSelector(e,w));return this.querySelectorAll(E,T)}queryAllByTestId(w,T=document.documentElement){let E=this.parseSelector(getByTestIdSelector(e.options.testIdAttribute,w));return this.querySelectorAll(E,T)}queryAllByText(e,w,T=document.documentElement){let E=this.parseSelector(getByTextSelector(e,w));return this.querySelectorAll(E,T)}queryAllByTitle(e,w,T=document.documentElement){let E=this.parseSelector(getByTitleSelector(e,w));return this.querySelectorAll(E,T)}queryAllByPlaceholder(e,w,T=document.documentElement){let E=this.parseSelector(getByPlaceholderSelector(e,w));return this.querySelectorAll(E,T)}queryAllByAltText(e,w,T=document.documentElement){let E=this.parseSelector(getByAltTextSelector(e,w));return this.querySelectorAll(E,T)}queryByRole(e,w,T=document.documentElement){let E=this.parseSelector(getByRoleSelector(e,w));return this.querySelector(E,T,!1)}queryByLabelText(e,w,T=document.documentElement){let E=this.parseSelector(getByLabelSelector(e,w));return this.querySelector(E,T,!1)}queryByTestId(w,T=document.documentElement){let E=this.parseSelector(getByTestIdSelector(e.options.testIdAttribute,w));return this.querySelector(E,T,!1)}queryByText(e,w,T=document.documentElement){let E=this.parseSelector(getByTextSelector(e,w));return this.querySelector(E,T,!1)}queryByTitle(e,w,T=document.documentElement){let E=this.parseSelector(getByTitleSelector(e,w));return this.querySelector(E,T,!1)}queryByPlaceholder(e,w,T=document.documentElement){let E=this.parseSelector(getByPlaceholderSelector(e,w));return this.querySelector(E,T,!1)}queryByAltText(e,w,T=document.documentElement){let E=this.parseSelector(getByAltTextSelector(e,w));return this.querySelector(E,T,!1)}strictModeViolationError(e,w){let T=w.slice(0,10).map(e=>({preview:this.previewNode(e),selector:this.generateSelectorSimple(e)})),E=T.map((e,w)=>`
|
|
4
4
|
${w+1}) ${e.preview} aka ${asLocator(`javascript`,e.selector)}`);return T.length<w.length&&E.push(`
|
|
5
5
|
...`),this.createStacklessError(`strict mode violation: ${asLocator(`javascript`,stringifySelector(e))} resolved to ${w.length} elements:${E.join(``)}
|
|
6
6
|
`)}generateSelectorSimple(w,T){return generateSelector(this,w,{...T,testIdAttributeName:e.options.testIdAttribute})}parseSelector(e){let w=parseSelector(e);return visitAllSelectorParts(w,w=>{if(!this._engines.has(w.name))throw this.createStacklessError(`Unknown engine "${w.name}" while parsing selector ${e}`)}),w}previewNode(e){if(e.nodeType===Node.TEXT_NODE)return oneLine(`#text=${e.nodeValue||``}`);if(e.nodeType!==Node.ELEMENT_NODE)return oneLine(`<${e.nodeName.toLowerCase()} />`);let w=e,T=[];for(let e=0;e<w.attributes.length;e++){let{name:E,value:D}=w.attributes[e];E!==`style`&&(!D&&booleanAttributes.has(E)?T.push(` ${E}`):T.push(` ${E}="${D}"`))}T.sort((e,w)=>e.length-w.length);let E=trimStringWithEllipsis(T.join(``),500);if(autoClosingTags.has(w.nodeName))return oneLine(`<${w.nodeName.toLowerCase()}${E}/>`);let D=w.childNodes,O=!1;if(D.length<=5){O=!0;for(let e=0;e<D.length;e++)O&&=D[e].nodeType===Node.TEXT_NODE}let k=O?w.textContent||``:D.length?`…`:``;return oneLine(`<${w.nodeName.toLowerCase()}${E}>${trimStringWithEllipsis(k,50)}</${w.nodeName.toLowerCase()}>`)}querySelectorAll(e,w){if(e.capture!==void 0){if(e.parts.some(e=>e.name===`nth`))throw this.createStacklessError(`Can't query n-th element in a request with the capture.`);let T={parts:e.parts.slice(0,e.capture+1)};if(e.capture<e.parts.length-1){let w={parts:e.parts.slice(e.capture+1)},E={name:`internal:has`,body:{parsed:w},source:stringifySelector(w)};T.parts.push(E)}return this.querySelectorAll(T,w)}if(!w.querySelectorAll)throw this.createStacklessError(`Node is not queryable.`);if(e.capture!==void 0)throw this.createStacklessError(`Internal error: there should not be a capture in the selector.`);if(w.nodeType===11&&e.parts.length===1&&e.parts[0].name===`css`&&e.parts[0].source===`:scope`)return[w];this._evaluator.begin();try{let T=new Set([w]);for(let E of e.parts)if(E.name===`nth`)T=this._queryNth(T,E);else if(E.name===`internal:and`){let e=this.querySelectorAll(E.body.parsed,w);T=new Set(e.filter(e=>T.has(e)))}else if(E.name===`internal:or`){let e=this.querySelectorAll(E.body.parsed,w);T=new Set(sortInDOMOrder(new Set([...T,...e])))}else if(kLayoutSelectorNames.includes(E.name))T=this._queryLayoutSelector(T,E,w);else{let e=new Set;for(let w of T){let T=this._queryEngineAll(E,w);for(let w of T)e.add(w)}T=e}return[...T]}finally{this._evaluator.end()}}_queryEngineAll(e,w){let T=this._engines.get(e.name).queryAll(w,e.body);for(let e of T)if(!(`nodeName`in e))throw this.createStacklessError(`Expected a Node but got ${Object.prototype.toString.call(e)}`);return T}_queryNth(e,w){let T=[...e],E=+w.body;return E===-1&&(E=T.length-1),new Set(T.slice(E,E+1))}_queryLayoutSelector(e,w,T){let E=w.name,D=w.body,O=[],k=this.querySelectorAll(D.parsed,T);for(let w of e){let e=layoutSelectorScore(E,w,k,D.distance);e!==void 0&&O.push({element:w,score:e})}return O.sort((e,w)=>e.score-w.score),new Set(O.map(e=>e.element))}createStacklessError(w){if(e.options.browser===`firefox`){let e=Error(`Error: ${w}`);return e.stack=``,e}let T=Error(w);return delete T.stack,T}_createTextEngine(e,w){let T=(T,E)=>{let{matcher:D,kind:O}=createTextMatcher(E,w),k=[],A=null,j=e=>{if(O===`lax`&&A&&A.contains(e))return!1;let T=elementMatchesText(this._evaluator._cacheText,e,D);T===`none`&&(A=e),(T===`self`||T===`selfAndChildren`&&O===`strict`&&!w)&&k.push(e)};T.nodeType===Node.ELEMENT_NODE&&j(T);let M=this._evaluator._queryCSS({scope:T,pierceShadow:e},`*`);for(let e of M)j(e);return k};return{queryAll:T}}_createAttributeEngine(e,w){let T=w=>{let T=`[${e}=${JSON.stringify(w)}]`;return[{simples:[{selector:{css:T,functions:[]},combinator:``}]}]};return{queryAll:(e,E)=>this._evaluator.query({scope:e,pierceShadow:w},T(E))}}_createCSSEngine(){return{queryAll:(e,w)=>this._evaluator.query({scope:e,pierceShadow:!0},w)}}_createNamedAttributeEngine(){let e=(e,w)=>{let T=parseAttributeSelector(w);if(T.name||T.attributes.length!==1)throw Error(`Malformed attribute selector: ${w}`);let{name:E,value:D,caseSensitive:O}=T.attributes[0],k=O?null:D.toLowerCase(),A;A=D instanceof RegExp?e=>!!e.match(D):O?e=>e===D:e=>e.toLowerCase().includes(k);let j=this._evaluator._queryCSS({scope:e,pierceShadow:!0},`[${E}]`);return j.filter(e=>A(e.getAttribute(E)))};return{queryAll:e}}_createVisibleEngine(){let e=(e,w)=>e.nodeType===1&&isElementVisible(e)===!!w?[e]:[];return{queryAll:e}}_createHasEngine(){let e=(e,w)=>{if(e.nodeType!==1)return[];let T=!!this.querySelector(w.parsed,e,!1);return T?[e]:[]};return{queryAll:e}}_createHasNotEngine(){let e=(e,w)=>{if(e.nodeType!==1)return[];let T=!!this.querySelector(w.parsed,e,!1);return T?[]:[e]};return{queryAll:e}}_createInternalChainEngine(){let e=(e,w)=>this.querySelectorAll(w.parsed,e);return{queryAll:e}}_createInternalLabelEngine(){return{queryAll:(e,w)=>{let{matcher:T}=createTextMatcher(w,!0),E=this._evaluator._queryCSS({scope:e,pierceShadow:!0},`*`);return E.filter(e=>getElementLabels(this._evaluator._cacheText,e).some(e=>T(e)))}}}_createInternalHasTextEngine(){return{queryAll:(e,w)=>{if(e.nodeType!==1)return[];let T=e,E=elementText(this._evaluator._cacheText,T),{matcher:D}=createTextMatcher(w,!0);return D(E)?[T]:[]}}}_createInternalHasNotTextEngine(){return{queryAll:(e,w)=>{if(e.nodeType!==1)return[];let T=e,E=elementText(this._evaluator._cacheText,T),{matcher:D}=createTextMatcher(w,!0);return D(E)?[]:[T]}}}};__publicField(_Ivya,`options`,{testIdAttribute:`data-testid`,browser:`chromium`}),__publicField(_Ivya,`singleton`,null);var Ivya=_Ivya;function oneLine(e){return e.replace(/\n/g,`↵`).replace(/\t/g,`⇆`)}var booleanAttributes=new Set([`checked`,`selected`,`disabled`,`readonly`,`multiple`]),autoClosingTags=new Set([`AREA`,`BASE`,`BR`,`COL`,`COMMAND`,`EMBED`,`HR`,`IMG`,`INPUT`,`KEYGEN`,`LINK`,`MENUITEM`,`META`,`PARAM`,`SOURCE`,`TRACK`,`WBR`]);function cssUnquote(e){if(e=e.substring(1,e.length-1),!e.includes(`\\`))return e;let w=[],T=0;for(;T<e.length;)e[T]===`\\`&&T+1<e.length&&T++,w.push(e[T++]);return w.join(``)}function createTextMatcher(e,w){if(e[0]===`/`&&e.lastIndexOf(`/`)>0){let w=e.lastIndexOf(`/`),T=new RegExp(e.substring(1,w),e.substring(w+1));return{matcher:e=>T.test(e.full),kind:`regex`}}let T=w?JSON.parse.bind(JSON):cssUnquote,E=!1;if(e.length>1&&e[0]===`"`&&e[e.length-1]===`"`?(e=T(e),E=!0):w&&e.length>1&&e[0]===`"`&&e[e.length-2]===`"`&&e[e.length-1]===`i`?(e=T(e.substring(0,e.length-1)),E=!1):w&&e.length>1&&e[0]===`"`&&e[e.length-2]===`"`&&e[e.length-1]===`s`?(e=T(e.substring(0,e.length-1)),E=!0):e.length>1&&e[0]===`'`&&e[e.length-1]===`'`&&(e=T(e),E=!0),e=normalizeWhiteSpace(e),E){if(w)return{kind:`strict`,matcher:w=>w.normalized===e};let T=w=>!e&&!w.immediate.length?!0:w.immediate.some(w=>normalizeWhiteSpace(w)===e);return{matcher:T,kind:`strict`}}return e=e.toLowerCase(),{kind:`lax`,matcher:w=>w.normalized.toLowerCase().includes(e)}}var XPathEngine={queryAll(e,w){w.startsWith(`/`)&&e.nodeType!==Node.DOCUMENT_NODE&&(w=`.${w}`);let T=[],E=e.ownerDocument||e;if(!E)return T;let D=E.evaluate(w,e,null,XPathResult.ORDERED_NODE_ITERATOR_TYPE);for(let e=D.iterateNext();e;e=D.iterateNext())e.nodeType===Node.ELEMENT_NODE&&T.push(e);return T}};function parentElementOrShadowHost(e){if(e.parentElement)return e.parentElement;if(e.parentNode&&e.parentNode.nodeType===11&&e.parentNode.host)return e.parentNode.host}function enclosingShadowRootOrDocument(e){let w=e;for(;w.parentNode;)w=w.parentNode;if(w.nodeType===11||w.nodeType===9)return w}function enclosingShadowHost(e){for(;e.parentElement;)e=e.parentElement;return parentElementOrShadowHost(e)}function closestCrossShadow(e,w){for(;e;){let T=e.closest(w);if(T)return T;e=enclosingShadowHost(e)}}function getElementComputedStyle(e,w){return e.ownerDocument&&e.ownerDocument.defaultView?e.ownerDocument.defaultView.getComputedStyle(e,w):void 0}function isElementStyleVisibilityVisible(e,w){if(w??=getElementComputedStyle(e),!w)return!0;if(Element.prototype.checkVisibility&&Ivya.options.browser!==`webkit`){if(!e.checkVisibility())return!1}else{let w=e.closest(`details,summary`);if(w!==e&&w?.nodeName===`DETAILS`&&!w.open)return!1}return w.visibility===`visible`}function isElementVisible(e){let w=getElementComputedStyle(e);if(!w)return!0;if(w.display===`contents`){for(let w=e.firstChild;w;w=w.nextSibling)if(w.nodeType===1&&isElementVisible(w)||w.nodeType===3&&isVisibleTextNode(w))return!0;return!1}if(!isElementStyleVisibilityVisible(e,w))return!1;let T=e.getBoundingClientRect();return T.width>0&&T.height>0}function isVisibleTextNode(e){let w=e.ownerDocument.createRange();w.selectNode(e);let T=w.getBoundingClientRect();return T.width>0&&T.height>0}function elementSafeTagName(e){return e instanceof HTMLFormElement?`FORM`:e.tagName.toUpperCase()}function getElementLocatorSelectors(w){let T=page.elementLocator(w);return{getByAltText:(e,w)=>T.getByAltText(e,w),getByLabelText:(e,w)=>T.getByLabelText(e,w),getByPlaceholder:(e,w)=>T.getByPlaceholder(e,w),getByRole:(e,w)=>T.getByRole(e,w),getByTestId:e=>T.getByTestId(e),getByText:(e,w)=>T.getByText(e,w),getByTitle:(e,w)=>T.getByTitle(e,w)}}function debug(e,w,T){Array.isArray(e)?e.forEach(e=>console.log(prettyDOM(e,w,T))):console.log(prettyDOM(e,w,T))}function prettyDOM(e,T=Number(import.meta.env.DEBUG_PRINT_LIMIT??7e3),E={}){if(T===0)return``;e||=document.body,`element`in e&&`all`in e&&(e=e.element());let D=typeof e;if(D!==`object`||!e.outerHTML){let w=D===`object`?e.constructor.name:D;throw TypeError(`Expecting a valid DOM element, but got ${w}.`)}let O=stringify(e,1/0,{maxLength:T,highlight:!0,...E});return e.outerHTML.length>T?`${O.slice(0,T)}...`:O}function getElementError(e,w){let T=Error(`Cannot find element with locator: ${asLocator(`javascript`,e)}\n\n${prettyDOM(w)}`);return T.name=`VitestBrowserElementError`,T}export{Ivya as I,getByTextSelector as a,getByPlaceholderSelector as b,getByAltTextSelector as c,getByTestIdSelector as d,getByRoleSelector as e,getByLabelSelector as f,getByTitleSelector as g,getElementError as h,getAriaChecked as i,getAriaRole as j,kAriaCheckedRoles as k,getAriaDisabled as l,beginAriaCaches as m,endAriaCaches as n,isElementVisible as o,getElementAccessibleDescription as p,getElementAccessibleErrorMessage as q,getElementAccessibleName as r,cssEscape as s,getElementLocatorSelectors as t,debug as u,prettyDOM as v};
|
package/dist/utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import"@vitest/browser/context";export{u as debug,h as getElementError,t as getElementLocatorSelectors,v as prettyDOM}from"./public-utils-
|
|
1
|
+
import"@vitest/browser/context";export{u as debug,h as getElementError,t as getElementLocatorSelectors,v as prettyDOM}from"./public-utils-DUr23h1p.js";import"vitest/utils";
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { createManualModuleSource } from '@vitest/mocker/node';
|
|
2
|
+
import { createDebugger } from 'vitest/node';
|
|
2
3
|
|
|
4
|
+
const debug$1 = createDebugger("vitest:browser:playwright");
|
|
3
5
|
const playwrightBrowsers = [
|
|
4
6
|
"firefox",
|
|
5
7
|
"webkit",
|
|
@@ -16,20 +18,25 @@ class PlaywrightBrowserProvider {
|
|
|
16
18
|
pages = new Map();
|
|
17
19
|
browserPromise = null;
|
|
18
20
|
mocker;
|
|
21
|
+
closing = false;
|
|
19
22
|
getSupportedBrowsers() {
|
|
20
23
|
return playwrightBrowsers;
|
|
21
24
|
}
|
|
22
25
|
initialize(project, { browser, options }) {
|
|
26
|
+
this.closing = false;
|
|
23
27
|
this.project = project;
|
|
24
28
|
this.browserName = browser;
|
|
25
29
|
this.options = options;
|
|
26
30
|
this.mocker = this.createMocker();
|
|
27
31
|
}
|
|
28
32
|
async openBrowser() {
|
|
33
|
+
await this._throwIfClosing();
|
|
29
34
|
if (this.browserPromise) {
|
|
35
|
+
debug$1?.("[%s] the browser is resolving, reusing the promise", this.browserName);
|
|
30
36
|
return this.browserPromise;
|
|
31
37
|
}
|
|
32
38
|
if (this.browser) {
|
|
39
|
+
debug$1?.("[%s] the browser is resolved, reusing it", this.browserName);
|
|
33
40
|
return this.browser;
|
|
34
41
|
}
|
|
35
42
|
this.browserPromise = (async () => {
|
|
@@ -55,8 +62,8 @@ class PlaywrightBrowserProvider {
|
|
|
55
62
|
launchOptions.args.push("--start-maximized");
|
|
56
63
|
}
|
|
57
64
|
}
|
|
58
|
-
|
|
59
|
-
this.browser =
|
|
65
|
+
debug$1?.("[%s] initializing the browser with launch options: %O", this.browserName, launchOptions);
|
|
66
|
+
this.browser = await playwright[this.browserName].launch(launchOptions);
|
|
60
67
|
this.browserPromise = null;
|
|
61
68
|
return this.browser;
|
|
62
69
|
})();
|
|
@@ -166,10 +173,13 @@ class PlaywrightBrowserProvider {
|
|
|
166
173
|
};
|
|
167
174
|
}
|
|
168
175
|
async createContext(sessionId) {
|
|
176
|
+
await this._throwIfClosing();
|
|
169
177
|
if (this.contexts.has(sessionId)) {
|
|
178
|
+
debug$1?.("[%s][%s] the context already exists, reusing it", sessionId, this.browserName);
|
|
170
179
|
return this.contexts.get(sessionId);
|
|
171
180
|
}
|
|
172
181
|
const browser = await this.openBrowser();
|
|
182
|
+
await this._throwIfClosing(browser);
|
|
173
183
|
const { actionTimeout,...contextOptions } = this.options?.context ?? {};
|
|
174
184
|
const options = {
|
|
175
185
|
...contextOptions,
|
|
@@ -179,9 +189,11 @@ class PlaywrightBrowserProvider {
|
|
|
179
189
|
options.viewport = null;
|
|
180
190
|
}
|
|
181
191
|
const context = await browser.newContext(options);
|
|
192
|
+
await this._throwIfClosing(context);
|
|
182
193
|
if (actionTimeout) {
|
|
183
194
|
context.setDefaultTimeout(actionTimeout);
|
|
184
195
|
}
|
|
196
|
+
debug$1?.("[%s][%s] the context is ready", sessionId, this.browserName);
|
|
185
197
|
this.contexts.set(sessionId, context);
|
|
186
198
|
return context;
|
|
187
199
|
}
|
|
@@ -219,13 +231,17 @@ class PlaywrightBrowserProvider {
|
|
|
219
231
|
};
|
|
220
232
|
}
|
|
221
233
|
async openBrowserPage(sessionId) {
|
|
234
|
+
await this._throwIfClosing();
|
|
222
235
|
if (this.pages.has(sessionId)) {
|
|
236
|
+
debug$1?.("[%s][%s] the page already exists, closing the old one", sessionId, this.browserName);
|
|
223
237
|
const page = this.pages.get(sessionId);
|
|
224
238
|
await page.close();
|
|
225
239
|
this.pages.delete(sessionId);
|
|
226
240
|
}
|
|
227
241
|
const context = await this.createContext(sessionId);
|
|
228
242
|
const page = await context.newPage();
|
|
243
|
+
debug$1?.("[%s][%s] the page is ready", sessionId, this.browserName);
|
|
244
|
+
await this._throwIfClosing(page);
|
|
229
245
|
this.pages.set(sessionId, page);
|
|
230
246
|
if (process.env.VITEST_PW_DEBUG) {
|
|
231
247
|
page.on("requestfailed", (request) => {
|
|
@@ -235,9 +251,23 @@ class PlaywrightBrowserProvider {
|
|
|
235
251
|
return page;
|
|
236
252
|
}
|
|
237
253
|
async openPage(sessionId, url, beforeNavigate) {
|
|
254
|
+
debug$1?.("[%s][%s] creating the browser page for %s", sessionId, this.browserName, url);
|
|
238
255
|
const browserPage = await this.openBrowserPage(sessionId);
|
|
239
256
|
await beforeNavigate?.();
|
|
257
|
+
debug$1?.("[%s][%s] browser page is created, opening %s", sessionId, this.browserName, url);
|
|
240
258
|
await browserPage.goto(url, { timeout: 0 });
|
|
259
|
+
await this._throwIfClosing(browserPage);
|
|
260
|
+
}
|
|
261
|
+
async _throwIfClosing(disposable) {
|
|
262
|
+
if (this.closing) {
|
|
263
|
+
debug$1?.("[%s] provider was closed, cannot perform the action on %s", this.browserName, String(disposable));
|
|
264
|
+
await disposable?.close();
|
|
265
|
+
this.pages.clear();
|
|
266
|
+
this.contexts.clear();
|
|
267
|
+
this.browser = null;
|
|
268
|
+
this.browserPromise = null;
|
|
269
|
+
throw new Error(`[vitest] The provider was closed.`);
|
|
270
|
+
}
|
|
241
271
|
}
|
|
242
272
|
async getCDPSession(sessionid) {
|
|
243
273
|
const page = this.getPage(sessionid);
|
|
@@ -259,13 +289,20 @@ class PlaywrightBrowserProvider {
|
|
|
259
289
|
};
|
|
260
290
|
}
|
|
261
291
|
async close() {
|
|
292
|
+
debug$1?.("[%s] closing provider", this.browserName);
|
|
293
|
+
this.closing = true;
|
|
262
294
|
const browser = this.browser;
|
|
263
295
|
this.browser = null;
|
|
296
|
+
if (this.browserPromise) {
|
|
297
|
+
await this.browserPromise;
|
|
298
|
+
this.browserPromise = null;
|
|
299
|
+
}
|
|
264
300
|
await Promise.all([...this.pages.values()].map((p) => p.close()));
|
|
265
301
|
this.pages.clear();
|
|
266
302
|
await Promise.all([...this.contexts.values()].map((c) => c.close()));
|
|
267
303
|
this.contexts.clear();
|
|
268
304
|
await browser?.close();
|
|
305
|
+
debug$1?.("[%s] provider is closed", this.browserName);
|
|
269
306
|
}
|
|
270
307
|
}
|
|
271
308
|
function getHeaders(config) {
|
|
@@ -295,6 +332,7 @@ function isDirectCSSRequest(request) {
|
|
|
295
332
|
return CSS_LANGS_RE.test(request) && directRequestRE.test(request);
|
|
296
333
|
}
|
|
297
334
|
|
|
335
|
+
const debug = createDebugger("vitest:browser:wdio");
|
|
298
336
|
const webdriverBrowsers = [
|
|
299
337
|
"firefox",
|
|
300
338
|
"chrome",
|
|
@@ -308,10 +346,12 @@ class WebdriverBrowserProvider {
|
|
|
308
346
|
browserName;
|
|
309
347
|
project;
|
|
310
348
|
options;
|
|
349
|
+
closing = false;
|
|
311
350
|
getSupportedBrowsers() {
|
|
312
351
|
return webdriverBrowsers;
|
|
313
352
|
}
|
|
314
353
|
async initialize(ctx, { browser, options }) {
|
|
354
|
+
this.closing = false;
|
|
315
355
|
this.project = ctx;
|
|
316
356
|
this.browserName = browser;
|
|
317
357
|
this.options = options;
|
|
@@ -337,7 +377,9 @@ class WebdriverBrowserProvider {
|
|
|
337
377
|
return { browser: this.browser };
|
|
338
378
|
}
|
|
339
379
|
async openBrowser() {
|
|
380
|
+
await this._throwIfClosing("opening the browser");
|
|
340
381
|
if (this.browser) {
|
|
382
|
+
debug?.("[%s] the browser is already opened, reusing it", this.browserName);
|
|
341
383
|
return this.browser;
|
|
342
384
|
}
|
|
343
385
|
const options = this.project.config.browser;
|
|
@@ -347,11 +389,14 @@ class WebdriverBrowserProvider {
|
|
|
347
389
|
}
|
|
348
390
|
}
|
|
349
391
|
const { remote } = await import('webdriverio');
|
|
350
|
-
|
|
392
|
+
const remoteOptions = {
|
|
351
393
|
...this.options,
|
|
352
394
|
logLevel: "error",
|
|
353
395
|
capabilities: this.buildCapabilities()
|
|
354
|
-
}
|
|
396
|
+
};
|
|
397
|
+
debug?.("[%s] opening the browser with options: %O", this.browserName, remoteOptions);
|
|
398
|
+
this.browser = await remote(remoteOptions);
|
|
399
|
+
await this._throwIfClosing();
|
|
355
400
|
return this.browser;
|
|
356
401
|
}
|
|
357
402
|
buildCapabilities() {
|
|
@@ -386,11 +431,24 @@ class WebdriverBrowserProvider {
|
|
|
386
431
|
}
|
|
387
432
|
return capabilities;
|
|
388
433
|
}
|
|
389
|
-
async openPage(
|
|
434
|
+
async openPage(sessionId, url) {
|
|
435
|
+
await this._throwIfClosing("creating the browser");
|
|
436
|
+
debug?.("[%s][%s] creating the browser page for %s", sessionId, this.browserName, url);
|
|
390
437
|
const browserInstance = await this.openBrowser();
|
|
438
|
+
debug?.("[%s][%s] browser page is created, opening %s", sessionId, this.browserName, url);
|
|
391
439
|
await browserInstance.url(url);
|
|
440
|
+
await this._throwIfClosing("opening the url");
|
|
441
|
+
}
|
|
442
|
+
async _throwIfClosing(action) {
|
|
443
|
+
if (this.closing) {
|
|
444
|
+
debug?.(`[%s] provider was closed, cannot perform the action${action ? ` ${action}` : ""}`, this.browserName);
|
|
445
|
+
await (this.browser?.sessionId ? this.browser?.deleteSession?.() : null);
|
|
446
|
+
throw new Error(`[vitest] The provider was closed.`);
|
|
447
|
+
}
|
|
392
448
|
}
|
|
393
449
|
async close() {
|
|
450
|
+
debug?.("[%s] closing provider", this.browserName);
|
|
451
|
+
this.closing = true;
|
|
394
452
|
await Promise.all([this.browser?.sessionId ? this.browser?.deleteSession?.() : null]);
|
|
395
453
|
process.exit();
|
|
396
454
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vitest/browser",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "3.1.
|
|
4
|
+
"version": "3.1.3",
|
|
5
5
|
"description": "Browser running for Vitest",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"funding": "https://opencollective.com/vitest",
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
"peerDependencies": {
|
|
67
67
|
"playwright": "*",
|
|
68
68
|
"webdriverio": "^7.0.0 || ^8.0.0 || ^9.0.0",
|
|
69
|
-
"vitest": "3.1.
|
|
69
|
+
"vitest": "3.1.3"
|
|
70
70
|
},
|
|
71
71
|
"peerDependenciesMeta": {
|
|
72
72
|
"playwright": {
|
|
@@ -86,27 +86,27 @@
|
|
|
86
86
|
"sirv": "^3.0.1",
|
|
87
87
|
"tinyrainbow": "^2.0.0",
|
|
88
88
|
"ws": "^8.18.1",
|
|
89
|
-
"@vitest/utils": "3.1.
|
|
90
|
-
"@vitest/mocker": "3.1.
|
|
89
|
+
"@vitest/utils": "3.1.3",
|
|
90
|
+
"@vitest/mocker": "3.1.3"
|
|
91
91
|
},
|
|
92
92
|
"devDependencies": {
|
|
93
93
|
"@types/ws": "^8.18.1",
|
|
94
94
|
"@wdio/protocols": "^9.12.5",
|
|
95
|
-
"@wdio/types": "^9.12.
|
|
95
|
+
"@wdio/types": "^9.12.6",
|
|
96
96
|
"birpc": "2.3.0",
|
|
97
97
|
"flatted": "^3.3.3",
|
|
98
98
|
"ivya": "^1.6.0",
|
|
99
99
|
"mime": "^4.0.7",
|
|
100
100
|
"pathe": "^2.0.3",
|
|
101
101
|
"periscopic": "^4.0.2",
|
|
102
|
-
"playwright": "^1.
|
|
103
|
-
"playwright-core": "^1.
|
|
102
|
+
"playwright": "^1.52.0",
|
|
103
|
+
"playwright-core": "^1.52.0",
|
|
104
104
|
"safaridriver": "^1.0.0",
|
|
105
|
-
"webdriverio": "^9.12.
|
|
106
|
-
"@vitest/runner": "3.1.
|
|
107
|
-
"@vitest/ui": "3.1.
|
|
108
|
-
"
|
|
109
|
-
"vitest": "3.1.
|
|
105
|
+
"webdriverio": "^9.12.7",
|
|
106
|
+
"@vitest/runner": "3.1.3",
|
|
107
|
+
"@vitest/ui": "3.1.3",
|
|
108
|
+
"vitest": "3.1.3",
|
|
109
|
+
"@vitest/ws-client": "3.1.3"
|
|
110
110
|
},
|
|
111
111
|
"scripts": {
|
|
112
112
|
"build": "rimraf dist && pnpm build:node && pnpm build:client",
|