build: switch from yarn to npm to manage js dependencies and move js contents to root
yarn v1 is being deprecated and starts to have some issues Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
35
src/components/Utils/ObserverElement.vue
Normal file
35
src/components/Utils/ObserverElement.vue
Normal file
@@ -0,0 +1,35 @@
|
||||
<template>
|
||||
<div class="observer" ref="observed" />
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import "intersection-observer";
|
||||
import { onMounted, onUnmounted, ref } from "vue";
|
||||
|
||||
const props = withDefaults(
|
||||
defineProps<{
|
||||
options?: Record<string, any>;
|
||||
}>(),
|
||||
{ options: () => ({}) }
|
||||
);
|
||||
|
||||
const observer = ref<IntersectionObserver>();
|
||||
const observed = ref<HTMLElement>();
|
||||
const emit = defineEmits(["intersect"]);
|
||||
|
||||
onMounted(() => {
|
||||
observer.value = new IntersectionObserver(([entry]) => {
|
||||
if (entry && entry.isIntersecting) {
|
||||
emit("intersect");
|
||||
}
|
||||
}, props.options);
|
||||
|
||||
if (observed.value) {
|
||||
observer.value.observe(observed.value);
|
||||
}
|
||||
});
|
||||
|
||||
onUnmounted(() => {
|
||||
observer.value?.disconnect();
|
||||
});
|
||||
</script>
|
||||
Reference in New Issue
Block a user