fabric
Version:
Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.
1 lines • 3.06 kB
Source Map (JSON)
{"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"}