UNPKG

react-fabric-canvas-designer

Version:

A React-based wrapper for Fabric.js to create interactive and customizable canvas-based designs. This library provides tools for drawing, editing, and managing objects on a canvas with React-friendly APIs.

34 lines (33 loc) 1.39 kB
import { jsx as _jsx } from "react/jsx-runtime"; import { Canvas } from 'fabric'; import { useEffect, useMemo, useRef, useState } from 'react'; import { ReactFabricStore } from '../ReactFabricStore'; const useReactFabricCanvas = ({ canvasWidth, canvasHeight, backgroundColor, fontList }) => { const canvasEl = useRef({}); const [fabricCanvasInstance, setFabricCanvasInstance] = useState(null); const reactFabricStore = useMemo(() => { if (fabricCanvasInstance) return new ReactFabricStore({ fabricCanvasInstance, fontList }); return null; }, [fabricCanvasInstance, fontList]); useEffect(() => { let initcanvas = null; if (!canvasEl.current) return; canvasEl.current.width = canvasWidth; canvasEl.current.height = canvasHeight; initcanvas = new Canvas(canvasEl.current, { canvasWidth, canvasHeight, backgroundColor, preserveObjectStacking: true }); initcanvas.renderAll(); setFabricCanvasInstance(initcanvas); return () => { initcanvas.dispose(); }; }, [fontList]); return { fabricCanvasInstance, reactFabricStore, UIComponent: _jsx("canvas", { ref: canvasEl, width: canvasWidth, height: canvasHeight, style: { border: '1px solid black' } }) }; }; export default useReactFabricCanvas;