UNPKG

react-dyn-tabs

Version:
37 lines 1.48 kB
function _readOnlyError(r) { throw new TypeError('"' + r + '" is read-only'); } import React, { memo } from 'react'; import { ApiContext, ForceUpdateContext } from '../context.js'; import panelPropsManager from './panelPropsManager.js'; import PropTypes from 'prop-types'; var PanelComponent = function PanelComponent(props) { React.useContext(ForceUpdateContext); var id = props.id, selectedTabID = props.selectedTabID, api = React.useContext(ApiContext), isSelected = id === selectedTabID, panelProps = panelPropsManager({ isSelected: isSelected, api: api, id: id }), previousSelectedTabID = api.state.selectedTabID, _api$getTab = api.getTab(id), PanelComponent = _api$getTab.panelComponent, lazy = _api$getTab.lazy; var hasBeenSelected = false; if (!lazy || isSelected || previousSelectedTabID === id || api.activedTabsHistory.tabsId.indexOf(id) >= 0) { hasBeenSelected = true; } return /*#__PURE__*/React.createElement("div", panelProps, hasBeenSelected ? PanelComponent ? /*#__PURE__*/React.createElement(PanelComponent, { id: id, isSelected: isSelected, api: api.userProxy }) : null : null); }; var Panel = /*#__PURE__*/memo(PanelComponent, function (oldProps, newProps) { var id = oldProps.id, oldActiveId = oldProps.selectedTabID, newActiveId = newProps.selectedTabID; return oldActiveId === newActiveId || id !== oldActiveId && id !== newActiveId; }); export default Panel;