{"version":3,"file":"TextEditingManager.min.mjs","sources":["../../../src/canvas/TextEditingManager.ts"],"sourcesContent":["import type { TPointerEvent } from '../EventTypeDefs';\nimport type { ITextBehavior } from '../shapes/IText/ITextBehavior';\nimport { removeFromArray } from '../util/internals/removeFromArray';\nimport type { Canvas } from './Canvas';\n\n/**\n * In charge of synchronizing all interactive text instances of a canvas\n */\nexport class TextEditingManager {\n  private targets: ITextBehavior[] = [];\n  private declare target?: ITextBehavior;\n  private __disposer: VoidFunction;\n\n  constructor(canvas: Canvas) {\n    const cb = () => {\n      const { hiddenTextarea } =\n        (canvas.getActiveObject() as ITextBehavior) || {};\n      hiddenTextarea && hiddenTextarea.focus();\n    };\n    const el = canvas.upperCanvasEl;\n    el.addEventListener('click', cb);\n    this.__disposer = () => el.removeEventListener('click', cb);\n  }\n\n  exitTextEditing() {\n    this.target = undefined;\n    this.targets.forEach((target) => {\n      if (target.isEditing) {\n        target.exitEditing();\n      }\n    });\n  }\n\n  add(target: ITextBehavior) {\n    this.targets.push(target);\n  }\n\n  remove(target: ITextBehavior) {\n    this.unregister(target);\n    removeFromArray(this.targets, target);\n  }\n\n  register(target: ITextBehavior) {\n    this.target = target;\n  }\n\n  unregister(target: ITextBehavior) {\n    if (target === this.target) {\n      this.target = undefined;\n    }\n  }\n\n  onMouseMove(e: TPointerEvent) {\n    this.target?.isEditing && this.target.updateSelectionOnMouseMove(e);\n  }\n\n  clear() {\n    this.targets = [];\n    this.target = undefined;\n  }\n\n  dispose() {\n    this.clear();\n    this.__disposer();\n    // @ts-expect-error disposing\n    delete this.__disposer;\n  }\n}\n"],"names":["TextEditingManager","constructor","canvas","_defineProperty","this","cb","hiddenTextarea","getActiveObject","focus","el","upperCanvasEl","addEventListener","__disposer","removeEventListener","exitTextEditing","target","undefined","targets","forEach","isEditing","exitEditing","add","push","remove","unregister","removeFromArray","register","onMouseMove","e","_this$target","updateSelectionOnMouseMove","clear","dispose"],"mappings":"8JAQO,MAAMA,EAKXC,WAAAA,CAAYC,GAAgBC,iBAJO,IAAEA,EAAAC,KAAA,kBAAA,GAKnC,MAAMC,EAAKA,KACT,MAAMC,eAAEA,GACLJ,EAAOK,mBAAuC,GACjDD,GAAkBA,EAAeE,OAAO,EAEpCC,EAAKP,EAAOQ,cAClBD,EAAGE,iBAAiB,QAASN,GAC7BD,KAAKQ,WAAa,IAAMH,EAAGI,oBAAoB,QAASR,EAC1D,CAEAS,eAAAA,GACEV,KAAKW,YAASC,EACdZ,KAAKa,QAAQC,SAASH,IAChBA,EAAOI,WACTJ,EAAOK,aACT,GAEJ,CAEAC,GAAAA,CAAIN,GACFX,KAAKa,QAAQK,KAAKP,EACpB,CAEAQ,MAAAA,CAAOR,GACLX,KAAKoB,WAAWT,GAChBU,EAAgBrB,KAAKa,QAASF,EAChC,CAEAW,QAAAA,CAASX,GACPX,KAAKW,OAASA,CAChB,CAEAS,UAAAA,CAAWT,GACLA,IAAWX,KAAKW,SAClBX,KAAKW,YAASC,EAElB,CAEAW,WAAAA,CAAYC,GAAkB,IAAAC,GACjBA,QAAXA,EAAIzB,KAACW,kBAAMc,SAAXA,EAAaV,YAAaf,KAAKW,OAAOe,2BAA2BF,EACnE,CAEAG,KAAAA,GACE3B,KAAKa,QAAU,GACfb,KAAKW,YAASC,CAChB,CAEAgB,OAAAA,GACE5B,KAAK2B,QACL3B,KAAKQ,oBAEER,KAAKQ,UACd"}