| 
					
				 | 
			
			
				@@ -0,0 +1,58 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import React from "react"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { render, GlobalTestState } from "./test-utils"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import ExcalidrawApp from "../excalidraw-app"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { KEYS } from "../keys"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { Keyboard, Pointer, UI } from "./helpers/ui"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { CURSOR_TYPE } from "../constants"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const { h } = window; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const mouse = new Pointer("mouse"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const touch = new Pointer("touch"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const pen = new Pointer("pen"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const pointerTypes = [mouse, touch, pen]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+describe("view mode", () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  beforeEach(async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    await render(<ExcalidrawApp />); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  it("after switching to view mode – cursor type should be pointer", async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    h.setState({ viewModeEnabled: true }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    expect(GlobalTestState.canvas.style.cursor).toBe(CURSOR_TYPE.GRAB); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  it("after switching to view mode, moving, clicking, and pressing space key – cursor type should be pointer", async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    h.setState({ viewModeEnabled: true }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    pointerTypes.forEach((pointerType) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const pointer = pointerType; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      pointer.reset(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      pointer.move(100, 100); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      pointer.click(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      Keyboard.keyPress(KEYS.SPACE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      expect(GlobalTestState.canvas.style.cursor).toBe(CURSOR_TYPE.GRAB); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  it("cursor should stay as grabbing type when hovering over canvas elements", async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // create a rectangle, then hover over it – cursor should be 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // move type for mouse and grab for touch & pen 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // then switch to view-mode and cursor should be grabbing type 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    UI.createElement("rectangle", { size: 100 }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    pointerTypes.forEach((pointerType) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const pointer = pointerType; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      pointer.moveTo(50, 50); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // eslint-disable-next-line dot-notation 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (pointerType["pointerType"] === "mouse") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        expect(GlobalTestState.canvas.style.cursor).toBe(CURSOR_TYPE.MOVE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        expect(GlobalTestState.canvas.style.cursor).toBe(CURSOR_TYPE.GRAB); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      h.setState({ viewModeEnabled: true }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      expect(GlobalTestState.canvas.style.cursor).toBe(CURSOR_TYPE.GRAB); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}); 
			 |