<html><head></head><body>{"version":3,"sources":["src/utils/accessibility-utils.tsx"],"names":["findAriaLiveEventName","AriaLiveRegion","regionName","assertive","getAriaLiveElement","event","buildCustomEvent","document","dispatchEvent","element","detail","dispatchMessage","message","_a","updateMessage","registerRegion","component","setterName","componentWillRender","Object","defineProperty","set","call","this","FocusTargetController","[object Object]","doFocusAfterSearch","doFocusOnNextTarget","bindings","handleComponentRenderLoop","el","focus","defer","_b","onFocusCallback","lastSearchId","store","getUniqueIDFromEngine","engine","Promise","resolve","originalComponentDidRender","componentDidRender","then","isFocusable","getAttribute","hasAttribute","tagName","getFocusableDescendants","children","Array","from","HTMLSlotElement","assignedElements","shadowRoot","push","child","getFirstFocusableDescendant","next","value"],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {AnyBindings} from '../components/common/interface/bindings';\nimport {buildCustomEvent} from './event-utils';\nimport {InitializableComponent} from './initialization-utils';\nimport {defer} from './utils';\n\nexport const findAriaLiveEventName = 'atomic/accessibility/findAriaLive';\n\nexport interface FindAriaLiveEventArgs {\n element?: HTMLAtomicAriaLiveElement;\n}\n\nexport function AriaLiveRegion(regionName: string, assertive = false) {\n function getAriaLiveElement() {\n const event = buildCustomEvent<findarialiveeventargs>(\n findAriaLiveEventName,\n {}\n );\n document.dispatchEvent(event);\n const {element} = event.detail;\n return element;\n }\n\n function dispatchMessage(message: string) {\n getAriaLiveElement()?.updateMessage(regionName, message, assertive);\n }\n\n function registerRegion() {\n getAriaLiveElement()?.registerRegion(regionName, assertive);\n }\n\n return (\n component: InitializableComponent<anybindings>,\n setterName: string\n ) => {\n const {componentWillRender} = component;\n Object.defineProperty(component, setterName, {\n set: (message: string) => dispatchMessage(message),\n });\n\n component.componentWillRender = function () {\n componentWillRender && componentWillRender.call(this);\n registerRegion();\n };\n };\n}\n\nexport class FocusTargetController {\n private bindings: AnyBindings;\n private lastSearchId?: string;\n private element?: HTMLElement;\n private onFocusCallback?: Function;\n private doFocusAfterSearch = false;\n private doFocusOnNextTarget = false;\n\n constructor(private component: InitializableComponent<anybindings>) {\n this.bindings = component.bindings;\n this.handleComponentRenderLoop();\n }\n\n public setTarget(el: HTMLElement | undefined) {\n if (!el) {\n return;\n }\n this.element = el;\n if (this.doFocusOnNextTarget) {\n this.doFocusOnNextTarget = false;\n this.focus();\n }\n }\n\n public async focus() {\n await defer();\n this.element?.focus();\n this.onFocusCallback?.();\n }\n\n public focusAfterSearch() {\n this.lastSearchId = this.bindings.store.getUniqueIDFromEngine(\n this.bindings.engine\n );\n this.doFocusAfterSearch = true;\n return new Promise((resolve) => (this.onFocusCallback = resolve));\n }\n\n public focusOnNextTarget() {\n this.doFocusOnNextTarget = true;\n return new Promise((resolve) => (this.onFocusCallback = resolve));\n }\n\n public disableForCurrentSearch() {\n if (\n this.bindings.store.getUniqueIDFromEngine(this.bindings.engine) !==\n this.lastSearchId\n ) {\n this.doFocusAfterSearch = false;\n }\n }\n\n private handleComponentRenderLoop() {\n const originalComponentDidRender = this.component.componentDidRender;\n\n this.component.componentDidRender = () => {\n originalComponentDidRender &&\n originalComponentDidRender.call(this.component);\n if (!this.bindings) {\n return;\n }\n if (\n this.doFocusAfterSearch &&\n this.bindings.store.getUniqueIDFromEngine(this.bindings.engine) !==\n this.lastSearchId\n ) {\n this.doFocusAfterSearch = false;\n if (this.element) {\n const el = this.element;\n // The focus seems to be flaky without deferring, especially on iOS.\n defer().then(() => {\n el.focus();\n this.onFocusCallback?.();\n });\n }\n }\n };\n }\n}\n\nfunction isFocusable(element: Element) {\n // Source: https://stackoverflow.com/a/30753870\n if (element.getAttribute('tabindex') === '-1') {\n return false;\n }\n if (element.hasAttribute('tabindex')) {\n return true;\n }\n if (element.getAttribute('contentEditable') === 'true') {\n return true;\n }\n switch (element.tagName) {\n case 'A':\n case 'AREA':\n return element.hasAttribute('href');\n case 'INPUT':\n case 'SELECT':\n case 'TEXTAREA':\n case 'BUTTON':\n return !element.hasAttribute('disabled');\n case 'IFRAME':\n return true;\n default:\n return false;\n }\n}\n\nexport function* getFocusableDescendants(\n element: Element\n): Generator<htmlelement> {\n if (isFocusable(element)) {\n yield element as HTMLElement;\n }\n let children = Array.from(element.children);\n if (element instanceof HTMLSlotElement) {\n children = element.assignedElements();\n } else if (element.shadowRoot) {\n children.push(...Array.from(element.shadowRoot.children));\n }\n for (const child of children) {\n yield* getFocusableDescendants(child);\n }\n}\n\nexport function getFirstFocusableDescendant(\n element: Element\n): HTMLElement | null {\n return getFocusableDescendants(element).next().value ?? null;\n}\n"]}</htmlelement></anybindings></anybindings></findarialiveeventargs><style> .hidden { display: none; } </style> <a href="http://www.yopin365.com" class="hidden">皇冠体育</a> <a href="http://www.zgdx8.com" class="hidden">威廉希尔体育</a> <a href="http://www.sydotnet.net" class="hidden">Football-platform-info@sydotnet.net</a> <a href="http://www.smxjjl.com" class="hidden">Sports-betting-contact@smxjjl.com</a> <a href="http://sabateriesmiralles.com" class="hidden">推哈网</a> <a href="http://www.iconfuture.net" class="hidden">太阳城官方网站</a> <a href="http://www.lyhymh.net" class="hidden">Sports-betting-billing@lyhymh.net</a> <a href="http://web-sitemap.bcklzf.com" class="hidden">小雨伞</a> <a href="http://www.rdsy.net" class="hidden">Sports-betting-sales@rdsy.net</a> <a href="http://www.nbzhiai.com" class="hidden">Crown-Sports-billing@nbzhiai.com</a> <a href="http://www.pronewport.com" class="hidden">太阳城</a> <a href="http://www.cceweb.net" class="hidden">博彩平台网址大全</a> <a href="http://www.999lsm.net" class="hidden">Sports-in-Sabah-feedback@999lsm.net</a> <a href="http://iabqtz.uv-uv.com" class="hidden">雪花官网</a> <a href="http://web-sitemap.83288.net" class="hidden">114便民网</a> <a href="http://www.silvamkt.com" class="hidden">皇冠体育官网</a> <a href="http://www.hongjiuchina.com" class="hidden">esball易世博</a> <a href="http://web-sitemap.ok138zhx.com" class="hidden">临高新闻网</a> <a href="http://www.tnrstarsdakdoa.net" class="hidden">皇冠博彩</a> <a href="http://www.yutb.net" class="hidden">The-new-Portuguese-lottery-in-Macao-marketing@yutb.net</a> <a href="https://acrmc.com/search/✔️最新网址:ad22.net✔️现在哪些app可以买球-维基百科✔️最新网址:ad22.net✔️现在哪些app可以买球-维基百科.wix" class="hidden">途牛济南旅游网</a> <a href="https://tw.dictionary.yahoo.com/dictionary?p=✔️网址:ad11.net✔️新皇冠体育app官方(中国)有限公司✔️网址:ad11.net✔️新皇冠体育app官方(中国)有限公司.ukc" class="hidden">全民健康网减肥频道</a> <a href="https://stock.adobe.com/search?k=bob手机客户端✔️最新网址:la55.net✔️bob手机客户端✔️最新网址:la55.net✔️" class="hidden">法律博客</a> <a href="https://www.deep6gear.com/catalogsearch/result/?q=澳门平台网址大全-澳门平台网址大全官方网站✔️网址:ad11.net✔️.fvm" class="hidden">天极网音箱耳机频道</a> <a href="https://acrmc.com/search/十大网堵软件推荐平台介绍✔️最新网址:la55.net✔️" class="hidden"> 腾讯软件管理官方网站</a> <a href="https://tw.dictionary.yahoo.com/dictionary?p=可靠中国赌博平台>>✔️网址:ad11.net✔️手输<<可靠中国赌博平台>>✔️网址:ad11.net✔️手输<<.agg" class="hidden">法律界法治资讯频道</a> <a href="https://stock.adobe.com/search?k=✔️网址:la66.net✔️欧宝app在线登录✔️网址:la66.net✔️欧宝app在线登录.ysz" class="hidden">车盈易</a> <a href="https://tw.dictionary.yahoo.com/dictionary?p=最大正规电子游戏平台(中国)有限公司✔️最新网址:la55.net✔️.ajd" class="hidden">商丘天气预报</a> <a href="https://www.deep6gear.com/catalogsearch/result/?q=✔️最新网址:la55.net✔️可靠的网堵平台软件下载.jac" class="hidden">新疆农业大学</a> <a href="https://es-la.facebook.com/public/✔️网址:la666.net✔️最好的网络博彩信誉博彩网站平台介绍✔️网址:la666.net✔️最好的网络博彩信誉博彩网站平台介绍" class="hidden">燕窝门户网</a> <a href="/sttcs/hot-news/infuscation.html" class="hidden">新乡天气预报</a> <a href="/sttcs/hot-news/backwardly.html" class="hidden">5d虾仔发型</a> <a href="/sitemap.xml" class="hidden">站点地图</a> <a href="/sttcs/hot-news/perfervidness.html" class="hidden">百思不得姐</a> <a href="/sttcs/hot-news/miscompare.html" class="hidden">例外</a> </body></html>