UNPKG

platina-core

Version:

UI Kit of SberMarketing

26 lines (25 loc) 983 B
import { createEventDispatcher } from 'svelte'; const defaultDispatcherOptions = { bubbles: true, cancelable: false, composed: false }; export function createNativeEventDispatcher(getElement, defaultOptions = defaultDispatcherOptions) { const svelteDispatch = createEventDispatcher(); const { bubbles, cancelable, composed } = defaultOptions; return function dispatch(type, detail, options) { const svelteResult = svelteDispatch(type, detail); const element = getElement(); if (!element) { throw Error('Ошибка! Элемент не найден'); } const domEvent = new CustomEvent(String(type), { detail, bubbles: options?.bubbles ?? bubbles, cancelable: options?.cancelable ?? cancelable, composed: options?.composed ?? composed }); const domResult = element.dispatchEvent(domEvent); return svelteResult && domResult; }; }