|
|
|
@ -4,6 +4,8 @@ import {
|
|
|
|
|
ExcalidrawTextElement,
|
|
|
|
|
ExcalidrawLinearElement,
|
|
|
|
|
ExcalidrawFreeDrawElement,
|
|
|
|
|
ExcalidrawImageElement,
|
|
|
|
|
FileId,
|
|
|
|
|
} from "../../element/types";
|
|
|
|
|
import { newElement, newTextElement, newLinearElement } from "../../element";
|
|
|
|
|
import { DEFAULT_VERTICAL_ALIGN } from "../../constants";
|
|
|
|
@ -13,7 +15,7 @@ import fs from "fs";
|
|
|
|
|
import util from "util";
|
|
|
|
|
import path from "path";
|
|
|
|
|
import { getMimeType } from "../../data/blob";
|
|
|
|
|
import { newFreeDrawElement } from "../../element/newElement";
|
|
|
|
|
import { newFreeDrawElement, newImageElement } from "../../element/newElement";
|
|
|
|
|
import { Point } from "../../types";
|
|
|
|
|
import { getSelectedElements } from "../../scene/selection";
|
|
|
|
|
|
|
|
|
@ -77,6 +79,7 @@ export class API {
|
|
|
|
|
y?: number;
|
|
|
|
|
height?: number;
|
|
|
|
|
width?: number;
|
|
|
|
|
angle?: number;
|
|
|
|
|
id?: string;
|
|
|
|
|
isDeleted?: boolean;
|
|
|
|
|
groupIds?: string[];
|
|
|
|
@ -103,12 +106,17 @@ export class API {
|
|
|
|
|
: never;
|
|
|
|
|
points?: T extends "arrow" | "line" ? readonly Point[] : never;
|
|
|
|
|
locked?: boolean;
|
|
|
|
|
fileId?: T extends "image" ? string : never;
|
|
|
|
|
scale?: T extends "image" ? ExcalidrawImageElement["scale"] : never;
|
|
|
|
|
status?: T extends "image" ? ExcalidrawImageElement["status"] : never;
|
|
|
|
|
}): T extends "arrow" | "line"
|
|
|
|
|
? ExcalidrawLinearElement
|
|
|
|
|
: T extends "freedraw"
|
|
|
|
|
? ExcalidrawFreeDrawElement
|
|
|
|
|
: T extends "text"
|
|
|
|
|
? ExcalidrawTextElement
|
|
|
|
|
: T extends "image"
|
|
|
|
|
? ExcalidrawImageElement
|
|
|
|
|
: ExcalidrawGenericElement => {
|
|
|
|
|
let element: Mutable<ExcalidrawElement> = null!;
|
|
|
|
|
|
|
|
|
@ -117,6 +125,7 @@ export class API {
|
|
|
|
|
const base = {
|
|
|
|
|
x,
|
|
|
|
|
y,
|
|
|
|
|
angle: rest.angle ?? 0,
|
|
|
|
|
strokeColor: rest.strokeColor ?? appState.currentItemStrokeColor,
|
|
|
|
|
backgroundColor:
|
|
|
|
|
rest.backgroundColor ?? appState.currentItemBackgroundColor,
|
|
|
|
@ -167,12 +176,23 @@ export class API {
|
|
|
|
|
...base,
|
|
|
|
|
width,
|
|
|
|
|
height,
|
|
|
|
|
type: type as "arrow" | "line",
|
|
|
|
|
type,
|
|
|
|
|
startArrowhead: null,
|
|
|
|
|
endArrowhead: null,
|
|
|
|
|
points: rest.points ?? [],
|
|
|
|
|
});
|
|
|
|
|
break;
|
|
|
|
|
case "image":
|
|
|
|
|
element = newImageElement({
|
|
|
|
|
...base,
|
|
|
|
|
width,
|
|
|
|
|
height,
|
|
|
|
|
type,
|
|
|
|
|
fileId: (rest.fileId as string as FileId) ?? null,
|
|
|
|
|
status: rest.status || "saved",
|
|
|
|
|
scale: rest.scale || [1, 1],
|
|
|
|
|
});
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
if (id) {
|
|
|
|
|
element.id = id;
|
|
|
|
|