import { createSignal, onCleanup } from 'solid-js';
import { CloseButton } from '../svg';
function useTitle(api) {
    const [title, setTitle] = createSignal(api.title);
    const disp = api.onDidTitleChange((event) => setTitle(event.title));
    onCleanup(() => disp.dispose());
    return title;
}
export const DockviewDefaultTab = (props) => {
    const title = useTitle(props.api);
    let isMiddleMouse = false;
    const onClose = (e) => {
        e.preventDefault();
        if (props.closeActionOverride) {
            props.closeActionOverride();
        }
        else {
            props.api.close();
        }
    };
    const onBtnPointerDown = (e) => e.preventDefault();
    const onPointerDown = (e) => {
        var _a;
        isMiddleMouse = e.button === 1;
        if (typeof props.onPointerDown === 'function') {
            props.onPointerDown(e);
        }
        if (isMiddleMouse && e.button === 1 && !props.hideClose) {
            isMiddleMouse = false;
            onClose(e);
        }
        if (typeof props.onPointerUp === 'function') {
            (_a = props.onPointerUp) === null || _a === void 0 ? void 0 : _a.call(props, e);
        }
    };
    const onPointerLeave = (e) => {
        var _a;
        isMiddleMouse = false;
        if (typeof props.onPointerLeave === 'function') {
            (_a = props.onPointerLeave) === null || _a === void 0 ? void 0 : _a.call(props, e);
        }
    };
    const onPointerUp = (e) => {
        var _a;
        if (isMiddleMouse) {
            isMiddleMouse = false;
            onClose(e);
        }
        if (typeof props.onPointerUp === 'function') {
            (_a = props.onPointerUp) === null || _a === void 0 ? void 0 : _a.call(props, e);
        }
    };
    return (<div data-testid="dockview-dv-default-tab" class="dv-default-tab" onPointerDown={onPointerDown} onPointerUp={onPointerUp} onPointerLeave={onPointerLeave}>
            <span class="dv-default-tab-content">{title()}</span>
            {!props.hideClose && props.tabLocation !== 'headerOverflow' && (<div class="dv-default-tab-action" onPointerDown={onBtnPointerDown} onClick={onClose}>
                    <CloseButton />
                </div>)}
        </div>);
};
