UNPKG

signal-chain-solid

Version:
22 lines (21 loc) 746 B
import { createSignal, onCleanup, createEffect } from 'solid-js'; import $ from 'signal-chain'; import { execute } from 'signal-chain'; export const createSolid = (listen1, ...args) => { const listener = $.chain(listen1, ...args); const [solidSignal, setSolidSignal] = createSignal(undefined, { equals: false }); const context = {}; const status = { is: 'sync' }; const cleanup = listener((value) => { setSolidSignal(() => value); }, undefined, context, status); onCleanup(() => execute(cleanup, true)); return solidSignal; }; export const listenSolid = (signal) => { const base = $.primitive.create(signal()); createEffect(() => { base.value = signal(); }); return base.listen; };