hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
</body> | </body> | ||||
</html> | </html> |
hideOnClick: false | hideOnClick: false | ||||
}) | }) | ||||
</script> | </script> | ||||
<script type="module"> | |||||
import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js' | |||||
const computedStyle = getComputedStyle(document.documentElement) | |||||
const markBackground = computedStyle.getPropertyValue('--mark-background') | |||||
const observer = new IntersectionObserver(elements => { | |||||
for (const element of elements) { | |||||
if (element.intersectionRatio < 1) return | |||||
const markElement = element.target | |||||
if (markElement.dataset.annotated) return | |||||
const annotation = annotate( | |||||
markElement, { | |||||
type: 'highlight', | |||||
multiline: true, | |||||
color: markBackground, | |||||
animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches | |||||
} | |||||
) | |||||
annotation.show() | |||||
// Avoid the rough notation to be applied multiple times. | |||||
markElement.dataset.annotated = true | |||||
} | |||||
}, {threshold: 1.0}) | |||||
for (const markElement of document.querySelectorAll('mark')) { | |||||
markElement.style.backgroundColor = 'inherit' | |||||
observer.observe(markElement) | |||||
} | |||||
</script> | |||||
{% endblock %} | {% endblock %} |