UNPKG

dockview

Version:

Zero dependency layout manager supporting tabs, grids and splitviews with ReactJS support

77 lines 3.39 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.DockviewComponents = void 0; var React = __importStar(require("react")); var ReactDOM = __importStar(require("react-dom")); var react_1 = require("../react"); var Tab = function (props) { return React.createElement(React.Fragment, null, props.children); }; var Content = function (props) { return React.createElement(React.Fragment, null, props.children); }; var Actions = function (props) { return React.createElement(React.Fragment, null, props.children); }; function isValidComponent(element) { return [Content, Actions, Tab].find(function (comp) { return element.type === comp; }); } var Panel = function (props) { var context = React.useContext(react_1.ReactPartContext); var sections = React.useMemo(function () { var _a; var childs = ((_a = React.Children.map(props.children, function (_) { return _; })) === null || _a === void 0 ? void 0 : _a.filter(react_1.isReactElement)) || []; var isInvalid = !!childs.find(function (_) { return !isValidComponent(_); }); if (isInvalid) { throw new Error('Children of DockviewComponents.Panel must be one of the following: DockviewComponents.Content, DockviewComponents.Actions, DockviewComponents.Tab'); } var body = childs.find(function (_) { return _.type === Content; }); var actions = childs.find(function (_) { return _.type === Actions; }); var tab = childs.find(function (_) { return _.type === Tab; }); return { body: body, actions: actions, tab: tab }; }, [props.children]); React.useEffect(function () { /** * hide or show the default tab behavior based on whether we want to override * with our own React tab. */ if (sections.tab) { context.tabPortalElement.hide(); } else { context.tabPortalElement.show(); } }, [sections.tab]); return (React.createElement(React.Fragment, null, sections.actions && ReactDOM.createPortal(sections.actions, context.actionsPortalElement), sections.tab && ReactDOM.createPortal(sections.tab, context.tabPortalElement.element), sections.body || props.children)); }; exports.DockviewComponents = { Tab: Tab, Content: Content, Actions: Actions, Panel: Panel, }; //# sourceMappingURL=components.js.map