fabric
Version:
Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.
1 lines • 2.61 kB
Source Map (JSON)
{"version":3,"file":"TextEditingManager.min.mjs","names":[],"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"],"mappings":"0LAQA,IAAa,EAAb,KAAA,CAKE,YAAY,EAAA,CAAA,EAAA,KAJJ,UAA2B,EAAA,CAAA,CAAA,EAAA,KAE3B,aAAA,IAAA,GAAA,CAGN,IAAM,MAAA,CACJ,GAAA,CAAM,eAAE,GACL,EAAO,iBAAA,EAAuC,EAAA,CACjD,GAAkB,EAAe,OAAA,EAE7B,EAAK,EAAO,cAClB,EAAG,iBAAiB,QAAS,EAAA,CAC7B,KAAK,eAAmB,EAAG,oBAAoB,QAAS,EAAA,CAG1D,iBAAA,CACE,KAAK,OAAA,IAAS,GACd,KAAK,QAAQ,QAAS,GAAA,CAChB,EAAO,WACT,EAAO,aAAA,EAAA,CAKb,IAAI,EAAA,CACF,KAAK,QAAQ,KAAK,EAAA,CAGpB,OAAO,EAAA,CACL,KAAK,WAAW,EAAA,CAChB,EAAgB,KAAK,QAAS,EAAA,CAGhC,SAAS,EAAA,CACP,KAAK,OAAS,EAGhB,WAAW,EAAA,CACL,IAAW,KAAK,SAClB,KAAK,OAAA,IAAS,IAIlB,YAAY,EAAA,CAAA,IAAA,GACV,EAAA,KAAK,SAAA,MAAA,EAAQ,WAAa,KAAK,OAAO,2BAA2B,EAAA,CAGnE,OAAA,CACE,KAAK,QAAU,EAAA,CACf,KAAK,OAAA,IAAS,GAGhB,SAAA,CACE,KAAK,OAAA,CACL,KAAK,YAAA,CAAA,OAEE,KAAK,aAAA,OAAA,KAAA"}