2020-09-30 12:42:09 +00:00
|
|
|
import { createImmerReducer } from "utils/AppsmithUtils";
|
2019-02-10 13:06:05 +00:00
|
|
|
import {
|
2019-09-12 11:19:38 +00:00
|
|
|
ReduxActionTypes,
|
2019-09-24 12:36:03 +00:00
|
|
|
UpdateCanvasPayload,
|
2019-09-09 10:30:22 +00:00
|
|
|
ReduxAction,
|
2019-11-25 05:07:27 +00:00
|
|
|
} from "constants/ReduxActionConstants";
|
|
|
|
|
import { WidgetProps } from "widgets/BaseWidget";
|
2021-11-23 08:01:46 +00:00
|
|
|
import { UpdateCanvasLayoutPayload } from "actions/controlActions";
|
2021-03-09 05:30:57 +00:00
|
|
|
import { set } from "lodash";
|
2021-03-03 05:26:47 +00:00
|
|
|
import { MAIN_CONTAINER_WIDGET_ID } from "constants/WidgetConstants";
|
2019-02-10 13:06:05 +00:00
|
|
|
|
2019-09-09 10:30:22 +00:00
|
|
|
const initialState: CanvasWidgetsReduxState = {};
|
2019-08-26 12:41:21 +00:00
|
|
|
|
2021-08-25 05:00:31 +00:00
|
|
|
export type FlattenedWidgetProps<orType = never> =
|
|
|
|
|
| (WidgetProps & {
|
|
|
|
|
children?: string[];
|
|
|
|
|
})
|
|
|
|
|
| orType;
|
2019-02-10 13:06:05 +00:00
|
|
|
|
2020-09-30 12:42:09 +00:00
|
|
|
const canvasWidgetsReducer = createImmerReducer(initialState, {
|
2021-01-25 08:57:26 +00:00
|
|
|
[ReduxActionTypes.INIT_CANVAS_LAYOUT]: (
|
2019-03-21 17:42:23 +00:00
|
|
|
state: CanvasWidgetsReduxState,
|
2019-09-24 12:36:03 +00:00
|
|
|
action: ReduxAction<UpdateCanvasPayload>,
|
2019-03-21 17:42:23 +00:00
|
|
|
) => {
|
2020-09-30 12:42:09 +00:00
|
|
|
return action.payload.widgets;
|
2019-08-26 12:41:21 +00:00
|
|
|
},
|
2019-09-19 22:25:37 +00:00
|
|
|
[ReduxActionTypes.UPDATE_LAYOUT]: (
|
2019-08-26 12:41:21 +00:00
|
|
|
state: CanvasWidgetsReduxState,
|
2019-09-24 12:36:03 +00:00
|
|
|
action: ReduxAction<UpdateCanvasPayload>,
|
2019-08-26 12:41:21 +00:00
|
|
|
) => {
|
2020-09-30 12:42:09 +00:00
|
|
|
return action.payload.widgets;
|
2019-09-09 10:30:22 +00:00
|
|
|
},
|
2021-03-03 05:26:47 +00:00
|
|
|
[ReduxActionTypes.UPDATE_CANVAS_LAYOUT]: (
|
|
|
|
|
state: CanvasWidgetsReduxState,
|
2021-11-23 08:01:46 +00:00
|
|
|
action: ReduxAction<UpdateCanvasLayoutPayload>,
|
2021-03-03 05:26:47 +00:00
|
|
|
) => {
|
|
|
|
|
set(state[MAIN_CONTAINER_WIDGET_ID], "rightColumn", action.payload.width);
|
2021-03-16 05:01:37 +00:00
|
|
|
set(state[MAIN_CONTAINER_WIDGET_ID], "minHeight", action.payload.height);
|
2021-03-03 05:26:47 +00:00
|
|
|
},
|
2019-09-09 10:30:22 +00:00
|
|
|
});
|
2019-02-10 13:06:05 +00:00
|
|
|
|
|
|
|
|
export interface CanvasWidgetsReduxState {
|
2019-09-09 10:30:22 +00:00
|
|
|
[widgetId: string]: FlattenedWidgetProps;
|
2019-02-10 13:06:05 +00:00
|
|
|
}
|
|
|
|
|
|
2019-09-09 10:30:22 +00:00
|
|
|
export default canvasWidgetsReducer;
|