UNPKG

victory-native

Version:

A charting library for React Native with a focus on performance and customization.

48 lines (47 loc) 2.95 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Frame = exports.FrameDefaults = void 0; const react_1 = __importDefault(require("react")); const react_native_1 = require("react-native"); const react_native_skia_1 = require("@shopify/react-native-skia"); var axisDefaults_1 = require("../utils/axisDefaults"); Object.defineProperty(exports, "FrameDefaults", { enumerable: true, get: function () { return axisDefaults_1.FrameDefaults; } }); const Frame = ({ xScale, yScale, lineColor, lineWidth, linePathEffect, }) => { const [x1 = 0, x2 = 0] = xScale.domain(); const [y1 = 0, y2 = 0] = yScale.domain(); const boundingFrame = react_1.default.useMemo(() => { const framePath = react_native_skia_1.Skia.Path.Make(); if (typeof lineWidth === "number") { framePath.addRect(react_native_skia_1.Skia.XYWHRect(xScale(x1), yScale(y1), xScale(x2) - xScale(x1), yScale(y2) - yScale(y1))); return <react_native_skia_1.Path key="full-frame" path={framePath} strokeWidth={lineWidth}/>; } else { const lines = []; const _lineWidth = Object.assign({ top: react_native_1.StyleSheet.hairlineWidth, right: react_native_1.StyleSheet.hairlineWidth, bottom: react_native_1.StyleSheet.hairlineWidth, left: react_native_1.StyleSheet.hairlineWidth }, lineWidth); if (_lineWidth.top > 0) { lines.push(<react_native_skia_1.Line key="frame-top" p1={(0, react_native_skia_1.vec)(xScale(x1), yScale(y1))} p2={(0, react_native_skia_1.vec)(xScale(x2), yScale(y1))} strokeWidth={lineWidth.top}/>); } if (_lineWidth.right > 0) { lines.push(<react_native_skia_1.Line key="frame-right" p1={(0, react_native_skia_1.vec)(xScale(x2), yScale(y1))} p2={(0, react_native_skia_1.vec)(xScale(x2), yScale(y2))} strokeWidth={lineWidth.right}/>); } if (_lineWidth.bottom > 0) { lines.push(<react_native_skia_1.Line key="frame-bottom" p1={(0, react_native_skia_1.vec)(xScale(x2), yScale(y2))} p2={(0, react_native_skia_1.vec)(xScale(x1), yScale(y2))} strokeWidth={lineWidth.bottom}/>); } if (_lineWidth.left > 0) { lines.push(<react_native_skia_1.Line key="frame-left" p1={(0, react_native_skia_1.vec)(xScale(x1), yScale(y2))} p2={(0, react_native_skia_1.vec)(xScale(x1), yScale(y1))} strokeWidth={lineWidth.left}/>); } return lines; } }, [x1, x2, xScale, y1, y2, yScale, lineWidth]); if (typeof lineWidth === "number" && lineWidth <= 0) { return null; } return (<react_native_skia_1.Group color={lineColor} style="stroke"> {linePathEffect} {boundingFrame} </react_native_skia_1.Group>); }; exports.Frame = Frame;