tldraw
Version:
A tiny little drawing editor.
8 lines (7 loc) • 3.06 kB
Source Map (JSON)
{
"version": 3,
"sources": ["../../../../src/lib/tools/ZoomTool/ZoomTool.ts"],
"sourcesContent": ["import {\n\tStateNode,\n\tTLKeyboardEventInfo,\n\tTLPointerEventInfo,\n\tTLStateNodeConstructor,\n} from '@tldraw/editor'\nimport { Idle } from './childStates/Idle'\nimport { Pointing } from './childStates/Pointing'\nimport { ZoomBrushing } from './childStates/ZoomBrushing'\n\n/** @public */\nexport class ZoomTool extends StateNode {\n\tstatic override id = 'zoom'\n\tstatic override initial = 'idle'\n\tstatic override children(): TLStateNodeConstructor[] {\n\t\treturn [Idle, ZoomBrushing, Pointing]\n\t}\n\tstatic override isLockable = false\n\n\tinfo = {} as TLPointerEventInfo & { onInteractionEnd?: string }\n\n\toverride onEnter(info: TLPointerEventInfo & { onInteractionEnd: string }) {\n\t\tthis.info = info\n\t\tthis.parent.setCurrentToolIdMask(info.onInteractionEnd)\n\t\tthis.updateCursor()\n\t}\n\n\toverride onExit() {\n\t\tthis.parent.setCurrentToolIdMask(undefined)\n\t\tthis.editor.updateInstanceState({ zoomBrush: null, cursor: { type: 'default', rotation: 0 } })\n\t\tthis.parent.setCurrentToolIdMask(undefined)\n\t}\n\n\toverride onKeyDown() {\n\t\tthis.updateCursor()\n\t}\n\n\toverride onKeyUp(info: TLKeyboardEventInfo) {\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() {\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.setCursor({ type: 'zoom-out', rotation: 0 })\n\t\t} else {\n\t\t\tthis.editor.setCursor({ type: 'zoom-in', rotation: 0 })\n\t\t}\n\t}\n}\n"],
"mappings": "AAAA;AAAA,EACC;AAAA,OAIM;AACP,SAAS,YAAY;AACrB,SAAS,gBAAgB;AACzB,SAAS,oBAAoB;AAGtB,MAAM,iBAAiB,UAAU;AAAA,EACvC,OAAgB,KAAK;AAAA,EACrB,OAAgB,UAAU;AAAA,EAC1B,OAAgB,WAAqC;AACpD,WAAO,CAAC,MAAM,cAAc,QAAQ;AAAA,EACrC;AAAA,EACA,OAAgB,aAAa;AAAA,EAE7B,OAAO,CAAC;AAAA,EAEC,QAAQ,MAAyD;AACzE,SAAK,OAAO;AACZ,SAAK,OAAO,qBAAqB,KAAK,gBAAgB;AACtD,SAAK,aAAa;AAAA,EACnB;AAAA,EAES,SAAS;AACjB,SAAK,OAAO,qBAAqB,MAAS;AAC1C,SAAK,OAAO,oBAAoB,EAAE,WAAW,MAAM,QAAQ,EAAE,MAAM,WAAW,UAAU,EAAE,EAAE,CAAC;AAC7F,SAAK,OAAO,qBAAqB,MAAS;AAAA,EAC3C;AAAA,EAES,YAAY;AACpB,SAAK,aAAa;AAAA,EACnB;AAAA,EAES,QAAQ,MAA2B;AAC3C,SAAK,aAAa;AAElB,QAAI,KAAK,SAAS,QAAQ;AACzB,WAAK,SAAS;AAAA,IACf;AAAA,EACD;AAAA,EAES,cAAc;AACtB,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,QAAQ;AAAA,IAChC;AAAA,EACD;AAAA,EAEQ,eAAe;AACtB,QAAI,KAAK,OAAO,OAAO,QAAQ;AAC9B,WAAK,OAAO,UAAU,EAAE,MAAM,YAAY,UAAU,EAAE,CAAC;AAAA,IACxD,OAAO;AACN,WAAK,OAAO,UAAU,EAAE,MAAM,WAAW,UAAU,EAAE,CAAC;AAAA,IACvD;AAAA,EACD;AACD;",
"names": []
}