UNPKG

dockview-solid

Version:

Zero dependency layout manager supporting tabs, grids and splitviews

64 lines (63 loc) 2.48 kB
"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;