platina-core
Version:
UI Kit of SberMarketing
26 lines (25 loc) • 983 B
JavaScript
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;
};
}