All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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