import * as React from "react"; import { Graphie as GraphieDrawingContext } from "../util/graphie"; import type { Coord } from "../interactive2/types"; import type { Range, Size } from "@khanacademy/perseus-core"; type Props = { addMouseLayer?: boolean; box: Size; range: [Coord, Coord]; ranges?: [Range, Range]; gridStep?: [number, number]; step?: [number, number]; scale?: [number, number]; isMobile?: boolean; responsive?: boolean; children?: React.ReactNode; options: any; setDrawingAreaAvailable?: (boolean: any) => void; setup: (graphie: any, options: { range: [Coord, Coord]; scale: [number, number]; }) => void; onClick?: (at: Coord) => void; onMouseDown?: (at: Coord) => void; onMouseMove?: (at: Coord) => void; }; type DefaultProps = { range: Props["range"]; options: Props["options"]; responsive: Props["responsive"]; addMouseLayer: Props["addMouseLayer"]; }; interface Movable { remove(): void; props: unknown; modify(graphie: GraphieDrawingContext): "reordered" | undefined; toFront(): void; } declare class Graphie extends React.Component { graphieDivRef: React.RefObject; _graphie: GraphieDrawingContext; _movables: Record; movables: Record; static defaultProps: DefaultProps; componentDidMount(): void; shouldComponentUpdate(nextProps: Props): boolean; componentDidUpdate(prevProps: Props): void; /** * Allow parents of the component to grab a reference to the * underlying graphie object using * `this.refs.graphieComponent.getGraphie()` * * This shouldn't be necessary for 90% of cases, but the power is there. * Use it for good and not evil. */ getGraphie: () => any; _range: () => [Coord, Coord]; _box: () => Size; _scale: () => Coord; _setupGraphie: () => void; _removeMovables: () => void; _renderMovables: (children: ReadonlyArray, arg2: { nextKey: number; graphie: GraphieDrawingContext; oldMovables: Record; newMovables: Record; }) => React.ReactElement; _updateMovables: () => void; render(): React.ReactNode; } export default Graphie;