{ "version": 3, "sources": ["../../../../../src/lib/tools/SelectTool/children/PointingCropHandle.ts"], "sourcesContent": ["import { StateNode, TLEventHandlers, TLPointerEventInfo, TLShape } from '@tldraw/editor'\nimport { CursorTypeMap } from './PointingResizeHandle'\n\ntype TLPointingCropHandleInfo = TLPointerEventInfo & {\n\ttarget: 'selection'\n} & {\n\tonInteractionEnd?: string\n}\n\nexport class PointingCropHandle extends StateNode {\n\tstatic override id = 'pointing_crop_handle'\n\n\tprivate info = {} as TLPointingCropHandleInfo\n\n\tprivate updateCursor(shape: TLShape) {\n\t\tconst cursorType = CursorTypeMap[this.info.handle!]\n\t\tthis.editor.updateInstanceState({\n\t\t\tcursor: {\n\t\t\t\ttype: cursorType,\n\t\t\t\trotation: shape.rotation,\n\t\t\t},\n\t\t})\n\t}\n\n\toverride onEnter = (info: TLPointingCropHandleInfo) => {\n\t\tthis.info = info\n\t\tthis.parent.currentToolIdMask = info.onInteractionEnd\n\t\tconst selectedShape = this.editor.selectedShapes[0]\n\t\tif (!selectedShape) return\n\n\t\tthis.updateCursor(selectedShape)\n\t\tthis.editor.setCroppingShape(selectedShape.id)\n\t}\n\n\toverride onExit = () => {\n\t\tthis.editor.updateInstanceState(\n\t\t\t{ cursor: { type: 'default', rotation: 0 } },\n\t\t\t{ ephemeral: true }\n\t\t)\n\t\tthis.parent.currentToolIdMask = undefined\n\t}\n\n\toverride onPointerMove: TLEventHandlers['onPointerMove'] = () => {\n\t\tconst isDragging = this.editor.inputs.isDragging\n\n\t\tif (isDragging) {\n\t\t\tthis.parent.transition('cropping', {\n\t\t\t\t...this.info,\n\t\t\t\tonInteractionEnd: this.info.onInteractionEnd,\n\t\t\t})\n\t\t}\n\t}\n\n\toverride onPointerUp: TLEventHandlers['onPointerUp'] = () => {\n\t\tif (this.info.onInteractionEnd) {\n\t\t\tthis.editor.setCurrentTool(this.info.onInteractionEnd, this.info)\n\t\t} else {\n\t\t\tthis.editor.setCroppingShape(null)\n\t\t\tthis.parent.transition('idle', {})\n\t\t}\n\t}\n\n\toverride onCancel: TLEventHandlers['onCancel'] = () => {\n\t\tthis.cancel()\n\t}\n\n\toverride onComplete: TLEventHandlers['onComplete'] = () => {\n\t\tthis.cancel()\n\t}\n\n\toverride onInterrupt = () => {\n\t\tthis.cancel()\n\t}\n\n\tprivate cancel() {\n\t\tif (this.info.onInteractionEnd) {\n\t\t\tthis.editor.setCurrentTool(this.info.onInteractionEnd, this.info)\n\t\t} else {\n\t\t\tthis.editor.setCroppingShape(null)\n\t\t\tthis.parent.transition('idle', {})\n\t\t}\n\t}\n}\n"], "mappings": "AAAA,SAAS,iBAA+D;AACxE,SAAS,qBAAqB;AAQvB,MAAM,2BAA2B,UAAU;AAAA,EACjD,OAAgB,KAAK;AAAA,EAEb,OAAO,CAAC;AAAA,EAER,aAAa,OAAgB;AACpC,UAAM,aAAa,cAAc,KAAK,KAAK,MAAO;AAClD,SAAK,OAAO,oBAAoB;AAAA,MAC/B,QAAQ;AAAA,QACP,MAAM;AAAA,QACN,UAAU,MAAM;AAAA,MACjB;AAAA,IACD,CAAC;AAAA,EACF;AAAA,EAES,UAAU,CAAC,SAAmC;AACtD,SAAK,OAAO;AACZ,SAAK,OAAO,oBAAoB,KAAK;AACrC,UAAM,gBAAgB,KAAK,OAAO,eAAe,CAAC;AAClD,QAAI,CAAC;AAAe;AAEpB,SAAK,aAAa,aAAa;AAC/B,SAAK,OAAO,iBAAiB,cAAc,EAAE;AAAA,EAC9C;AAAA,EAES,SAAS,MAAM;AACvB,SAAK,OAAO;AAAA,MACX,EAAE,QAAQ,EAAE,MAAM,WAAW,UAAU,EAAE,EAAE;AAAA,MAC3C,EAAE,WAAW,KAAK;AAAA,IACnB;AACA,SAAK,OAAO,oBAAoB;AAAA,EACjC;AAAA,EAES,gBAAkD,MAAM;AAChE,UAAM,aAAa,KAAK,OAAO,OAAO;AAEtC,QAAI,YAAY;AACf,WAAK,OAAO,WAAW,YAAY;AAAA,QAClC,GAAG,KAAK;AAAA,QACR,kBAAkB,KAAK,KAAK;AAAA,MAC7B,CAAC;AAAA,IACF;AAAA,EACD;AAAA,EAES,cAA8C,MAAM;AAC5D,QAAI,KAAK,KAAK,kBAAkB;AAC/B,WAAK,OAAO,eAAe,KAAK,KAAK,kBAAkB,KAAK,IAAI;AAAA,IACjE,OAAO;AACN,WAAK,OAAO,iBAAiB,IAAI;AACjC,WAAK,OAAO,WAAW,QAAQ,CAAC,CAAC;AAAA,IAClC;AAAA,EACD;AAAA,EAES,WAAwC,MAAM;AACtD,SAAK,OAAO;AAAA,EACb;AAAA,EAES,aAA4C,MAAM;AAC1D,SAAK,OAAO;AAAA,EACb;AAAA,EAES,cAAc,MAAM;AAC5B,SAAK,OAAO;AAAA,EACb;AAAA,EAEQ,SAAS;AAChB,QAAI,KAAK,KAAK,kBAAkB;AAC/B,WAAK,OAAO,eAAe,KAAK,KAAK,kBAAkB,KAAK,IAAI;AAAA,IACjE,OAAO;AACN,WAAK,OAAO,iBAAiB,IAAI;AACjC,WAAK,OAAO,WAAW,QAAQ,CAAC,CAAC;AAAA,IAClC;AAAA,EACD;AACD;", "names": [] }