UNPKG

@cs-open/react-fabric

Version:
1 lines 1.46 kB
{"version":3,"file":"events.mjs","sources":["../../../src/utils/events.ts"],"sourcesContent":["import type { CanvasEvents, GroupEvents, ObjectEvents } from 'fabric'\nimport type { AllCanvasEvents } from '../types/canvas'\nimport type { AllObjectEvents } from '../types/object'\n\nexport const bindEvents = <T extends CanvasEvents | ObjectEvents | GroupEvents>(\n target: any,\n listeners: Partial<T extends CanvasEvents ? AllCanvasEvents : AllObjectEvents>,\n) => {\n const cleanup: (() => void)[] = []\n\n Object.entries(listeners).forEach(([key, handler]) => {\n if (handler) {\n const rawEventName = key\n .slice(2)\n .replace(/[A-Z]/g, (match, offset) =>\n offset === 0 ? match.toLowerCase() : ':' + match.toLowerCase(),\n ) as keyof T\n\n target.on(rawEventName, handler)\n cleanup.push(() => target.off(rawEventName, handler))\n }\n })\n\n return () => cleanup.forEach(fn => fn())\n}\n"],"names":["bindEvents","target","listeners","cleanup","key","handler","rawEventName","match","offset","fn"],"mappings":"aAIO,MAAMA,EAAa,CACxBC,EACAC,IACG,CACH,MAAMC,EAA0B,GAEhC,OAAA,OAAO,QAAQD,CAAS,EAAE,QAAQ,CAAC,CAACE,EAAKC,CAAO,IAAM,CACpD,GAAIA,EAAS,CACX,MAAMC,EAAeF,EAClB,MAAM,CAAC,EACP,QAAQ,SAAU,CAACG,EAAOC,IACzBA,IAAW,EAAID,EAAM,YAAY,EAAI,IAAMA,EAAM,YACnD,CAAA,EAEFN,EAAO,GAAGK,EAAcD,CAAO,EAC/BF,EAAQ,KAAK,IAAMF,EAAO,IAAIK,EAAcD,CAAO,CAAC,CACtD,CACF,CAAC,EAEM,IAAMF,EAAQ,QAAQM,GAAMA,EAAAA,CAAI,CACzC"}