hunk.code_window: RUN apk add git && npm i -g pnpm@7
   COPY . .
   # RUN apk add g++ make python3 git libpng-dev
   RUN pnpm i --frozen-lockfile --store=node_modules/.pnpm-store --filter "!ligo-virgo-e2e" --filter "!keck" --filter "!venus"  && pnpm run build
   FROM node:16-alpine as relocate
   WORKDIR /app
  
hunk.labels: keep keep keep replace keep keep keep
hunk.after_edit: RUN --mount=type=cache,target=/app/node_modules,rw,sharing=private pnpm i  --frozen-lockfile --store=node_modules/.pnpm-store --filter "!ligo-virgo-e2e" --filter "!keck" --filter "!venus"  && pnpm run build
  
hunk.file_path: .github/deployment/Dockerfile-lisa
hunk.type: replace
file: import { TLPointerEventHandler, Utils } from '@tldraw/core';
  import Vec from '@tldraw/vec';
  import { Arrow } from '@toeverything/components/board-shapes';
  import { BaseTool, BaseToolStatus } from '@toeverything/components/board-state';
  import { SessionType, TDShapeType } from '@toeverything/components/board-types';
  
  export class ArrowTool extends BaseTool {
      override type = TDShapeType.Arrow as const;
  
      /* ----------------- Event Handlers ----------------- */
  
      override onPointerDown: TLPointerEventHandler = () => {
          if (this.status !== BaseToolStatus.Idle) return;
  
          const {
              currentPoint,
              currentGrid,
              settings: { showGrid },
              appState: { currentPageId, currentStyle },
              document: { id: workspace },
          } = this.app;
  
          const childIndex = this.getNextChildIndex();
  
          const id = Utils.uniqueId();
  
          const newShape = Arrow.create({
              id,
              parentId: currentPageId,
              childIndex,
              point: showGrid
                  ? Vec.snap(currentPoint, currentGrid)
                  : currentPoint,
              style: { ...currentStyle },
              workspace,
          });
  
          this.app.patchCreate([newShape]);
  
          this.app.startSession(SessionType.Arrow, newShape.id, 'end', true);
  
          this.set_status(BaseToolStatus.Creating);
      };
  }
  