// https://play.vuejs.org/#eNqNVE1v2kAQ/SujvUAkgg/tKTKoXzkQKSFK0p72YuwBnNi7K++uA0X8hN4r5dRjD/0VIf+rs2vsGIJQDgh23pu3854Hr9hnpfqlRXbGQh0XqTKg0Vg15CLNlSwMrACnU4zNbSwV9kAK/+NbqpXUdH6MTDw/94ztoQcFTmEN00Lm0CHtDhdcBAFcU2HzJMTzX7gcXY5BOyE4hURqutGVSzCYqywyyEUshTYgi3SWiiiDgVPtdm6iXKPunNR46/qRUNZsebv4HlJj1f2Dtr8K9kC/sKLbPYHBEFZcAJCBCxRbsobvP65Gdy+/GxNmScHBxCbSQuLDkWVEdyiZ4eaX2Dw5jda0bekdwA/bL6PMutlq/1XBkdc04rahW6M9eKv2Hh33adIwUhGxJVTF4OpUJPs/I22i8vkflC9/MJ6LZRNGWXFJ0OntrshehvuiAicSTJQsq2nCoNpC2j861NtAJ4BxvQph6p9neZrLBLMBZ7U5ziAYQjgp6Gsv7moF3nTuMw4qHOs90OX6XhXCiTVGCvgUZ2n8QG3OOmdDH7eXSMUsDCoWdYRBY5r1mKG4xDSd9e+1FPQf9SlyFstcpRkWY2VSenicndWPnrMoy+Tjha+ZwmKvrsdzjB8O1O/1wtU4uy5QY1EiZw1momKGZM/B57dXuKDfDUg52IzYR8Ab1DKzbsaK9sWKhMZu8fy0I/+moRzu9PnCoNC1KTeo31XP54xeJl+PWH8d90P/o++jpWLr/54urhw=
<script setup>
import { effectScope, onScopeDispose, watchEffect, watch, ref } from 'vue'

// Proměnné MIMO scope - dostupné v template
const original = ref('Ramses')
const watchEffectInput = ref()
const watchInput = ref()

const scope = effectScope()

scope.run(() => {
  // Jen effects UVNITŘ scope - ty se budou disposovat společně
  watchEffect(() => {
    watchEffectInput.value = original.value
  })
  watch(original, () => {
    watchInput.value = original.value
  })
})

const stop = () => {
  scope.stop() // zastaví všechny effects v scope
}

onScopeDispose(() => {
  // scope.stop() // nebo tady
})
</script>

<template>
  Original <input v-model="original" /> <br />
  watchEffectInput <input v-model="watchEffectInput" /> <br />
  watchInput <input v-model="watchInput" /> <br />

  <br />
  <button @click="stop">stop watching</button>
</template>