@vime-js/utils
Version:
Vime utilities
42 lines (35 loc) • 1.15 kB
JavaScript
import { noop, SvelteComponent } from 'svelte/internal';
import { createEventDispatcher, onDestroy } from 'svelte';
import { is_instance_of } from './unit';
export const is_svelte_component = (input) => Boolean(
input && is_instance_of(input.prototype, SvelteComponent),
);
export const is_svelte_instance = (input) => Boolean(
input && is_svelte_component(input.constructor),
);
export const try_create_svelte_dispatcher = () => {
try {
return createEventDispatcher();
} catch (e) {
return noop;
}
};
export const try_on_svelte_destroy = (cb) => {
try {
onDestroy(cb);
} catch (e) {
/** noop */
}
};
export const on_svelte_instance_update = (instance, cb) => {
if (!is_svelte_instance(instance)) return;
// eslint-disable-next-line no-param-reassign
if (!instance.$$.after_update) instance.$$.after_update = [];
instance.$$.after_update.push(cb);
};
export const on_svelte_instance_destroy = (instance, cb) => {
if (!is_svelte_instance(instance)) return;
// eslint-disable-next-line no-param-reassign
if (!instance.$$.on_destroy) instance.$$.on_destroy = [];
instance.$$.on_destroy.push(cb);
};