@ozen-ui/kit
Version:
React component library
93 lines (92 loc) • 3.39 kB
JavaScript
;
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;