/** * @internal * @module */ /** * back up an elements idl and content and restore it when the passed signal emits */ export const backup = ( element: HTMLElement, until: { signal: AbortSignal }, ) => { const backup = { idl: JSON.parse(JSON.stringify(element)), content: Object.fromEntries( Array.from(element.attributes).map((attr) => [attr.name, attr.value]), ), }; until.signal.addEventListener( "abort", () => { Object.assign(element, backup.idl); Object.entries(backup.content).forEach(([name, value]) => element.setAttribute(name, value), ); }, until, ); };