1import { __ as block } from 'bs-platform/lib/es6/block';
2import { talkbackPlaceholder } from './Wonka_helpers.bs';
3
4import {
5 talkbackT,
6 signalT
7} from '../Wonka_types.gen';
8
9type talkbackCb = (tb: talkbackT) => void;
10
11export const pull = (0 as any as talkbackT);
12export const close = (1 as any as talkbackT);
13
14export const start = <a>(tb: talkbackCb): signalT<a> => block(0, [tb]) as any;
15export const push = <a>(x: a): signalT<a> => block(1, [x]) as any;
16export const end = <a>(): signalT<a> => 0 as any;
17
18export const isStart = <a>(s: signalT<a>) =>
19 typeof s !== 'number' && (s as any).tag === 0;
20export const isPush = <a>(s: signalT<a>) =>
21 typeof s !== 'number' && (s as any).tag === 1;
22export const isEnd = <a>(s: signalT<a>) =>
23 typeof s === 'number' && (s as any) === 0;
24
25export const unboxPush = <a>(s: signalT<a>): a | null =>
26 isPush(s) ? (s as any)[0] : null;
27export const unboxStart = <a>(s: signalT<a>): talkbackCb =>
28 isStart(s) ? (s as any)[0] : (talkbackPlaceholder as any);