/* IMPORT */
import {$, render} from 'voby';
import type {Observable} from 'voby';
/* HELPERS */
const EMOJIS = ['👌', '☝️', '✌️', '🤘', '🖖', '🖐️'];
const PLUS = '➕';
const MINUS = '➖';
/* MAIN */
const Button = ({ onClick, children }: { onClick: () => void, children: JSX.Children }): JSX.Element => {
return (
);
};
const Container = ({ children }: { children: JSX.Children }): JSX.Element => {
return (
{children}
);
};
const HStack = ({ children }: { children: JSX.Children }): JSX.Element => {
return (
{children}
);
};
const VStack = ({ children }: { children: JSX.Children }): JSX.Element => {
return (
{children}
);
};
const Emojis = ({ value }: { value: Observable }): JSX.Element => {
const value2sign = ( value: number ) => Math.sign ( value ) < 0 ? MINUS : '';
const value2chunks = ( value: number ) => ( value <= 5 ) ? [value] : [...value2chunks ( value - 5), 5];
const chunk2emoji = ( chunk: number ) => EMOJIS[chunk];
const sign = () => value2sign ( value () );
const emojis = () => value2chunks ( Math.abs ( value () ) ).map ( chunk2emoji ).join ( '' );
return (
{sign}{emojis}
);
};
const EmojiCounter = (): JSX.Element => {
const value = $(2);
const increment = () => value ( prev => prev + 1 );
const decrement = () => value ( prev => prev - 1 );
return (
);
};
/* RENDER */
render ( , document.getElementById ( 'app' ) );