dockview-solid
Version:
Zero dependency layout manager supporting tabs, grids and splitviews
64 lines (63 loc) • 2.48 kB
JSX
;
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;