UNPKG

verstak

Version:
74 lines (73 loc) 2.79 kB
export const SymHtmlSensors = Symbol("HtmlSensors"); export const SymDataForSensor = Symbol("DataForSensor"); export const SymResizeObserver = Symbol("ResizeObserver"); export const EmptyDataArray = []; export function findTargetElementData(targetPath, underPointer, sym, anyOfPayloadKeys, ignoreWindow = false) { let result = undefined; let i = 0; let window = undefined; while (i < targetPath.length) { const candidate = targetPath[i]; const candidateData = candidate[sym]; if (candidateData !== undefined) { if (!ignoreWindow) { if (window === undefined) window = candidateData["window"]; else if (window !== candidateData["window"]) break; } if (result === undefined) { for (const payloadKey of anyOfPayloadKeys) { const payload = candidateData[payloadKey]; if (payload !== undefined && underPointer.includes(candidate)) { result = candidateData; break; } } } } i++; } return { data: result, window }; } export function grabElementDataList(targetPath, sym, payloadKey, existing, ignoreWindow = false, predicate = () => false) { let result = existing; let i = 0; let j = 0; let window = undefined; let activeData = undefined; while (i < targetPath.length) { let payload = undefined; const candidate = targetPath[i]; const candidateData = candidate[sym]; if (candidateData !== undefined) { if (!ignoreWindow) { if (window === undefined) window = candidateData.window; else if (window !== candidateData.window) break; } payload = candidateData[payloadKey]; if (payload !== undefined) { if (result !== existing) { result.push(payload); } else { if (payload !== existing[j]) { result = existing.slice(0, j); result.push(payload); } else j++; } } } if (payloadKey === "focus" && activeData === undefined && (predicate(candidate) || (candidateData === null || candidateData === void 0 ? void 0 : candidateData.catchChildrenFocus))) { activeData = payload; } i++; } if (j === 0 && result === existing && existing.length > 0) result = EmptyDataArray; return { dataList: result, window, activeData }; }