|
@@ -0,0 +1,75 @@
|
|
|
+# JSON Schema
|
|
|
+
|
|
|
+The Excalidraw data format uses plaintext JSON.
|
|
|
+
|
|
|
+## Excalidraw files
|
|
|
+
|
|
|
+When saving an Excalidraw scene locally to a file, the JSON file (`.excalidraw`) is using the below format.
|
|
|
+
|
|
|
+### Attributes
|
|
|
+
|
|
|
+| Attribute | Description | Value |
|
|
|
+| --- | --- | --- |
|
|
|
+| `type` | The type of the Excalidraw schema | `"excalidraw"` |
|
|
|
+| `version` | The version of the Excalidraw schema | number |
|
|
|
+| `source` | The source URL of the Excalidraw application | `"https://excalidraw.com"` |
|
|
|
+| `elements` | An array of objects representing excalidraw elements on canvas | Array containing excalidraw element objects |
|
|
|
+| `appState` | Additional application state/configuration | Object containing application state properties |
|
|
|
+| `files` | Data for excalidraw `image` elements | Object containing image data |
|
|
|
+
|
|
|
+### JSON Schema example
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ // schema information
|
|
|
+ "type": "excalidraw",
|
|
|
+ "version": 2,
|
|
|
+ "source": "https://excalidraw.com",
|
|
|
+
|
|
|
+ // elements on canvas
|
|
|
+ "elements": [
|
|
|
+ // example element
|
|
|
+ {
|
|
|
+ "id": "pologsyG-tAraPgiN9xP9b",
|
|
|
+ "type": "rectangle",
|
|
|
+ "x": 928,
|
|
|
+ "y": 319,
|
|
|
+ "width": 134,
|
|
|
+ "height": 90
|
|
|
+ /* ...other element properties */
|
|
|
+ }
|
|
|
+ /* other elements */
|
|
|
+ ],
|
|
|
+
|
|
|
+ // editor state (canvas config, preferences, ...)
|
|
|
+ "appState": {
|
|
|
+ "gridSize": null,
|
|
|
+ "viewBackgroundColor": "#ffffff"
|
|
|
+ },
|
|
|
+
|
|
|
+ // files data for "image" elements, using format `{ [fileId]: fileData }`
|
|
|
+ "files": {
|
|
|
+ // example of an image data object
|
|
|
+ "3cebd7720911620a3938ce77243696149da03861": {
|
|
|
+ "mimeType": "image/png",
|
|
|
+ "id": "3cebd7720911620a3938c.77243626149da03861",
|
|
|
+ "dataURL": "data:image/png;base64,iVBORWOKGgoAAAANSUhEUgA=",
|
|
|
+ "created": 1690295874454,
|
|
|
+ "lastRetrieved": 1690295874454
|
|
|
+ }
|
|
|
+ /* ...other image data objects */
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+## Excalidraw clipboard format
|
|
|
+
|
|
|
+When copying selected excalidraw elements to clipboard, the JSON schema is similar to `.excalidraw` format, except it differs in attributes.
|
|
|
+
|
|
|
+### Attributes
|
|
|
+
|
|
|
+| Attribute | Description | Example Value |
|
|
|
+| --- | --- | --- |
|
|
|
+| `type` | The type of the Excalidraw document. | "excalidraw/clipboard" |
|
|
|
+| `elements` | An array of objects representing excalidraw elements on canvas. | Array containing excalidraw element objects (see example below) |
|
|
|
+| `files` | Data for excalidraw `image` elements. | Object containing image data |
|