import React, { CSSProperties, ReactElement } from "react";
import Icon from "../../components/Icon/Icon";
import { InfixKind } from "./SliderConstants";
import { useSliderInfix, useSliderSelection } from "./SliderContext";
import SelectionIndicator from "./SelectionIndicator";
import { IconType } from "../Icon/IconConstants";
const defaultIconProps = {
clickable: false,
iconSize: 18,
ignoreFocusStyle: true
};
export function useSliderInfixComponent(kind: InfixKind): [boolean, string[], ReactElement, CSSProperties] {
const isPostfix = kind === InfixKind.POSTFIX;
const { prefix, postfix, indicateSelection, selectionIndicatorWidth } = useSliderInfix();
const { ranged, value, valueText } = useSliderSelection();
const infix = isPostfix ? postfix : prefix;
if (indicateSelection && (isPostfix || ranged)) {
return [true, [], , { width: selectionIndicatorWidth }];
}
if (typeof infix === "object" && (infix as { icon: IconType }).icon) {
const { icon, ...restIconProps } = infix as { icon: IconType };
const iconProps = { ...defaultIconProps, ...restIconProps };
return [true, [], , {}];
}
if (typeof infix === "function") {
return [true, [], infix(value, valueText), {}];
}
if (typeof infix === "string") {
return [true, ["txt"], <>{infix}>, {}];
}
if (typeof infix === "undefined") {
return [false, [], null, {}];
}
return [true, [], <>{infix}>, {}];
}