
META-INF.resources.js.components.ModelBuilder.ModelBuilderContext.objectFolderContext.tsx Maven / Gradle / Ivy
The newest version!
/**
* SPDX-FileCopyrightText: (c) 2023 Liferay, Inc. https://liferay.com
* SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
*/
import React, {createContext, useContext, useReducer} from 'react';
import {Elements} from 'react-flow-renderer';
import {
LeftSidebarItem,
ObjectRelationshipEdgeData,
RightSidebarType,
TAction,
TState,
} from '../types';
import {getObjectFolderName} from '../utils';
import {ObjectFolderReducer} from './objectFolderReducer';
interface ObjectFolderContextProps extends Array {
0: typeof initialState;
1: React.Dispatch>>;
}
interface ObjectFolderContextProviderProps
extends React.HTMLAttributes {
value: {};
}
const ObjectFolderContext = createContext({} as ObjectFolderContextProps);
const initialState = {
deletedObjectDefinition: {} as DeletedObjectDefinition,
elements: [] as Elements<
ObjectDefinitionNodeData | ObjectRelationshipEdgeData[]
>,
isLoadingObjectFolder: false,
leftSidebarItems: [] as LeftSidebarItem[],
modelBuilderModals: {} as ModelBuilderModals,
nodeHandleConnectable: false,
objectFolderName: getObjectFolderName(),
objectFolders: [] as ObjectFolder[],
rightSidebarType: 'empty' as RightSidebarType,
selectedObjectFolder: {},
showChangesSaved: false,
showSidebars: true,
} as TState;
export function ObjectFolderContextProvider({
children,
value,
}: ObjectFolderContextProviderProps) {
const [state, dispatch] = useReducer>(
ObjectFolderReducer,
{
...initialState,
...value,
}
);
return (
{children}
);
}
export function useObjectFolderContext() {
return useContext(ObjectFolderContext);
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy