feat(Panes): Do not update state if panes are the same
This reduces the number of updates required when transitioning between challenges while preserving the state of the panes when going from two similar challengees.
This commit is contained in:
@ -166,24 +166,22 @@ export default function createPanesAspects({ createPanesMap }) {
|
||||
const panesMap = action.meta.panesMap;
|
||||
const panes = _.map(panesMap, (name, type) => ({ name, type }));
|
||||
const numOfPanes = Object.keys(panes).length;
|
||||
const panesByName = _.isEqual(state.panes, panes) && state.panesByName;
|
||||
if (_.isEqual(state.panes, panes)) {
|
||||
return state;
|
||||
}
|
||||
return {
|
||||
...state,
|
||||
panesMap,
|
||||
panes,
|
||||
panesByName: panesByName
|
||||
? panesByName
|
||||
: panes.reduce((panes, { name }, index) => {
|
||||
const dividerLeft = utils.getDividerLeft(numOfPanes, index);
|
||||
panes[name] = {
|
||||
name,
|
||||
dividerLeft,
|
||||
isHidden: false
|
||||
};
|
||||
return panes;
|
||||
},
|
||||
{}
|
||||
)
|
||||
panesByName: panes.reduce((panes, { name }, index) => {
|
||||
const dividerLeft = utils.getDividerLeft(numOfPanes, index);
|
||||
panes[name] = {
|
||||
name,
|
||||
dividerLeft,
|
||||
isHidden: false
|
||||
};
|
||||
return panes;
|
||||
}, {})
|
||||
};
|
||||
}
|
||||
if (action.meta && action.meta.isPaneAction) {
|
||||
|
Reference in New Issue
Block a user