{"version":3,"file":"wrapWithFireEvent.mjs","names":[],"sources":["../../../src/controls/wrapWithFireEvent.ts"],"sourcesContent":["import type {\n  TModificationEvents,\n  Transform,\n  TransformActionHandler,\n} from '../EventTypeDefs';\nimport { fireEvent } from './fireEvent';\nimport { commonEventInfo } from './util';\n\n/**\n * Wrap an action handler with firing an event if the action is performed\n * @param {TModificationEvents} eventName the event we want to fire\n * @param {TransformActionHandler<T>} actionHandler the function to wrap\n * @param {object} extraEventInfo extra information to pas to the event handler\n * @return {TransformActionHandler<T>} a function with an action handler signature\n */\nexport const wrapWithFireEvent = <\n  T extends Transform,\n  P extends object = Record<string, never>,\n>(\n  eventName: TModificationEvents,\n  actionHandler: TransformActionHandler<T>,\n  extraEventInfo?: P,\n) => {\n  return ((eventData, transform, x, y) => {\n    const actionPerformed = actionHandler(eventData, transform, x, y);\n    if (actionPerformed) {\n      fireEvent(eventName, {\n        ...commonEventInfo(eventData, transform, x, y),\n        ...extraEventInfo,\n      });\n    }\n    return actionPerformed;\n  }) as TransformActionHandler<T>;\n};\n"],"mappings":";;;;;;;;;;AAeA,MAAa,qBAIX,WACA,eACA,mBACG;AACH,UAAS,WAAW,WAAW,GAAG,MAAM;EACtC,MAAM,kBAAkB,cAAc,WAAW,WAAW,GAAG,EAAE;AACjE,MAAI,gBACF,WAAU,WAAW;GACnB,GAAG,gBAAgB,WAAW,WAAW,GAAG,EAAE;GAC9C,GAAG;GACJ,CAAC;AAEJ,SAAO"}