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