"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useTogglePanel = void 0; var _react = require("react"); var _product = require("../../common/product"); var _storage = require("./storage"); var _reducer = require("./reducer"); var _types = require("./types"); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ const useTogglePanel = ({ productTypes }) => { const { getAllFinishedStepsFromStorage, getActiveProductsFromStorage, toggleActiveProductsInStorage, addFinishedStepToStorage, removeFinishedStepFromStorage, addExpandedCardStepToStorage, removeExpandedCardStepFromStorage, getAllExpandedCardStepsFromStorage } = _storage.getStartedStorage; const finishedStepsInitialStates = (0, _react.useMemo)(() => (0, _reducer.getFinishedStepsInitialStates)({ finishedSteps: getAllFinishedStepsFromStorage() }), [getAllFinishedStepsFromStorage]); const activeProductsInitialStates = (0, _react.useMemo)(() => { var _Set; const activeProductsFromStorage = (0, _reducer.getActiveProductsInitialStates)({ activeProducts: getActiveProductsFromStorage() }); return activeProductsFromStorage.size > 0 ? activeProductsFromStorage : (_Set = new Set(productTypes.map(({ product_line: productLine }) => _product.ProductLine[productLine]))) !== null && _Set !== void 0 ? _Set : new Set([_product.ProductLine.security, _product.ProductLine.endpoint, _product.ProductLine.cloud]); }, [getActiveProductsFromStorage, productTypes]); const { activeSections: activeSectionsInitialStates, totalActiveSteps: totalActiveStepsInitialStates, totalStepsLeft: totalStepsLeftInitialStates } = (0, _react.useMemo)(() => (0, _reducer.getActiveSectionsInitialStates)({ activeProducts: activeProductsInitialStates, finishedSteps: finishedStepsInitialStates }), [activeProductsInitialStates, finishedStepsInitialStates]); const expandedCardsInitialStates = (0, _react.useMemo)(() => getAllExpandedCardStepsFromStorage(), [getAllExpandedCardStepsFromStorage]); const [state, dispatch] = (0, _react.useReducer)(_reducer.reducer, { activeProducts: activeProductsInitialStates, activeSections: activeSectionsInitialStates, expandedCardSteps: expandedCardsInitialStates, finishedSteps: finishedStepsInitialStates, totalActiveSteps: totalActiveStepsInitialStates, totalStepsLeft: totalStepsLeftInitialStates }); const onStepClicked = (0, _react.useCallback)(({ stepId, cardId, sectionId, isExpanded }) => { dispatch({ type: _types.GetStartedPageActions.ToggleExpandedCardStep, payload: { stepId, cardId, isStepExpanded: isExpanded } }); if (isExpanded) { dispatch({ type: _types.GetStartedPageActions.AddFinishedStep, payload: { stepId, cardId, sectionId } }); addFinishedStepToStorage(cardId, stepId); addExpandedCardStepToStorage(cardId, stepId); } else { removeExpandedCardStepFromStorage(cardId, stepId); } }, [addExpandedCardStepToStorage, addFinishedStepToStorage, removeExpandedCardStepFromStorage]); const onCardClicked = (0, _react.useCallback)(({ cardId, isExpanded }) => { dispatch({ type: _types.GetStartedPageActions.ToggleExpandedCardStep, payload: { cardId, isCardExpanded: isExpanded } }); if (isExpanded) { addExpandedCardStepToStorage(cardId); } else { removeExpandedCardStepFromStorage(cardId); } }, [addExpandedCardStepToStorage, removeExpandedCardStepFromStorage]); const onStepButtonClicked = (0, _react.useCallback)(({ stepId, cardId, sectionId, undo }) => { dispatch({ type: undo ? _types.GetStartedPageActions.RemoveFinishedStep : _types.GetStartedPageActions.AddFinishedStep, payload: { stepId, cardId, sectionId } }); if (undo) { removeFinishedStepFromStorage(cardId, stepId); } else { addFinishedStepToStorage(cardId, stepId); } }, [addFinishedStepToStorage, removeFinishedStepFromStorage]); const onProductSwitchChanged = (0, _react.useCallback)(section => { dispatch({ type: _types.GetStartedPageActions.ToggleProduct, payload: { section: section.id } }); toggleActiveProductsInStorage(section.id); }, [toggleActiveProductsInStorage]); return { state, onCardClicked, onStepClicked, onStepButtonClicked, onProductSwitchChanged }; }; exports.useTogglePanel = useTogglePanel;