diff --git a/src/Container.ts b/src/Container.ts index a6bfb1f0..10f99292 100644 --- a/src/Container.ts +++ b/src/Container.ts @@ -270,7 +270,7 @@ export abstract class Container< obj.children = []; this.getChildren().forEach((child) => { - obj.children.push(child.toObject()); + obj.children!.push(child.toObject()); }); return obj; diff --git a/src/Node.ts b/src/Node.ts index dd044e47..ae4ac02e 100644 --- a/src/Node.ts +++ b/src/Node.ts @@ -60,6 +60,8 @@ export interface NodeConfig { opacity?: number; scale?: Vector2d; scaleX?: number; + skewX?: number; + skewY?: number; scaleY?: number; rotation?: number; rotationDeg?: number; @@ -911,7 +913,7 @@ export abstract class Node { * @returns {Object} */ getAttrs() { - return this.attrs || {}; + return (this.attrs || {}) as Config & Record; } /** * set multiple attrs at once using an object literal @@ -1481,15 +1483,21 @@ export abstract class Node { * @returns {Object} */ toObject() { - var obj = {} as any, - attrs = this.getAttrs(), + var attrs = this.getAttrs() as any, key, val, getter, defaultValue, nonPlainObject; - obj.attrs = {}; + const obj: { + attrs: Config & Record; + className: string; + children?: Array; + } = { + attrs: {} as Config & Record, + className: this.getClassName(), + }; for (key in attrs) { val = attrs[key]; @@ -1507,12 +1515,11 @@ export abstract class Node { // restore attr value attrs[key] = val; if (defaultValue !== val) { - obj.attrs[key] = val; + (obj.attrs as any)[key] = val; } } - obj.className = this.getClassName(); - return Util._prepareToStringify(obj); + return Util._prepareToStringify(obj) as typeof obj; } /** * convert Node into a JSON string. Returns a JSON string. @@ -2088,10 +2095,14 @@ export abstract class Node { try { const callback = config?.callback; if (callback) delete config.callback; - this.toCanvas(config).toBlob((blob) => { - resolve(blob); - callback?.(blob); - }, config?.mimeType, config?.quality); + this.toCanvas(config).toBlob( + (blob) => { + resolve(blob); + callback?.(blob); + }, + config?.mimeType, + config?.quality + ); } catch (err) { reject(err); } diff --git a/src/Util.ts b/src/Util.ts index 60b54f88..94102d64 100644 --- a/src/Util.ts +++ b/src/Util.ts @@ -933,7 +933,7 @@ export const Util = { }); return newStart; }, - _prepareToStringify(obj) { + _prepareToStringify(obj: any): T | null { var desc; obj.visitedByCircularReferenceRemoval = true;