UNPKG

@ozen-ui/kit

Version:

React component library

88 lines (87 loc) 4.11 kB
"use strict"; 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;