diff --git a/src/element/newElement.ts b/src/element/newElement.ts index b8ab6742..77f282a5 100644 --- a/src/element/newElement.ts +++ b/src/element/newElement.ts @@ -14,20 +14,16 @@ import { newElementWith } from "./mutateElement"; import { getNewGroupIdsForDuplication } from "../groups"; import { AppState } from "../types"; -type ElementConstructorOpts = { - x: ExcalidrawGenericElement["x"]; - y: ExcalidrawGenericElement["y"]; - strokeColor: ExcalidrawGenericElement["strokeColor"]; - backgroundColor: ExcalidrawGenericElement["backgroundColor"]; - fillStyle: ExcalidrawGenericElement["fillStyle"]; - strokeWidth: ExcalidrawGenericElement["strokeWidth"]; - strokeStyle: ExcalidrawGenericElement["strokeStyle"]; - roughness: ExcalidrawGenericElement["roughness"]; - opacity: ExcalidrawGenericElement["opacity"]; - width?: ExcalidrawGenericElement["width"]; - height?: ExcalidrawGenericElement["height"]; - angle?: ExcalidrawGenericElement["angle"]; -}; +type ElementConstructorOpts = MarkOptional< + Omit, + | "width" + | "height" + | "angle" + | "groupIds" + | "seed" + | "version" + | "versionNonce" +>; const _newElementBase = ( type: T["type"], @@ -44,6 +40,7 @@ const _newElementBase = ( width = 0, height = 0, angle = 0, + groupIds = [], ...rest }: ElementConstructorOpts & Omit, "type">, ) => ({ @@ -61,11 +58,11 @@ const _newElementBase = ( strokeStyle, roughness, opacity, + groupIds, seed: rest.seed ?? randomInteger(), version: rest.version || 1, versionNonce: rest.versionNonce ?? 0, isDeleted: false as false, - groupIds: [], }); export const newElement = ( diff --git a/src/global.d.ts b/src/global.d.ts index 59672b74..7046dae3 100644 --- a/src/global.d.ts +++ b/src/global.d.ts @@ -25,3 +25,6 @@ type ResolutionType any> = T extends ( ) => Promise ? R : any; + +// https://github.com/krzkaczor/ts-essentials +type MarkOptional = Omit & Partial>;