react-native-chart-kit
Version:
Beautiful React Native charts for dashboards, reports, and data-rich mobile apps.
32 lines (31 loc) • 1.45 kB
JavaScript
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;
};