"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.DockviewDefaultTab = void 0;
var solid_js_1 = require("solid-js");
var svg_1 = require("../svg");
function useTitle(api) {
    var _a = (0, solid_js_1.createSignal)(api.title), title = _a[0], setTitle = _a[1];
    var disp = api.onDidTitleChange(function (event) { return setTitle(event.title); });
    (0, solid_js_1.onCleanup)(function () { return disp.dispose(); });
    return title;
}
var DockviewDefaultTab = function (props) {
    var title = useTitle(props.api);
    var isMiddleMouse = false;
    var onClose = function (e) {
        e.preventDefault();
        if (props.closeActionOverride) {
            props.closeActionOverride();
        }
        else {
            props.api.close();
        }
    };
    var onBtnPointerDown = function (e) { return e.preventDefault(); };
    var onPointerDown = function (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);
        }
    };
    var onPointerLeave = function (e) {
        var _a;
        isMiddleMouse = false;
        if (typeof props.onPointerLeave === 'function') {
            (_a = props.onPointerLeave) === null || _a === void 0 ? void 0 : _a.call(props, e);
        }
    };
    var onPointerUp = function (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}>
                    <svg_1.CloseButton />
                </div>)}
        </div>);
};
exports.DockviewDefaultTab = DockviewDefaultTab;
