@dnd-kit-svelte/svelte
Version:
[](https://npm.im/@dnd-kit-svelte/svelte)
23 lines (22 loc) • 723 B
JavaScript
import { effect } from '@dnd-kit/state';
import { createSubscriber } from 'svelte/reactivity';
/** Trigger a re-run of Svelte effects/derivations when reading a @dnd-kit/state Signal. */
export function useSignal(signal, _sync = false) {
let previous = signal.peek();
const subscribe = createSubscriber((update) => {
return effect(() => {
const current = signal.value;
if (previous !== current) {
previous = current;
update();
}
});
});
return {
get value() {
// Make this getter reactive if read in a Svelte effect/derived
subscribe();
return signal.peek();
},
};
}