UNPKG

@a1um1/lightweight-charts-react-wrapper

Version:

![bundle-size](https://badgen.net/bundlephobia/minzip/lightweight-charts-react-wrapper/)

26 lines (25 loc) 1.02 kB
import { __rest } from "tslib"; import { forwardRef, memo, useContext, useImperativeHandle, useLayoutEffect, useRef, } from "react"; import { createLazyValue } from "../internal/lazy-value.js"; import { priceLine, } from "../internal/price-line.js"; import { SeriesContext } from "./internal/series-context.js"; export const PriceLine = memo(forwardRef(function PriceLine(props, ref) { usePriceLineAction(props, ref); return null; })); function usePriceLineAction(props, ref) { const { children } = props, rest = __rest(props, ["children"]); const series = useContext(SeriesContext); const context = useRef(createLazyValue(() => priceLine(series(), rest), (value) => value.destroy())); useLayoutEffect(() => { context.current(); return () => { context.current.reset(); }; }, []); useLayoutEffect(() => { context.current().update(rest); }, [rest]); useImperativeHandle(ref, () => context.current().subject(), []); return context; }