@difizen/mana-react
Version:
86 lines (75 loc) • 2.13 kB
text/typescript
import { ResizeHandleVertical, ResizeHandleHorizontal } from '../resize/index';
const flexDirectionMap: Record<
string,
{
direction: any;
size: 'width' | 'height';
domSize: 'clientWidth' | 'clientHeight';
minSize: 'minWidth' | 'minHeight';
maxSize: 'maxWidth' | 'maxHeight';
}
> = {
'left-to-right': {
direction: 'row',
size: 'width',
domSize: 'clientHeight',
minSize: 'minWidth',
maxSize: 'maxWidth',
},
'right-to-left': {
direction: 'row-reverse',
size: 'width',
domSize: 'clientHeight',
minSize: 'minWidth',
maxSize: 'maxWidth',
},
'top-to-bottom': {
direction: 'column',
size: 'height',
domSize: 'clientWidth',
minSize: 'minHeight',
maxSize: 'maxHeight',
},
'bottom-to-top': {
direction: 'column-reverse',
size: 'height',
domSize: 'clientWidth',
minSize: 'minHeight',
maxSize: 'maxHeight',
},
};
export namespace Layout {
export type direction =
| 'left-to-right'
| 'right-to-left'
| 'top-to-bottom'
| 'bottom-to-top';
export type alignment = 'horizontal' | 'vertical';
export function getFlexDirection(direction: Layout.direction) {
return flexDirectionMap[direction].direction;
}
export function getSizeProperty(direction: Layout.direction) {
return flexDirectionMap[direction].size;
}
export function getDomSizeProperty(direction: Layout.direction) {
return flexDirectionMap[direction].domSize;
}
export function getMinSizeProperty(direction: Layout.direction) {
return flexDirectionMap[direction].minSize;
}
export function getMaxSizeProperty(direction: Layout.direction) {
return flexDirectionMap[direction].maxSize;
}
export function getResizeHandle(direction: Layout.direction) {
if (direction === 'bottom-to-top' || direction === 'top-to-bottom') {
return ResizeHandleVertical;
}
return ResizeHandleHorizontal;
}
export function getTabbarDirection(direction: Layout.direction) {
if (direction === 'bottom-to-top' || direction === 'top-to-bottom') {
return 'row';
}
return 'column';
}
}