|  | @@ -5,18 +5,18 @@ import { RoughCanvas } from "roughjs/bin/canvas";
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import "./styles.css";
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -type ExcaliburElement = ReturnType<typeof newElement>;
 | 
	
		
			
				|  |  | -type ExcaliburTextElement = ExcaliburElement & {
 | 
	
		
			
				|  |  | +type ExcalidrawElement = ReturnType<typeof newElement>;
 | 
	
		
			
				|  |  | +type ExcalidrawTextElement = ExcalidrawElement & {
 | 
	
		
			
				|  |  |    type: "text";
 | 
	
		
			
				|  |  |    font: string;
 | 
	
		
			
				|  |  |    text: string;
 | 
	
		
			
				|  |  |    actualBoundingBoxAscent: number;
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -const LOCAL_STORAGE_KEY = "excalibur";
 | 
	
		
			
				|  |  | -const LOCAL_STORAGE_KEY_STATE = "excalibur-state";
 | 
	
		
			
				|  |  | +const LOCAL_STORAGE_KEY = "excalidraw";
 | 
	
		
			
				|  |  | +const LOCAL_STORAGE_KEY_STATE = "excalidraw-state";
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -var elements = Array.of<ExcaliburElement>();
 | 
	
		
			
				|  |  | +var elements = Array.of<ExcalidrawElement>();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // https://stackoverflow.com/a/6853926/232122
 | 
	
		
			
				|  |  |  function distanceBetweenPointAndSegment(
 | 
	
	
		
			
				|  | @@ -57,7 +57,7 @@ function distanceBetweenPointAndSegment(
 | 
	
		
			
				|  |  |    return Math.sqrt(dx * dx + dy * dy);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -function hitTest(element: ExcaliburElement, x: number, y: number): boolean {
 | 
	
		
			
				|  |  | +function hitTest(element: ExcalidrawElement, x: number, y: number): boolean {
 | 
	
		
			
				|  |  |    // For shapes that are composed of lines, we only enable point-selection when the distance
 | 
	
		
			
				|  |  |    // of the click is less than x pixels of any of the lines that the shape is composed of
 | 
	
		
			
				|  |  |    const lineThreshold = 10;
 | 
	
	
		
			
				|  | @@ -248,7 +248,7 @@ function exportAsPNG({
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      // create a temporary <a> elem which we'll use to download the image
 | 
	
		
			
				|  |  |      const link = document.createElement("a");
 | 
	
		
			
				|  |  | -    link.setAttribute("download", "excalibur.png");
 | 
	
		
			
				|  |  | +    link.setAttribute("download", "excalidraw.png");
 | 
	
		
			
				|  |  |      link.setAttribute("href", tempCanvas.toDataURL("image/png"));
 | 
	
		
			
				|  |  |      link.click();
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -273,12 +273,12 @@ function rotate(x1: number, y1: number, x2: number, y2: number, angle: number) {
 | 
	
		
			
				|  |  |  var generator = rough.generator(null, null as any);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  function isTextElement(
 | 
	
		
			
				|  |  | -  element: ExcaliburElement
 | 
	
		
			
				|  |  | -): element is ExcaliburTextElement {
 | 
	
		
			
				|  |  | +  element: ExcalidrawElement
 | 
	
		
			
				|  |  | +): element is ExcalidrawTextElement {
 | 
	
		
			
				|  |  |    return element.type === "text";
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -function getArrowPoints(element: ExcaliburElement) {
 | 
	
		
			
				|  |  | +function getArrowPoints(element: ExcalidrawElement) {
 | 
	
		
			
				|  |  |    const x1 = 0;
 | 
	
		
			
				|  |  |    const y1 = 0;
 | 
	
		
			
				|  |  |    const x2 = element.width;
 | 
	
	
		
			
				|  | @@ -298,7 +298,7 @@ function getArrowPoints(element: ExcaliburElement) {
 | 
	
		
			
				|  |  |    return [x1, y1, x2, y2, x3, y3, x4, y4];
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -function generateDraw(element: ExcaliburElement) {
 | 
	
		
			
				|  |  | +function generateDraw(element: ExcalidrawElement) {
 | 
	
		
			
				|  |  |    if (element.type === "selection") {
 | 
	
		
			
				|  |  |      element.draw = (rc, context) => {
 | 
	
		
			
				|  |  |        const fillStyle = context.fillStyle;
 | 
	
	
		
			
				|  | @@ -369,20 +369,20 @@ function generateDraw(element: ExcaliburElement) {
 | 
	
		
			
				|  |  |  // This set of functions retrieves the absolute position of the 4 points.
 | 
	
		
			
				|  |  |  // We can't just always normalize it since we need to remember the fact that an arrow
 | 
	
		
			
				|  |  |  // is pointing left or right.
 | 
	
		
			
				|  |  | -function getElementAbsoluteX1(element: ExcaliburElement) {
 | 
	
		
			
				|  |  | +function getElementAbsoluteX1(element: ExcalidrawElement) {
 | 
	
		
			
				|  |  |    return element.width >= 0 ? element.x : element.x + element.width;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  | -function getElementAbsoluteX2(element: ExcaliburElement) {
 | 
	
		
			
				|  |  | +function getElementAbsoluteX2(element: ExcalidrawElement) {
 | 
	
		
			
				|  |  |    return element.width >= 0 ? element.x + element.width : element.x;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  | -function getElementAbsoluteY1(element: ExcaliburElement) {
 | 
	
		
			
				|  |  | +function getElementAbsoluteY1(element: ExcalidrawElement) {
 | 
	
		
			
				|  |  |    return element.height >= 0 ? element.y : element.y + element.height;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  | -function getElementAbsoluteY2(element: ExcaliburElement) {
 | 
	
		
			
				|  |  | +function getElementAbsoluteY2(element: ExcalidrawElement) {
 | 
	
		
			
				|  |  |    return element.height >= 0 ? element.y + element.height : element.y;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -function setSelection(selection: ExcaliburElement) {
 | 
	
		
			
				|  |  | +function setSelection(selection: ExcalidrawElement) {
 | 
	
		
			
				|  |  |    const selectionX1 = getElementAbsoluteX1(selection);
 | 
	
		
			
				|  |  |    const selectionX2 = getElementAbsoluteX2(selection);
 | 
	
		
			
				|  |  |    const selectionY1 = getElementAbsoluteY1(selection);
 | 
	
	
		
			
				|  | @@ -427,7 +427,7 @@ function restore() {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      if (savedElements) {
 | 
	
		
			
				|  |  |        elements = JSON.parse(savedElements);
 | 
	
		
			
				|  |  | -      elements.forEach((element: ExcaliburElement) => generateDraw(element));
 | 
	
		
			
				|  |  | +      elements.forEach((element: ExcalidrawElement) => generateDraw(element));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      return savedState ? JSON.parse(savedState) : null;
 | 
	
	
		
			
				|  | @@ -438,7 +438,7 @@ function restore() {
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  type AppState = {
 | 
	
		
			
				|  |  | -  draggingElement: ExcaliburElement | null;
 | 
	
		
			
				|  |  | +  draggingElement: ExcalidrawElement | null;
 | 
	
		
			
				|  |  |    elementType: string;
 | 
	
		
			
				|  |  |    exportBackground: boolean;
 | 
	
		
			
				|  |  |    exportVisibleOnly: boolean;
 |