export type TableDOMElements = { wrapper: HTMLDivElement; table: HTMLTableElement; }; export const getTree = (tr: HTMLTableRowElement): TableDOMElements | null => { // pm renders into tbody, owned by react const tbody = tr.parentElement; if (!tbody) { return null; } // rendered by react const table = tbody.parentElement; if (!table) { return null; } // rendered by react const wrapper = table.parentElement; if (!wrapper) { return null; } return { wrapper: wrapper as HTMLDivElement, table: table as HTMLTableElement, }; }; export const getTop = (element: HTMLElement | Window | undefined): number => { if (!element || element instanceof Window) { return 0; } return element.getBoundingClientRect().top; };