import { createElement, forwardRef, HTMLAttributes, RefForwardingComponent, useContext } from 'rax';
import View from 'rax-view';
import Text from 'rax-text';
import Context from './context';
import { handleMarks, isInRange, unit } from './utils';
export interface TrackProps extends HTMLAttributes {
min?: number;
max?: number;
ratio?: number[];
marks?: object;
rangeWidth?: number;
}
const Track: RefForwardingComponent = ({ min, max, ratio, marks, rangeWidth }, ref) => {
const { styles } = useContext(Context);
const markItems = [];
const labelItems = [];
handleMarks(marks).forEach((key) => {
const left = ((key - min) / (max - min)) * rangeWidth;
const isActive = isInRange((key - min) / (max - min), ratio);
markItems.push(
);
labelItems.push(
{marks[key]}
);
});
const selectedLeft = ratio.length === 2 ? ratio[0] * rangeWidth : 0;
const width = ratio.length === 2 ? Math.abs(ratio[1] - ratio[0]) * rangeWidth : ratio[0] * rangeWidth;
return (
{markItems}
{labelItems}
);
};
export default forwardRef(Track);