From 6592517122a47ef786bc560568100edd84982562 Mon Sep 17 00:00:00 2001 From: dwelle Date: Mon, 22 Nov 2021 22:11:10 +0100 Subject: [PATCH] import lazily --- src/data/image.ts | 12 +++++++++--- src/element/image.ts | 6 +++--- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/data/image.ts b/src/data/image.ts index 7ae52cd9c..1390e4f95 100644 --- a/src/data/image.ts +++ b/src/data/image.ts @@ -1,10 +1,12 @@ -import decodePng from "png-chunks-extract"; +import extractPngChunks from "png-chunks-extract"; import tEXt from "png-chunk-text"; import encodePng from "png-chunks-encode"; import { stringToBase64, encode, decode, base64ToString } from "./encode"; import { EXPORT_DATA_TYPES, MIME_TYPES } from "../constants"; import { PngChunk } from "../types"; +export { extractPngChunks }; + // ----------------------------------------------------------------------------- // PNG // ----------------------------------------------------------------------------- @@ -29,7 +31,9 @@ const blobToArrayBuffer = (blob: Blob): Promise => { export const getTEXtChunk = async ( blob: Blob, ): Promise<{ keyword: string; text: string } | null> => { - const chunks = decodePng(new Uint8Array(await blobToArrayBuffer(blob))); + const chunks = extractPngChunks( + new Uint8Array(await blobToArrayBuffer(blob)), + ); const metadataChunk = chunks.find((chunk) => chunk.name === "tEXt"); if (metadataChunk) { return tEXt.decode(metadataChunk.data); @@ -66,7 +70,9 @@ export const encodePngMetadata = async ({ blob: Blob; metadata: string; }) => { - const chunks = decodePng(new Uint8Array(await blobToArrayBuffer(blob))); + const chunks = extractPngChunks( + new Uint8Array(await blobToArrayBuffer(blob)), + ); const metadataChunk = tEXt.encode( MIME_TYPES.excalidraw, diff --git a/src/element/image.ts b/src/element/image.ts index 9c5f409a1..2a975eba2 100644 --- a/src/element/image.ts +++ b/src/element/image.ts @@ -12,8 +12,6 @@ import { FileId, InitializedExcalidrawImageElement, } from "./types"; -import decodePng from "png-chunks-extract"; -import { findPngChunk } from "../data/image"; export const loadHTMLImageElement = (dataURL: DataURL) => { return new Promise((resolve, reject) => { @@ -154,8 +152,10 @@ export const hasTransparentPixels = async (imageFile: Blob | File) => { return false; } + const { findPngChunk, extractPngChunks } = await import("../data/image"); + const buffer = await imageFile.arrayBuffer(); - const chunks = decodePng(new Uint8Array(buffer)); + const chunks = extractPngChunks(new Uint8Array(buffer)); // early exit if tRNS not found and IHDR states no support for alpha // -----------------------------------------------------------------------