Some checks failed
CI / Build & test (Node 24) (push) Has been cancelled
CI / Pack & boot smoke (Node 22) (push) Has been cancelled
CI / No em/en dashes (push) Has been cancelled
CI / Build & test (Node 22) (push) Has been cancelled
Deploy site (production) / build-and-deploy (push) Successful in 20s
Remplace les 547 tirets cadratins (U+2014) et demi-cadratins (U+2013) des fichiers versionnés par la ponctuation contextuelle adaptée (point médian, deux-points, virgule, parenthèses ; tiret simple pour les plages), sur 122 fichiers (appli, vitrine, doc, tests, workflows, scripts). Ajoute le job CI « lint-dashes » (git grep -P) qui échoue si un tiret cadratin/demi-cadratin réapparaît, hors logo binaire et captures brutes du terminal (fidélité des fixtures de détection de dialogue).
23 lines
765 B
TypeScript
23 lines
765 B
TypeScript
import { ref, watch, onUnmounted, getCurrentInstance, type Ref } from 'vue';
|
|
|
|
/**
|
|
* Renvoie un miroir débouncé d'un ref source. Le ref source reste instantané (idéal pour un
|
|
* v-model d'input) ; le miroir ne se met à jour qu'après `delay` ms de stabilité : c'est lui
|
|
* que le pipeline de tri/filtre consomme, pour ne pas recalculer à chaque frappe.
|
|
*/
|
|
export function useDebouncedRef<T>(source: Ref<T>, delay = 150): Ref<T> {
|
|
const debounced = ref(source.value) as Ref<T>;
|
|
let timer: ReturnType<typeof setTimeout> | undefined;
|
|
|
|
watch(source, (v) => {
|
|
clearTimeout(timer);
|
|
timer = setTimeout(() => {
|
|
debounced.value = v;
|
|
}, delay);
|
|
});
|
|
|
|
if (getCurrentInstance()) onUnmounted(() => clearTimeout(timer));
|
|
|
|
return debounced;
|
|
}
|