import { memo } from "preact/compat"; import getMainColorForVehicle from "../utils/getMainColorForVehicle"; import useRouteStop from "../utils/hooks/useRouteStop"; import type { HTMLAttributes, PreactDOMAttributes } from "preact"; export type RouteStopProgressProps = { svgProps?: HTMLAttributes & PreactDOMAttributes; } & HTMLAttributes & PreactDOMAttributes; function RouteStopProgress({ svgProps, ...props }: RouteStopProgressProps) { const { invertColor, status, stopSequence } = useRouteStop(); const { isBoarding, isFirst, isLast, isLeft, isPassed, progress } = status; const y1 = isFirst ? "50%" : "-100%"; const y2 = isLast ? "50%" : "100%"; const yDone = `${progress}%`; const greyColor = "rgb(156, 163, 175)"; const lineColor = getMainColorForVehicle(stopSequence); let colorScheme = isPassed ? greyColor : lineColor; let invertColorScheme = isPassed ? lineColor : greyColor; let progressDoneColor = greyColor; if (invertColor) { colorScheme = isPassed ? lineColor : greyColor; invertColorScheme = isPassed ? greyColor : lineColor; progressDoneColor = lineColor; } const circleColor = !isPassed && (isLeft || isBoarding) ? invertColorScheme : colorScheme; return (
{/* Circle used to display a black border */} {/* Black line used to display a black border */} {/* Colored line (grey or color) */} {/* Colored circle (grey or color) */} {/* white circle with black border */}
); } export default memo(RouteStopProgress);