2018-01-05 16:31:13 -08:00
|
|
|
import _ from 'lodash';
|
|
|
|
import invariant from 'invariant';
|
|
|
|
|
|
|
|
export function isPanesAction({ type } = {}, panesMap) {
|
|
|
|
return !!panesMap[type];
|
|
|
|
}
|
|
|
|
|
|
|
|
export function getDividerLeft(numOfPanes, index) {
|
|
|
|
let dividerLeft = null;
|
|
|
|
if (numOfPanes > 1 && numOfPanes !== index + 1) {
|
|
|
|
dividerLeft = (100 / numOfPanes) * (index + 1);
|
|
|
|
}
|
|
|
|
return dividerLeft;
|
|
|
|
}
|
|
|
|
|
|
|
|
export function checkForTypeKeys(panesMap) {
|
|
|
|
_.forEach(panesMap, (_, actionType) => {
|
|
|
|
invariant(
|
|
|
|
actionType !== 'undefined',
|
|
|
|
`action type for ${panesMap[actionType]} is undefined`
|
|
|
|
);
|
|
|
|
});
|
|
|
|
return panesMap;
|
|
|
|
}
|
|
|
|
|
|
|
|
export const getPane = (panesByName, panes, index) => _.get(
|
|
|
|
panesByName,
|
|
|
|
getPaneName(panes, index),
|
|
|
|
null
|
|
|
|
);
|
|
|
|
|
|
|
|
export const getPaneName = (panes, index) => _.get(
|
|
|
|
panes,
|
|
|
|
[index, 'name'],
|
|
|
|
''
|
|
|
|
);
|
|
|
|
|
|
|
|
export const getRightBound = (pane, buffer) =>
|
|
|
|
((pane && !pane.isHidden && pane.dividerLeft) || 100) - buffer;
|
|
|
|
export const getLeftBound = (pane, buffer) =>
|
|
|
|
((pane && !pane.isHidden && pane.dividerLeft) || 0) + buffer;
|
|
|
|
|
|
|
|
export function normalizePanesMapCreator(createPanesMap) {
|
|
|
|
invariant(
|
|
|
|
_.isFunction(createPanesMap),
|
|
|
|
'createPanesMap should be a function but got %s',
|
|
|
|
createPanesMap
|
|
|
|
);
|
|
|
|
const panesMap = createPanesMap({}, { type: '@@panes/test' });
|
|
|
|
if (typeof panesMap === 'function') {
|
|
|
|
return normalizePanesMapCreator(panesMap);
|
|
|
|
}
|
|
|
|
invariant(
|
|
|
|
!panesMap,
|
|
|
|
'panesMap test should return undefined or null on test action but got %s',
|
|
|
|
panesMap
|
|
|
|
);
|
|
|
|
return createPanesMap;
|
|
|
|
}
|
|
|
|
|