mirror of
https://seed.radicle.dev/rad:z4V1sjrXqjvFdnCUbxPFqd5p4DtH5.git
synced 2026-11-11 20:00:46 +08:00
- This commit doesn't change the way syntax highlighting is done. - But due to changes in `radicle-httpd` we can highlight the entire files of a changeset, and then replace the plain text lines with highlighted ones. - Also highlights only the files currently visible of a changeset. Signed-off-by: Sebastian Martinez <me@sebastinez.dev>
42 lines
903 B
Svelte
42 lines
903 B
Svelte
<script lang="ts" context="module">
|
|
export function intersection(
|
|
node: HTMLElement,
|
|
observer: IntersectionObserver | undefined,
|
|
) {
|
|
if (!observer) return;
|
|
observer.observe(node);
|
|
return {
|
|
destroy() {
|
|
observer.unobserve(node);
|
|
},
|
|
};
|
|
}
|
|
</script>
|
|
|
|
<script lang="ts">
|
|
import { onDestroy } from "svelte";
|
|
|
|
let observer: IntersectionObserver | undefined = undefined;
|
|
let filesVisibility = new Set<string>();
|
|
|
|
if ("IntersectionObserver" in window) {
|
|
observer = new IntersectionObserver(entries => {
|
|
entries.forEach(entry => {
|
|
if (entry.isIntersecting) {
|
|
filesVisibility = filesVisibility.add(
|
|
entry.target.id.replace("observer:", ""),
|
|
);
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
onDestroy(() => {
|
|
if (observer) {
|
|
observer.disconnect();
|
|
}
|
|
});
|
|
</script>
|
|
|
|
<slot {observer} {filesVisibility} />
|