UNPKG

react-native-chart-kit

Version:

Beautiful React Native charts for dashboards, reports, and data-rich mobile apps.

32 lines (31 loc) 1.45 kB
import { lineChartSvgRenderer } from "../line/renderer"; const conservativeNativeMaxSurfaceWidth = 2730; const isInjectedRenderer = (renderer) => renderer !== undefined && renderer !== lineChartSvgRenderer && renderer.name !== "svg"; const getRendererMaxSurfaceWidth = (renderer) => renderer?.capabilities?.maxSurfaceWidth ?? (isInjectedRenderer(renderer) ? conservativeNativeMaxSurfaceWidth : undefined); const canRenderWideViewport = (renderer) => renderer?.capabilities?.viewportWindowing === true; const shouldConstrainSurfaceWidth = ({ contentWidth, renderer, scrollable }) => { const maxSurfaceWidth = getRendererMaxSurfaceWidth(renderer); return (scrollable && typeof maxSurfaceWidth === "number" && Number.isFinite(maxSurfaceWidth) && contentWidth > maxSurfaceWidth && !canRenderWideViewport(renderer)); }; export const getSafeBarChartContentWidth = ({ contentWidth, renderer, scrollable }) => { const maxSurfaceWidth = getRendererMaxSurfaceWidth(renderer); return shouldConstrainSurfaceWidth({ contentWidth, renderer, scrollable }) && typeof maxSurfaceWidth === "number" ? maxSurfaceWidth : contentWidth; }; export const getSafeBarChartRenderer = ({ contentWidth, renderer, scrollable }) => { if (shouldConstrainSurfaceWidth({ contentWidth, renderer, scrollable })) { return lineChartSvgRenderer; } return renderer; };