@netdata/charts
Version:
Netdata frontend SDK and chart utilities
65 lines (64 loc) • 3.65 kB
JavaScript
;
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _react = _interopRequireWildcard(require("react"));
var _styledComponents = _interopRequireDefault(require("styled-components"));
var _netdataUi = require("@netdata/netdata-ui");
var _provider = require("../provider");
var _jsxRuntime = require("react/jsx-runtime");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
var ResizableBar = (0, _styledComponents["default"])(_netdataUi.Flex).attrs({
padding: [3, 0],
height: 2
}).withConfig({
displayName: "separator__ResizableBar",
componentId: "sc-1nvt1gy-0"
})(["cursor:row-resize;background:transparent;position:relative;&::before{content:\"\";position:absolute;top:50%;left:50%;right:0;height:2px;width:30%;background:", ";transform:translate(-50%,-50%);transition:height 0.2s ease;}&:hover::before{height:4px;background:", ";}"], function (_ref) {
var theme = _ref.theme;
return (0, _netdataUi.getColor)("borderSecondary")({
theme: theme
});
}, function (_ref2) {
var theme = _ref2.theme;
return (0, _netdataUi.getColor)("primary")({
theme: theme
});
});
var Separator = function Separator() {
var chart = (0, _provider.useChart)();
var expandedHeight = (0, _provider.useAttributeValue)("expandedHeight");
var currentHeight = parseInt(chart.getAttribute("height") || "400");
var startYRef = (0, _react.useRef)(null);
var handleMouseDown = function handleMouseDown(e) {
e.preventDefault();
startYRef.current = e.clientY;
var handleMouseMove = function handleMouseMove(e) {
var delta = e.clientY - startYRef.current;
var minDrawerHeight = 150;
var maxDrawerHeight = 600;
var minChartHeight = 200;
var newDrawerHeight = Math.max(minDrawerHeight, Math.min(maxDrawerHeight, expandedHeight - delta));
var newChartHeight = Math.max(minChartHeight, currentHeight + delta);
chart.updateAttribute("expandedHeight", newDrawerHeight);
chart.updateAttribute("height", newChartHeight);
chart.trigger("resize");
};
var _handleMouseUp = function handleMouseUp() {
document.removeEventListener("mousemove", handleMouseMove);
document.removeEventListener("mouseup", _handleMouseUp);
document.body.style.cursor = "";
startYRef.current = null;
};
document.addEventListener("mousemove", handleMouseMove);
document.addEventListener("mouseup", _handleMouseUp);
document.body.style.cursor = "row-resize";
};
return /*#__PURE__*/(0, _jsxRuntime.jsx)(ResizableBar, {
onMouseDown: handleMouseDown
});
};
var _default = exports["default"] = Separator;