refUtils.ts 845 B

12345678910111213141516171819202122232425262728293031
  1. import type { UnwrapRef } from 'vue'
  2. import { ref, isRef } from 'vue'
  3. export default class RefUtils {
  4. // Private constructor to prevent instantiation
  5. private constructor() {
  6. // This utility class is not meant to be instantiated
  7. }
  8. /**
  9. * Convertit la valeur passée en référence.
  10. * S'il s'agit déjà d'une ref, selon que `maintainReactivity` est vrai ou faux, on conserve la référence existante
  11. * ou bien on la recréé pour briser la réactivité.
  12. *
  13. * @param value
  14. * @param maintainReactivity
  15. */
  16. static castToRef<T>(
  17. value: T | Ref<T>,
  18. maintainReactivity: boolean = true,
  19. ): Ref<T> | Ref<UnwrapRef<T>> {
  20. if (isRef(value)) {
  21. if (maintainReactivity) {
  22. return value
  23. } else {
  24. return ref(value.value as T)
  25. }
  26. } else {
  27. return ref(value as T)
  28. }
  29. }
  30. }