react-dyn-tabs
Version:
React dynamic tabs with full API
44 lines (43 loc) • 2.62 kB
JavaScript
exports.__esModule = true;
exports["default"] = void 0;
var _react = _interopRequireWildcard(require("react"));
var _context = require("../context.js");
var _panelPropsManager = _interopRequireDefault(require("./panelPropsManager.js"));
var _propTypes = _interopRequireDefault(require("prop-types"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
function _readOnlyError(r) { throw new TypeError('"' + r + '" is read-only'); }
var PanelComponent = function PanelComponent(props) {
_react["default"].useContext(_context.ForceUpdateContext);
var id = props.id,
selectedTabID = props.selectedTabID,
api = _react["default"].useContext(_context.ApiContext),
isSelected = id === selectedTabID,
panelProps = (0, _panelPropsManager["default"])({
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["default"].createElement("div", panelProps, hasBeenSelected ? PanelComponent ? /*#__PURE__*/_react["default"].createElement(PanelComponent, {
id: id,
isSelected: isSelected,
api: api.userProxy
}) : null : null);
};
var Panel = /*#__PURE__*/(0, _react.memo)(PanelComponent, function (oldProps, newProps) {
var id = oldProps.id,
oldActiveId = oldProps.selectedTabID,
newActiveId = newProps.selectedTabID;
return oldActiveId === newActiveId || id !== oldActiveId && id !== newActiveId;
});
var _default = exports["default"] = Panel;
;