Svelte - Как вызывать функции в дочерних компонентах

Svelte настолько похож на Vanella JavaScript, что я полностью упустил простой способ использовать функции в дочерних компонентах.

Мне часто хотелось вызвать функцию, чтобы показывать всплывающие окна, вызывать API-интерфейсы и вычислять значения из дочернего компонента. Вначале я делал это, наблюдая за переменной в компоненте с помощью $: и вызывая внутреннюю функцию при изменении. Например, когда переменная «show», переданная в качестве опоры, изменилась с false на true, я бы отобразил модальное окно. Мне никогда не нравилось это делать, но это работало.
Использование атрибута «bind:» в компоненте Svelte, кажется, присваивает переменной что-нибудь. Итак, в родительском компоненте просто привяжите переменную к экспортируемой функции или объекту в дочернем компоненте.

В КОМПОНЕНТЕ ДЕТСКИЙ СОЗДАЙТЕ ОБЪЕКТ

<script>
export const b5modal = {
    toggle() {
      show = !show
    },
    show() {
      show = true
      console.log("sob--: show -> show", show)
    },
    hide() {
      show = false
      console.log("sob--: hide -> show", show)
    },
    showHide(isShow) {
      isShow ? (show = true) : (show = false)
      console.log("sob--: showHide -> isShow", isShow)
    },
  }
</script>

В РОДИТЕЛЬСКОМ КОМПОНЕНТЕ СВЯЗАТЬ ДЕТСКИЙ ОБЪЕКТ С ЛОКАЛЬНОЙ ПЕРЕМЕННОЙ

<script>
  import B5modal from "../components/b5ui/B5modal.svelte"
  let modal
</script
<B5modal bind:show={showModal} bind:b5modal={modal} size="lg">
  <div slot="header">
    <h5>{edt.heading}</h5>
    Size = lg
  </div>
  <div>{edt.body}</div>
</B5modal>

ПОЗВОНИТЬ ДЕТСКОМУ ФУНКЦИЮ ОТ РОДИТЕЛЯ

<button on:click={() => modal.showHide(true)} class="btn btn-primary mb-2">Show Modal</button>

А теперь сделайте свои компоненты намного умнее, добавив к ним библиотеки функций!