fabric
Version:
Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.
1 lines • 3.96 kB
Source Map (JSON)
{"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 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","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,CAAA;IAAAA,eAAA,CAAA,IAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA,CAAA;IAKnC,MAAMC,EAAE,GAAGA,MAAM;MACf,MAAM;AAAEC,QAAAA,cAAAA;OAAgB,GACrBH,MAAM,CAACI,eAAe,EAAE,IAAsB,EAAE,CAAA;AACnDD,MAAAA,cAAc,IAAIA,cAAc,CAACE,KAAK,EAAE,CAAA;KACzC,CAAA;AACD,IAAA,MAAMC,EAAE,GAAGN,MAAM,CAACO,aAAa,CAAA;AAC/BD,IAAAA,EAAE,CAACE,gBAAgB,CAAC,OAAO,EAAEN,EAAE,CAAC,CAAA;IAChC,IAAI,CAACO,UAAU,GAAG,MAAMH,EAAE,CAACI,mBAAmB,CAAC,OAAO,EAAER,EAAE,CAAC,CAAA;AAC7D,GAAA;AAEAS,EAAAA,eAAeA,GAAG;IAChB,IAAI,CAACC,MAAM,GAAGC,SAAS,CAAA;AACvB,IAAA,IAAI,CAACC,OAAO,CAACC,OAAO,CAAEH,MAAM,IAAK;MAC/B,IAAIA,MAAM,CAACI,SAAS,EAAE;QACpBJ,MAAM,CAACK,WAAW,EAAE,CAAA;AACtB,OAAA;AACF,KAAC,CAAC,CAAA;AACJ,GAAA;EAEAC,GAAGA,CAACN,MAAqB,EAAE;AACzB,IAAA,IAAI,CAACE,OAAO,CAACK,IAAI,CAACP,MAAM,CAAC,CAAA;AAC3B,GAAA;EAEAQ,MAAMA,CAACR,MAAqB,EAAE;AAC5B,IAAA,IAAI,CAACS,UAAU,CAACT,MAAM,CAAC,CAAA;AACvBU,IAAAA,eAAe,CAAC,IAAI,CAACR,OAAO,EAAEF,MAAM,CAAC,CAAA;AACvC,GAAA;EAEAW,QAAQA,CAACX,MAAqB,EAAE;IAC9B,IAAI,CAACA,MAAM,GAAGA,MAAM,CAAA;AACtB,GAAA;EAEAS,UAAUA,CAACT,MAAqB,EAAE;AAChC,IAAA,IAAIA,MAAM,KAAK,IAAI,CAACA,MAAM,EAAE;MAC1B,IAAI,CAACA,MAAM,GAAGC,SAAS,CAAA;AACzB,KAAA;AACF,GAAA;EAEAW,WAAWA,CAACC,CAAgB,EAAE;AAAA,IAAA,IAAAC,YAAA,CAAA;AAC5B,IAAA,CAAA,CAAAA,YAAA,GAAI,IAAA,CAACd,MAAM,MAAAc,IAAAA,IAAAA,YAAA,uBAAXA,YAAA,CAAaV,SAAS,KAAI,IAAI,CAACJ,MAAM,CAACe,0BAA0B,CAACF,CAAC,CAAC,CAAA;AACrE,GAAA;AAEAG,EAAAA,KAAKA,GAAG;IACN,IAAI,CAACd,OAAO,GAAG,EAAE,CAAA;IACjB,IAAI,CAACF,MAAM,GAAGC,SAAS,CAAA;AACzB,GAAA;AAEAgB,EAAAA,OAAOA,GAAG;IACR,IAAI,CAACD,KAAK,EAAE,CAAA;IACZ,IAAI,CAACnB,UAAU,EAAE,CAAA;AACjB;IACA,OAAO,IAAI,CAACA,UAAU,CAAA;AACxB,GAAA;AACF;;;;"}