import { createImmerReducer } from "utils/ReducerUtils"; import { ReduxActionTypes, ReduxAction, } from "@appsmith/constants/ReduxActionConstants"; import { WidgetProps } from "widgets/BaseWidget"; const initialState: WidgetConfigReducerState = { config: {} }; export type WidgetBlueprint = { view?: Array<{ type: string; size?: { rows: number; cols: number }; position: { top?: number; left?: number }; props: Record; }>; operations?: any; }; export interface WidgetConfigProps { rows: number; columns: number; blueprint?: WidgetBlueprint; widgetName: string; enhancements?: Record; // TODO(abhinav): SPECIFY TYPES } export interface WidgetConfig extends Partial, Omit { type: string; hideCard: boolean; displayName: string; key: string; isCanvas?: boolean; needsMeta?: boolean; } export interface WidgetConfigReducerState { config: Record; } const widgetConfigReducer = createImmerReducer(initialState, { [ReduxActionTypes.ADD_WIDGET_CONFIG]: ( state: WidgetConfigReducerState, action: ReduxAction, ) => { state.config[action.payload.type] = action.payload; }, }); export default widgetConfigReducer;