diff --git a/src/packages/excalidraw/CHANGELOG.md b/src/packages/excalidraw/CHANGELOG.md index 2e6e043ac..969e7189b 100644 --- a/src/packages/excalidraw/CHANGELOG.md +++ b/src/packages/excalidraw/CHANGELOG.md @@ -15,6 +15,11 @@ Please add the latest change on the top under the correct section. ### Excalidraw API +#### Features + +- Added [`compressData`](https://github.com/excalidraw/excalidraw/blob/master/src/packages/excalidraw/README.md#compressData) and [`decompressData`](https://github.com/excalidraw/excalidraw/blob/master/src/packages/excalidraw/README.md#decompressData) +- Added [`generateEncryptionKey`](https://github.com/excalidraw/excalidraw/blob/master/src/packages/excalidraw/README.md#generateEncryptionKey) + #### Breaking Changes - `setToastMessage` API is now renamed to `setToast` API and the function signature is also updated [#5427](https://github.com/excalidraw/excalidraw/pull/5427). You can also pass `duration` and `closable` attributes along with `message`. diff --git a/src/packages/excalidraw/README.md b/src/packages/excalidraw/README.md index 3025a9da4..47bae6d12 100644 --- a/src/packages/excalidraw/README.md +++ b/src/packages/excalidraw/README.md @@ -1150,6 +1150,29 @@ loadSceneOrLibraryFromBlob( This function loads either scene or library data from the supplied blob. If the blob contains scene data, and you pass `localAppState`, `localAppState` value will be preferred over the `appState` derived from `blob`. Throws if blob doesn't contain neither valid scene data or library data. +#### `compressData` + +```js +const encrytionKey = generateEncryptionKey(); + +const buffer = await compressData( + new TextEncoder().encode( + serializeAsJSON(elements, appState, files, "database"), + ), + { encryptionKey }, +); +``` + +#### `decompressData` + +```js +const { data: decodedBuffer } = await decompressData(new Uint8Array(payload), { + decryptionKey, +}); +``` + +#### `generateEncryptionKey` + #### `getFreeDrawSvgPath` **How to use** diff --git a/src/packages/excalidraw/index.tsx b/src/packages/excalidraw/index.tsx index 7e0798f4d..a84b28d7a 100644 --- a/src/packages/excalidraw/index.tsx +++ b/src/packages/excalidraw/index.tsx @@ -206,6 +206,9 @@ export { getFreeDrawSvgPath, exportToClipboard, mergeLibraryItems, + generateEncryptionKey, + compressData, + decompressData, } from "../../packages/utils"; export { isLinearElement } from "../../element/typeChecks"; diff --git a/src/packages/utils.ts b/src/packages/utils.ts index 4d9a8af17..fa32d4014 100644 --- a/src/packages/utils.ts +++ b/src/packages/utils.ts @@ -193,6 +193,8 @@ export const exportToClipboard = async ( } }; +export { decompressData, compressData } from "../data/encode"; +export { generateEncryptionKey } from "../data/encryption"; export { serializeAsJSON, serializeLibraryAsJSON } from "../data/json"; export { loadFromBlob,