UNPKG

@yuebai008/cli

Version:

Command line interface for rapid qg-minigame development

1 lines 2.38 kB
import*as SDK from"../../core/sdk/sdk.js";import*as ElementsComponents from"./components/components.js";import*as LitHtml from"../../ui/lit-html/lit-html.js";function isLeafNode(e){return 0===e.numChildren()&&"Iframe"!==e.role()?.value}function getModel(e){const o=SDK.FrameManager.FrameManager.instance().getFrame(e),r=o?.resourceTreeModel().target().model(SDK.AccessibilityModel.AccessibilityModel);if(!r)throw Error("Could not instantiate model for frameId");return r}export async function getRootNode(e){const o=getModel(e),r=await o.requestRootNode(e);if(!r)throw Error("No accessibility root for frame");return r}function getFrameIdForNodeOrDocument(e){let o;if(o=e instanceof SDK.DOMModel.DOMDocument?e.body?.frameId():e.frameId(),!o)throw Error("No frameId for DOM node");return o}export async function getNodeAndAncestorsFromDOMNode(e){let o=getFrameIdForNodeOrDocument(e);const r=getModel(o),t=await r.requestAndLoadSubTreeToNode(e);if(!t)throw Error("Could not retrieve accessibility node for inspected DOM node");const n=SDK.FrameManager.FrameManager.instance().getOutermostFrame()?.id;if(!n)return t;for(;o!==n;){const e=await(SDK.FrameManager.FrameManager.instance().getFrame(o)?.getOwnerDOMNodeOrDocument());if(!e)break;o=getFrameIdForNodeOrDocument(e);const r=getModel(o),n=await r.requestAndLoadSubTreeToNode(e);t.push(...n||[])}return t}async function getChildren(e){if("Iframe"===e.role()?.value){const o=await(e.deferredDOMNode()?.resolvePromise());if(!o)throw new Error("Could not find corresponding DOMNode");const r=o.frameOwnerFrameId();if(!r)throw Error("No owner frameId on iframe node");return[await getRootNode(r)]}return e.accessibilityModel().requestAXChildren(e.id(),e.getFrameId()||void 0)}export async function sdkNodeToAXTreeNodes(e){const o=e;return isLeafNode(e)?[{treeNodeData:o,id:getNodeId(e)}]:[{treeNodeData:o,children:async()=>{const o=await getChildren(e);return(await Promise.all(o.map((e=>sdkNodeToAXTreeNodes(e))))).flat(1)},id:getNodeId(e)}]}export function accessibilityNodeRenderer(e){const o=ElementsComponents.AccessibilityTreeNode.AccessibilityTreeNode.litTagName,r=e.treeNodeData,t=r.name()?.value||"",n=r.role()?.value||"",a=r.properties()||[],d=r.ignored(),i=getNodeId(r);return LitHtml.html`<${o} .data=${{name:t,role:n,ignored:d,properties:a,id:i}}></${o}>`}export function getNodeId(e){return e.getFrameId()+"#"+e.id()}