{"version":3,"file":"TextEditingManager.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  declare private 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","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":";;;AAKA;AACA;AACA;AACO,MAAMA,kBAAkB,CAAC;EAK9BC,WAAWA,CAACC,MAAc,EAAE;AAAAC,IAAAA,eAAA,kBAJO,EAAE,CAAA;IAAAA,eAAA,CAAA,IAAA,EAAA,YAAA,EAAA,MAAA,CAAA;IAKnC,MAAMC,EAAE,GAAGA,MAAM;MACf,MAAM;AAAEC,QAAAA;OAAgB,GACrBH,MAAM,CAACI,eAAe,EAAE,IAAsB,EAAE;AACnDD,MAAAA,cAAc,IAAIA,cAAc,CAACE,KAAK,EAAE;IAC1C,CAAC;AACD,IAAA,MAAMC,EAAE,GAAGN,MAAM,CAACO,aAAa;AAC/BD,IAAAA,EAAE,CAACE,gBAAgB,CAAC,OAAO,EAAEN,EAAE,CAAC;IAChC,IAAI,CAACO,UAAU,GAAG,MAAMH,EAAE,CAACI,mBAAmB,CAAC,OAAO,EAAER,EAAE,CAAC;AAC7D,EAAA;AAEAS,EAAAA,eAAeA,GAAG;IAChB,IAAI,CAACC,MAAM,GAAGC,SAAS;AACvB,IAAA,IAAI,CAACC,OAAO,CAACC,OAAO,CAAEH,MAAM,IAAK;MAC/B,IAAIA,MAAM,CAACI,SAAS,EAAE;QACpBJ,MAAM,CAACK,WAAW,EAAE;AACtB,MAAA;AACF,IAAA,CAAC,CAAC;AACJ,EAAA;EAEAC,GAAGA,CAACN,MAAqB,EAAE;AACzB,IAAA,IAAI,CAACE,OAAO,CAACK,IAAI,CAACP,MAAM,CAAC;AAC3B,EAAA;EAEAQ,MAAMA,CAACR,MAAqB,EAAE;AAC5B,IAAA,IAAI,CAACS,UAAU,CAACT,MAAM,CAAC;AACvBU,IAAAA,eAAe,CAAC,IAAI,CAACR,OAAO,EAAEF,MAAM,CAAC;AACvC,EAAA;EAEAW,QAAQA,CAACX,MAAqB,EAAE;IAC9B,IAAI,CAACA,MAAM,GAAGA,MAAM;AACtB,EAAA;EAEAS,UAAUA,CAACT,MAAqB,EAAE;AAChC,IAAA,IAAIA,MAAM,KAAK,IAAI,CAACA,MAAM,EAAE;MAC1B,IAAI,CAACA,MAAM,GAAGC,SAAS;AACzB,IAAA;AACF,EAAA;EAEAW,WAAWA,CAACC,CAAgB,EAAE;AAAA,IAAA,IAAAC,YAAA;AAC5B,IAAA,CAAA,CAAAA,YAAA,GAAA,IAAI,CAACd,MAAM,MAAA,IAAA,IAAAc,YAAA,uBAAXA,YAAA,CAAaV,SAAS,KAAI,IAAI,CAACJ,MAAM,CAACe,0BAA0B,CAACF,CAAC,CAAC;AACrE,EAAA;AAEAG,EAAAA,KAAKA,GAAG;IACN,IAAI,CAACd,OAAO,GAAG,EAAE;IACjB,IAAI,CAACF,MAAM,GAAGC,SAAS;AACzB,EAAA;AAEAgB,EAAAA,OAAOA,GAAG;IACR,IAAI,CAACD,KAAK,EAAE;IACZ,IAAI,CAACnB,UAAU,EAAE;AACjB;IACA,OAAO,IAAI,CAACA,UAAU;AACxB,EAAA;AACF;;;;"}