UNPKG

@yuebai008/cli

Version:

Command line interface for rapid qg-minigame development

1 lines 2.44 kB
import*as SDK from"../../../core/sdk/sdk.js";const domLookUpSingleNodeCache=new Map,domLookUpBatchNodesCache=new Map;export function _TEST_clearCache(){domLookUpSingleNodeCache.clear(),domLookUpBatchNodesCache.clear(),layoutShiftSourcesCache.clear(),normalizedLayoutShiftNodesCache.clear()}export async function domNodeForBackendNodeID(e,o){const t=domLookUpSingleNodeCache.get(e)?.get(o);if(void 0!==t)return t;const a=SDK.TargetManager.TargetManager.instance().primaryPageTarget(),n=a?.model(SDK.DOMModel.DOMModel);if(!n)return null;const r=await n.pushNodesByBackendIdsToFrontend(new Set([o])),c=r?.get(o)||null,d=domLookUpSingleNodeCache.get(e)||new Map;return d.set(o,c),domLookUpSingleNodeCache.set(e,d),c}export async function domNodesForMultipleBackendNodeIds(e,o){const t=domLookUpBatchNodesCache.get(e)?.get(o);if(t)return t;const a=SDK.TargetManager.TargetManager.instance().primaryPageTarget(),n=a?.model(SDK.DOMModel.DOMModel);if(!n)return new Map;const r=await n.pushNodesByBackendIdsToFrontend(o)||new Map,c=domLookUpBatchNodesCache.get(e)||new Map;return c.set(o,r),domLookUpBatchNodesCache.set(e,c),r}const layoutShiftSourcesCache=new Map,normalizedLayoutShiftNodesCache=new Map;export async function sourcesForLayoutShift(e,o){const t=layoutShiftSourcesCache.get(e)?.get(o);if(t)return t;const a=o.args.data?.impacted_nodes;if(!a)return[];const n=[];await Promise.all(a.map((async o=>{const t=await domNodeForBackendNodeID(e,o.node_id);t&&n.push({previousRect:new DOMRect(o.old_rect[0],o.old_rect[1],o.old_rect[2],o.old_rect[3]),currentRect:new DOMRect(o.new_rect[0],o.new_rect[1],o.new_rect[2],o.new_rect[3]),node:t})})));const r=layoutShiftSourcesCache.get(e)||new Map;return r.set(o,n),layoutShiftSourcesCache.set(e,r),n}export async function normalizedImpactedNodesForLayoutShift(e,o){const t=normalizedLayoutShiftNodesCache.get(e)?.get(o);if(t)return t;const a=o.args?.data?.impacted_nodes;if(!a)return[];let n=null;const r=SDK.TargetManager.TargetManager.instance().primaryPageTarget(),c=await(r?.runtimeAgent().invoke_evaluate({expression:"window.devicePixelRatio"}));if("number"===c?.result.type&&(n=c?.result.value??null),!n)return a;const d=[];for(const e of a){const o={...e};for(let t=0;t<e.old_rect.length;t++)o.old_rect[t]/=n;for(let t=0;t<e.new_rect.length;t++)o.new_rect[t]/=n;d.push(o)}const s=normalizedLayoutShiftNodesCache.get(e)||new Map;return s.set(o,d),normalizedLayoutShiftNodesCache.set(e,s),d}