diff --git a/doc/template.html b/doc/template.html index 5e70b6054e080b..7a1361f1198201 100644 --- a/doc/template.html +++ b/doc/template.html @@ -1,5 +1,6 @@ + @@ -10,6 +11,7 @@ +
@@ -25,15 +27,18 @@

Node.js __VERSION__ documentation

-
@@ -77,7 +82,7 @@

Node.js __VERSION__ documentation

} mq.addEventListener('change', mqChangeListener); if (themeToggleButton) { - themeToggleButton.addEventListener('click', function() { + themeToggleButton.addEventListener('click', function () { mq.removeEventListener('change', mqChangeListener); }, { once: true }); } @@ -90,7 +95,7 @@

Node.js __VERSION__ documentation

} if (themeToggleButton) { themeToggleButton.hidden = false; - themeToggleButton.addEventListener('click', function() { + themeToggleButton.addEventListener('click', function () { sessionStorage.setItem( kCustomPreference, document.body.classList.toggle('dark-mode') @@ -98,6 +103,66 @@

Node.js __VERSION__ documentation

}); } } + + let eqIsh = (a, b, fuzz = 2) => { + return (Math.abs(a - b) <= fuzz); + }; + + let rectNotEQ = (a, b) => { + return (!eqIsh(a.width, b.width) || + !eqIsh(a.height, b.height)); + }; + + let spaced = new WeakMap(); + + let reserveSpace = (el, rect = el.getClientBoundingRect()) => { + let old = spaced.get(el); + if (!old || rectNotEQ(old, rect)) { + spaced.set(el, rect); + el.attributeStyleMap.set( + "contain-intrinsic-size", + `${rect.width}px ${rect.height}px` + ); + } + }; + + let iObs = new IntersectionObserver( + (entries, o) => { + entries.forEach((entry) => { + + reserveSpace(entry.target, + entry.boundingClientRect); + }); + }, + { rootMargin: "500px 0px 500px 0px" } + ); + + let rObs = new ResizeObserver( + (entries, o) => { + entries.forEach((entry) => { + reserveSpace(entry.target, entry.contentRect); + }); + } + ); + + let articles = + document.querySelectorAll("#apicontent>section"); + + articles.forEach((el) => { + iObs.observe(el); + rObs.observe(el); + }); + + requestAnimationFrame(() => { + requestAnimationFrame(() => { + articles[0].attributeStyleMap.set( + "content-visibility", + "auto" + ); + }); + }); + - + + \ No newline at end of file