import React, { useLayoutEffect, useRef, useState } from 'react'; import { bindAll } from 'bind-event-listener'; import type { ButtonProps } from '../../src'; export default function Example({ Component, }: { Component: ButtonProps['component']; }) { const [isSelected, setIsSelected] = useState(false); const [isDisabled, setIsDisabled] = useState(false); const ref = useRef(null); useLayoutEffect(() => { function toggleSelect() { setIsSelected((value) => !value); } function toggleDisabled() { setIsDisabled((value) => !value); } const el: HTMLElement | null = ref.current; if (!el) { throw new Error('Could not find button ref'); } return bindAll(el, [ { type: 'toggle-select', listener: toggleSelect }, { type: 'toggle-disabled', listener: toggleDisabled }, ]); }, []); return ( // @ts-ignore Hello world ); }