{ "version": 3, "sources": ["../../../../src/lib/tools/ZoomTool/ZoomTool.ts"], "sourcesContent": ["import { StateNode, TLInterruptEvent, TLKeyboardEvent, TLPointerEventInfo } from '@tldraw/editor'\nimport { Idle } from './children/Idle'\nimport { Pointing } from './children/Pointing'\nimport { ZoomBrushing } from './children/ZoomBrushing'\n\n/** @public */\nexport class ZoomTool extends StateNode {\n\tstatic override id = 'zoom'\n\tstatic override initial = 'idle'\n\tstatic override children = () => [Idle, ZoomBrushing, Pointing]\n\n\tinfo = {} as TLPointerEventInfo & { onInteractionEnd?: string }\n\n\toverride onEnter = (info: TLPointerEventInfo & { onInteractionEnd: string }) => {\n\t\tthis.info = info\n\t\tthis.currentToolIdMask = info.onInteractionEnd\n\t\tthis.updateCursor()\n\t}\n\n\toverride onExit = () => {\n\t\tthis.currentToolIdMask = undefined\n\t\tthis.editor.updateInstanceState(\n\t\t\t{ zoomBrush: null, cursor: { type: 'default', rotation: 0 } },\n\t\t\t{ ephemeral: true }\n\t\t)\n\t\tthis.currentToolIdMask = undefined\n\t}\n\n\toverride onKeyDown: TLKeyboardEvent | undefined = () => {\n\t\tthis.updateCursor()\n\t}\n\n\toverride onKeyUp: TLKeyboardEvent = (info) => {\n\t\tthis.updateCursor()\n\n\t\tif (info.code === 'KeyZ') {\n\t\t\tthis.complete()\n\t\t}\n\t}\n\n\toverride onInterrupt: TLInterruptEvent = () => {\n\t\tthis.complete()\n\t}\n\n\tprivate complete() {\n\t\t// Go back to the previous tool. If we are already in select we want to transition to idle\n\t\tif (this.info.onInteractionEnd && this.info.onInteractionEnd !== 'select') {\n\t\t\tthis.editor.setCurrentTool(this.info.onInteractionEnd, this.info)\n\t\t} else {\n\t\t\tthis.parent.transition('select', {})\n\t\t}\n\t}\n\n\tprivate updateCursor() {\n\t\tif (this.editor.inputs.altKey) {\n\t\t\tthis.editor.updateInstanceState(\n\t\t\t\t{ cursor: { type: 'zoom-out', rotation: 0 } },\n\t\t\t\t{ ephemeral: true }\n\t\t\t)\n\t\t} else {\n\t\t\tthis.editor.updateInstanceState(\n\t\t\t\t{ cursor: { type: 'zoom-in', rotation: 0 } },\n\t\t\t\t{ ephemeral: true }\n\t\t\t)\n\t\t}\n\t}\n}\n"], "mappings": "AAAA,SAAS,iBAAwE;AACjF,SAAS,YAAY;AACrB,SAAS,gBAAgB;AACzB,SAAS,oBAAoB;AAGtB,MAAM,iBAAiB,UAAU;AAAA,EACvC,OAAgB,KAAK;AAAA,EACrB,OAAgB,UAAU;AAAA,EAC1B,OAAgB,WAAW,MAAM,CAAC,MAAM,cAAc,QAAQ;AAAA,EAE9D,OAAO,CAAC;AAAA,EAEC,UAAU,CAAC,SAA4D;AAC/E,SAAK,OAAO;AACZ,SAAK,oBAAoB,KAAK;AAC9B,SAAK,aAAa;AAAA,EACnB;AAAA,EAES,SAAS,MAAM;AACvB,SAAK,oBAAoB;AACzB,SAAK,OAAO;AAAA,MACX,EAAE,WAAW,MAAM,QAAQ,EAAE,MAAM,WAAW,UAAU,EAAE,EAAE;AAAA,MAC5D,EAAE,WAAW,KAAK;AAAA,IACnB;AACA,SAAK,oBAAoB;AAAA,EAC1B;AAAA,EAES,YAAyC,MAAM;AACvD,SAAK,aAAa;AAAA,EACnB;AAAA,EAES,UAA2B,CAAC,SAAS;AAC7C,SAAK,aAAa;AAElB,QAAI,KAAK,SAAS,QAAQ;AACzB,WAAK,SAAS;AAAA,IACf;AAAA,EACD;AAAA,EAES,cAAgC,MAAM;AAC9C,SAAK,SAAS;AAAA,EACf;AAAA,EAEQ,WAAW;AAElB,QAAI,KAAK,KAAK,oBAAoB,KAAK,KAAK,qBAAqB,UAAU;AAC1E,WAAK,OAAO,eAAe,KAAK,KAAK,kBAAkB,KAAK,IAAI;AAAA,IACjE,OAAO;AACN,WAAK,OAAO,WAAW,UAAU,CAAC,CAAC;AAAA,IACpC;AAAA,EACD;AAAA,EAEQ,eAAe;AACtB,QAAI,KAAK,OAAO,OAAO,QAAQ;AAC9B,WAAK,OAAO;AAAA,QACX,EAAE,QAAQ,EAAE,MAAM,YAAY,UAAU,EAAE,EAAE;AAAA,QAC5C,EAAE,WAAW,KAAK;AAAA,MACnB;AAAA,IACD,OAAO;AACN,WAAK,OAAO;AAAA,QACX,EAAE,QAAQ,EAAE,MAAM,WAAW,UAAU,EAAE,EAAE;AAAA,QAC3C,EAAE,WAAW,KAAK;AAAA,MACnB;AAAA,IACD;AAAA,EACD;AACD;", "names": [] }