瀏覽代碼

feat: create and expose serializeLibraryAsJSON (#5009)

Co-authored-by: David Luzar <luzar.david@gmail.com>
Achille Lacoin 3 年之前
父節點
當前提交
873afdacd3
共有 4 個文件被更改,包括 19 次插入3 次删除
  1. 6 2
      src/data/json.ts
  2. 1 0
      src/packages/excalidraw/CHANGELOG.md
  3. 11 0
      src/packages/excalidraw/README_NEXT.md
  4. 1 1
      src/packages/utils.ts

+ 6 - 2
src/data/json.ts

@@ -123,14 +123,18 @@ export const isValidLibrary = (json: any) => {
   );
 };
 
-export const saveLibraryAsJSON = async (libraryItems: LibraryItems) => {
+export const serializeLibraryAsJSON = (libraryItems: LibraryItems) => {
   const data: ExportedLibraryData = {
     type: EXPORT_DATA_TYPES.excalidrawLibrary,
     version: VERSIONS.excalidrawLibrary,
     source: EXPORT_SOURCE,
     libraryItems,
   };
-  const serialized = JSON.stringify(data, null, 2);
+  return JSON.stringify(data, null, 2);
+};
+
+export const saveLibraryAsJSON = async (libraryItems: LibraryItems) => {
+  const serialized = serializeLibraryAsJSON(libraryItems);
   await fileSave(
     new Blob([serialized], {
       type: MIME_TYPES.excalidrawlib,

+ 1 - 0
src/packages/excalidraw/CHANGELOG.md

@@ -18,6 +18,7 @@ Please add the latest change on the top under the correct section.
 #### Refactor
 
 - Rename `appState.elementLocked` to `appState.activeTool.locked` [#4983](https://github.com/excalidraw/excalidraw/pull/4983).
+- Expose [`serializeLibraryAsJSON`](https://github.com/excalidraw/excalidraw/blob/master/src/packages/excalidraw/README.md#serializeLibraryAsJSON) helper that we use when saving Excalidraw Library to a file.
 
 ##### BREAKING CHANGE
 

+ 11 - 0
src/packages/excalidraw/README_NEXT.md

@@ -906,6 +906,17 @@ serializeAsJSON({
 
 Takes the scene elements and state and returns a JSON string. Deleted `elements`as well as most properties from `AppState` are removed from the resulting JSON. (see [`serializeAsJSON()`](https://github.com/excalidraw/excalidraw/blob/master/src/data/json.ts#L16) source for details).
 
+#### `serializeLibraryAsJSON`
+
+**_Signature_**
+
+<pre>
+serializeLibraryAsJSON({
+  libraryItems: <a href="https://github.com/excalidraw/excalidraw/blob/master/src/types.ts#L191">LibraryItems[]</a>,
+</pre>
+
+Takes the library items and returns a JSON string.
+
 #### `getSceneVersion`
 
 **How to use**

+ 1 - 1
src/packages/utils.ts

@@ -139,6 +139,6 @@ export const exportToSvg = async ({
   );
 };
 
-export { serializeAsJSON } from "../data/json";
+export { serializeAsJSON, serializeLibraryAsJSON } from "../data/json";
 export { loadFromBlob, loadLibraryFromBlob } from "../data/blob";
 export { getFreeDrawSvgPath } from "../renderer/renderElement";