UNPKG

@ozen-ui/kit

Version:

React component library

93 lines (92 loc) 3.39 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useStepperVerticalStepHelper = void 0; var tslib_1 = require("tslib"); var react_1 = require("react"); var useEventBusEvents_1 = require("../../../hooks/useEventBusEvents"); var StepperVerticalContext_1 = require("../StepperVerticalContext"); var useStepperVerticalStepHelper = function (step) { var _a; var structure = (0, StepperVerticalContext_1.useStepperVerticalContext)().structure; var _b = tslib_1.__read((0, react_1.useState)(false), 2), hasPrevious = _b[0], setHasPrevious = _b[1]; var _c = tslib_1.__read((0, react_1.useState)(false), 2), hasNext = _c[0], setHasNext = _c[1]; var getStructureNode = function (forStep) { var _a; if (forStep === void 0) { forStep = step; } var node = (_a = structure.value.current.nodeById[forStep.id]) !== null && _a !== void 0 ? _a : null; return node; }; var getNodeIndex = function (node) { if (!node.root) { return structure.value.current.nodes.indexOf(node); } return node.root.substeps.indexOf(node); }; var checkHasNext = function (forStep) { if (forStep === void 0) { forStep = step; } if (forStep.isSubStepsOpen) { return true; } var node = getStructureNode(forStep); if (!node) { return false; } var nodeIndex = getNodeIndex(node); if (!node.root) { return !!structure.value.current.nodes[nodeIndex + 1]; } var sameLevelNext = node.root.substeps[nodeIndex + 1]; if (sameLevelNext) { return true; } var checkHasTopLevelNext = function (node) { if (!node.root) { return false; } var rootIndex = getNodeIndex(node.root); var nextStep = node.root.root ? node.root.root.substeps[rootIndex + 1] : structure.value.current.nodes[rootIndex + 1]; if (nextStep) { return true; } return checkHasTopLevelNext(node.root); }; var otherLevelNext = checkHasTopLevelNext(node); return otherLevelNext; }; var checkHasPrevious = function (forStep) { if (forStep === void 0) { forStep = step; } var node = getStructureNode(forStep); if (!node) { return false; } var nodeIndex = getNodeIndex(node); if (!node.root) { return !!structure.value.current.nodes[nodeIndex - 1]; } var rootHasNext = checkHasNext(node.root.step); if (rootHasNext) { return true; } if (nodeIndex === 0) { return node.root.step.isSubStepsOpen; } return true; }; var recalculate = function () { setHasPrevious(checkHasPrevious()); setHasNext(checkHasNext()); }; (0, useEventBusEvents_1.useEventBusEvents)(structure.eventBus, { update: recalculate, }); (0, react_1.useEffect)(function () { recalculate(); }, [step.isSubStepsOpen, (_a = step.root) === null || _a === void 0 ? void 0 : _a.isSubStepsOpen]); return { hasPrevious: hasPrevious, hasNext: hasNext, }; }; exports.useStepperVerticalStepHelper = useStepperVerticalStepHelper;