@cs-open/react-fabric
Version:
1 lines • 2.38 kB
Source Map (JSON)
{"version":3,"file":"FreeDraw.cjs","sources":["../../../src/plugins/FreeDraw.tsx"],"sourcesContent":["import type { Canvas, Path } from 'fabric'\nimport { PencilBrush } from 'fabric'\nimport { useEffect } from 'react'\nimport { useStoreApi } from '../hooks/useStore'\n\nexport type PluginFreeDrawProps = Partial<Path> & {\n onComplete: (path: Path, { canvas }: { canvas: Canvas }) => void\n}\n\nconst PluginFreeDraw = ({ onComplete }: PluginFreeDrawProps) => {\n const store = useStoreApi()\n\n useEffect(() => {\n const { canvas } = store.getState()\n if (!canvas) return\n\n canvas.isDrawingMode = true\n canvas.freeDrawingBrush = new PencilBrush(canvas)\n if (canvas.freeDrawingBrush) {\n canvas.freeDrawingBrush.color = 'red'\n canvas.freeDrawingBrush.width = 2\n }\n\n canvas.on('path:created', handlePathCreated)\n\n return () => {\n canvas.isDrawingMode = false\n canvas.off('path:created', handlePathCreated)\n }\n }, [store, onComplete])\n\n const handlePathCreated = (opt: { path: Path }) => {\n const { path } = opt\n const { canvas } = store.getState()\n if (!canvas) return\n\n const cleanup = () => {\n canvas?.remove(path)\n canvas?.requestRenderAll()\n }\n\n Promise.resolve(\n onComplete(path, {\n canvas: canvas,\n }),\n ).finally(cleanup)\n }\n\n return null\n}\n\nexport default PluginFreeDraw\n"],"names":["PluginFreeDraw","onComplete","store","useStoreApi","useEffect","canvas","PencilBrush","handlePathCreated","opt","path","cleanup"],"mappings":"kJASA,MAAMA,EAAiB,CAAC,CAAE,WAAAC,CAAW,IAA2B,CAC5D,MAAMC,EAAQC,EAAAA,YAAAA,EAEdC,EAAAA,UAAU,IAAM,CACZ,KAAM,CAAE,OAAAC,CAAO,EAAIH,EAAM,SACzB,EAAA,GAAKG,EAEL,OAAAA,EAAO,cAAgB,GACvBA,EAAO,iBAAmB,IAAIC,EAAAA,YAAYD,CAAM,EAC5CA,EAAO,mBACPA,EAAO,iBAAiB,MAAQ,MAChCA,EAAO,iBAAiB,MAAQ,GAGpCA,EAAO,GAAG,eAAgBE,CAAiB,EAEpC,IAAM,CACTF,EAAO,cAAgB,GACvBA,EAAO,IAAI,eAAgBE,CAAiB,CAChD,CACJ,EAAG,CAACL,EAAOD,CAAU,CAAC,EAEtB,MAAMM,EAAqBC,GAAwB,CAC/C,KAAM,CAAE,KAAAC,CAAK,EAAID,EACX,CAAE,OAAAH,CAAO,EAAIH,EAAM,WACzB,GAAI,CAACG,EAAQ,OAEb,MAAMK,EAAU,IAAM,CAClBL,GAAQ,OAAOI,CAAI,EACnBJ,GAAQ,iBAAA,CACZ,EAEA,QAAQ,QACJJ,EAAWQ,EAAM,CACb,OAAQJ,CACZ,CAAC,CACL,EAAE,QAAQK,CAAO,CACrB,EAEA,OAAO,IACX"}