{ "version": 3, "sources": ["../../../../../src/lib/tools/ZoomTool/children/ZoomBrushing.ts"], "sourcesContent": ["import { Box2d, StateNode, TLEventHandlers, TLPointerEventInfo } from '@tldraw/editor'\n\nexport class ZoomBrushing extends StateNode {\n\tstatic override id = 'zoom_brushing'\n\n\tinfo = {} as TLPointerEventInfo & { onInteractionEnd?: string }\n\n\tzoomBrush = new Box2d()\n\n\toverride onEnter = (info: TLPointerEventInfo & { onInteractionEnd: string }) => {\n\t\tthis.info = info\n\t\tthis.update()\n\t}\n\n\toverride onExit = () => {\n\t\tthis.editor.updateInstanceState({ zoomBrush: null })\n\t}\n\n\toverride onPointerMove = () => {\n\t\tthis.update()\n\t}\n\n\toverride onPointerUp: TLEventHandlers['onPointerUp'] = () => {\n\t\tthis.complete()\n\t}\n\n\toverride onCancel: TLEventHandlers['onCancel'] = () => {\n\t\tthis.cancel()\n\t}\n\n\tprivate update() {\n\t\tconst {\n\t\t\tinputs: { originPagePoint, currentPagePoint },\n\t\t} = this.editor\n\n\t\tthis.zoomBrush.setTo(Box2d.FromPoints([originPagePoint, currentPagePoint]))\n\t\tthis.editor.updateInstanceState({ zoomBrush: this.zoomBrush.toJson() })\n\t}\n\n\tprivate cancel() {\n\t\tthis.parent.transition('idle', this.info)\n\t}\n\n\tprivate complete() {\n\t\tconst { zoomBrush } = this\n\t\tconst threshold = 8 / this.editor.zoomLevel\n\t\t// If the selected area is small then treat it as a click\n\t\tif (zoomBrush.width < threshold && zoomBrush.height < threshold) {\n\t\t\tconst point = this.editor.inputs.currentScreenPoint\n\t\t\tif (this.editor.inputs.altKey) {\n\t\t\t\tthis.editor.zoomOut(point, { duration: 220 })\n\t\t\t} else {\n\t\t\t\tthis.editor.zoomIn(point, { duration: 220 })\n\t\t\t}\n\t\t} else {\n\t\t\tconst zoomLevel = this.editor.inputs.altKey ? this.editor.zoomLevel / 2 : undefined\n\t\t\tthis.editor.zoomToBounds(zoomBrush, zoomLevel, { duration: 220 })\n\t\t}\n\n\t\tthis.parent.transition('idle', this.info)\n\t}\n}\n"], "mappings": "AAAA,SAAS,OAAO,iBAAsD;AAE/D,MAAM,qBAAqB,UAAU;AAAA,EAC3C,OAAgB,KAAK;AAAA,EAErB,OAAO,CAAC;AAAA,EAER,YAAY,IAAI,MAAM;AAAA,EAEb,UAAU,CAAC,SAA4D;AAC/E,SAAK,OAAO;AACZ,SAAK,OAAO;AAAA,EACb;AAAA,EAES,SAAS,MAAM;AACvB,SAAK,OAAO,oBAAoB,EAAE,WAAW,KAAK,CAAC;AAAA,EACpD;AAAA,EAES,gBAAgB,MAAM;AAC9B,SAAK,OAAO;AAAA,EACb;AAAA,EAES,cAA8C,MAAM;AAC5D,SAAK,SAAS;AAAA,EACf;AAAA,EAES,WAAwC,MAAM;AACtD,SAAK,OAAO;AAAA,EACb;AAAA,EAEQ,SAAS;AAChB,UAAM;AAAA,MACL,QAAQ,EAAE,iBAAiB,iBAAiB;AAAA,IAC7C,IAAI,KAAK;AAET,SAAK,UAAU,MAAM,MAAM,WAAW,CAAC,iBAAiB,gBAAgB,CAAC,CAAC;AAC1E,SAAK,OAAO,oBAAoB,EAAE,WAAW,KAAK,UAAU,OAAO,EAAE,CAAC;AAAA,EACvE;AAAA,EAEQ,SAAS;AAChB,SAAK,OAAO,WAAW,QAAQ,KAAK,IAAI;AAAA,EACzC;AAAA,EAEQ,WAAW;AAClB,UAAM,EAAE,UAAU,IAAI;AACtB,UAAM,YAAY,IAAI,KAAK,OAAO;AAElC,QAAI,UAAU,QAAQ,aAAa,UAAU,SAAS,WAAW;AAChE,YAAM,QAAQ,KAAK,OAAO,OAAO;AACjC,UAAI,KAAK,OAAO,OAAO,QAAQ;AAC9B,aAAK,OAAO,QAAQ,OAAO,EAAE,UAAU,IAAI,CAAC;AAAA,MAC7C,OAAO;AACN,aAAK,OAAO,OAAO,OAAO,EAAE,UAAU,IAAI,CAAC;AAAA,MAC5C;AAAA,IACD,OAAO;AACN,YAAM,YAAY,KAAK,OAAO,OAAO,SAAS,KAAK,OAAO,YAAY,IAAI;AAC1E,WAAK,OAAO,aAAa,WAAW,WAAW,EAAE,UAAU,IAAI,CAAC;AAAA,IACjE;AAEA,SAAK,OAAO,WAAW,QAAQ,KAAK,IAAI;AAAA,EACzC;AACD;", "names": [] }