@ozen-ui/kit
Version:
React component library
88 lines (87 loc) • 4.11 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useStepperVerticalCreateStep = void 0;
var tslib_1 = require("tslib");
var react_1 = require("react");
var useControlled_1 = require("../../../../hooks/useControlled");
var useStoredValue_1 = require("../../../../hooks/useStoredValue");
var useUniqueId_1 = require("../../../../hooks/useUniqueId");
var StepperVerticalContext_1 = require("../../StepperVerticalContext");
var useStepperVerticalCreateStep = function (params, root) {
var id = (0, useUniqueId_1.useUniqueId)();
var _a = tslib_1.__read((0, useControlled_1.useControlled)({
value: params.openSubsteps,
defaultValue: false,
name: 'StepperVerticalStep',
state: 'openSubsteps',
}), 2), isSubstepsOpenState = _a[0], setIsSubstepsOpenState = _a[1];
var _b = tslib_1.__read((0, useControlled_1.useControlled)({
value: params.openSubcontent,
defaultValue: false,
name: 'StepperVerticalStep',
state: 'openSubcontent',
}), 2), isSubcontentOpenState = _b[0], setIsSubcontentOpenState = _b[1];
var isSubStepsOpen = !!isSubstepsOpenState;
var isSubcontentOpen = !!isSubcontentOpenState;
var setIsSubStepsOpen = (0, react_1.useCallback)(function (isOpen) {
var _a;
setIsSubstepsOpenState(isOpen);
(_a = params.onOpenSubstepsChange) === null || _a === void 0 ? void 0 : _a.call(params, isOpen);
}, [setIsSubstepsOpenState, params.onOpenSubstepsChange]);
var toggleSubsteps = (0, react_1.useCallback)(function () {
setIsSubStepsOpen(!isSubStepsOpen);
}, [setIsSubStepsOpen, isSubStepsOpen]);
var setIsSubcontentOpen = (0, react_1.useCallback)(function (isOpen) {
var _a;
setIsSubcontentOpenState(isOpen);
(_a = params.onOpenSubcontentChange) === null || _a === void 0 ? void 0 : _a.call(params, isOpen);
}, [setIsSubcontentOpenState, params.onOpenSubcontentChange]);
var toggleSubcontent = (0, react_1.useCallback)(function () {
setIsSubcontentOpen(!isSubcontentOpen);
}, [setIsSubcontentOpen, isSubcontentOpen]);
var stepperVerticalContext = (0, StepperVerticalContext_1.useStepperVerticalContext)();
var ref = (0, react_1.useRef)(null);
var step = (0, useStoredValue_1.useStoredValue)(function () { return ({
id: id,
root: root !== null && root !== void 0 ? root : null,
ref: ref,
isSubStepsOpen: isSubStepsOpen,
setIsSubStepsOpen: setIsSubStepsOpen,
unregisterSubstep: function () { },
registerSubstep: function () { },
substeps: {},
isSubcontentOpen: isSubcontentOpen,
setIsSubcontentOpen: setIsSubcontentOpen,
toggleSubcontent: toggleSubcontent,
toggleSubsteps: toggleSubsteps,
}); });
var registerSubstep = (0, react_1.useCallback)(function (substep) {
step.current.substeps[substep.id] = substep;
}, []);
var unregisterSubstep = (0, react_1.useCallback)(function (substep) {
delete step.current.substeps[substep.id];
}, []);
step.current.isSubStepsOpen = isSubStepsOpen;
step.current.isSubcontentOpen = isSubcontentOpen;
step.current.setIsSubStepsOpen = setIsSubStepsOpen;
step.current.setIsSubcontentOpen = setIsSubcontentOpen;
step.current.toggleSubcontent = toggleSubcontent;
step.current.toggleSubsteps = toggleSubsteps;
step.current.root = root !== null && root !== void 0 ? root : null;
step.current.registerSubstep = registerSubstep;
step.current.unregisterSubstep = unregisterSubstep;
(0, react_1.useEffect)(function () {
stepperVerticalContext.stepsControl.initializeStep(step.current);
if (root) {
root.registerSubstep(step.current);
}
return function () {
stepperVerticalContext.stepsControl.deleteStep(step.current);
if (root) {
root.unregisterSubstep(step.current);
}
};
}, []);
return step.current;
};
exports.useStepperVerticalCreateStep = useStepperVerticalCreateStep;