All files / src/components/SplitPane Pane.tsx

0% Statements 0/11
0% Branches 0/6
0% Functions 0/1
0% Lines 0/11

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47                                                                                             
// Copyright 2015 tomkp
// Copyright 2022 YANDEX LLC
 
import React from 'react';
 
import type {SplitLayoutType} from './types';
 
type Props = {
    className?: string;
    children?: React.ReactNode;
    size?: number | string;
    split?: SplitLayoutType;
    style?: React.CSSProperties;
    eleRef?: (node: HTMLDivElement) => void;
};
 
export class Pane extends React.PureComponent<Props> {
    render() {
        const {children, className, split, style: styleProps, size, eleRef} = this.props;
        const classes = ['Pane', split, className];
 
        let style: React.CSSProperties = {
            flex: 1,
            position: 'relative',
            outline: 'none',
        };
 
        if (size !== undefined) {
            if (split === 'vertical') {
                style.width = size;
            } else {
                style.height = size;
                style.display = 'flex';
            }
            style.flex = 'none';
        }
 
        style = Object.assign({}, style, styleProps || {});
 
        return (
            <div ref={eleRef} className={classes.join(' ')} style={style}>
                {children}
            </div>
        );
    }
}