excali 0.17

This commit is contained in:
zadam 2023-11-20 22:01:22 +01:00
parent 746abb02d3
commit ba67a034e2
3 changed files with 23 additions and 28 deletions

18
package-lock.json generated
View File

@ -1,18 +1,18 @@
{ {
"name": "trilium", "name": "trilium",
"version": "0.62.0-beta", "version": "0.62.1-beta",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "trilium", "name": "trilium",
"version": "0.62.0-beta", "version": "0.62.1-beta",
"hasInstallScript": true, "hasInstallScript": true,
"license": "AGPL-3.0-only", "license": "AGPL-3.0-only",
"dependencies": { "dependencies": {
"@braintree/sanitize-url": "6.0.4", "@braintree/sanitize-url": "6.0.4",
"@electron/remote": "2.0.12", "@electron/remote": "2.0.12",
"@excalidraw/excalidraw": "0.16.1", "@excalidraw/excalidraw": "0.17.0",
"archiver": "6.0.1", "archiver": "6.0.1",
"async-mutex": "0.4.0", "async-mutex": "0.4.0",
"axios": "1.6.1", "axios": "1.6.1",
@ -470,9 +470,9 @@
} }
}, },
"node_modules/@excalidraw/excalidraw": { "node_modules/@excalidraw/excalidraw": {
"version": "0.16.1", "version": "0.17.0",
"resolved": "https://registry.npmjs.org/@excalidraw/excalidraw/-/excalidraw-0.16.1.tgz", "resolved": "https://registry.npmjs.org/@excalidraw/excalidraw/-/excalidraw-0.17.0.tgz",
"integrity": "sha512-4zirHk7dNx6SVq2jQmYOLliqAa1h3WPVqHM5qtJyhD769VsOqwlkopAcnZMb3G1PeIMm6cf2F31quS5MVqvoOQ==", "integrity": "sha512-NzP22v5xMqxYW27ZtTHhiGFe7kE8NeBk45aoeM/mDSkXiOXPDH+PcvwzHRN/Ei+Vj/0sTPHxejn8bZyRWKGjXg==",
"peerDependencies": { "peerDependencies": {
"react": "^17.0.2 || ^18.2.0", "react": "^17.0.2 || ^18.2.0",
"react-dom": "^17.0.2 || ^18.2.0" "react-dom": "^17.0.2 || ^18.2.0"
@ -13929,9 +13929,9 @@
"dev": true "dev": true
}, },
"@excalidraw/excalidraw": { "@excalidraw/excalidraw": {
"version": "0.16.1", "version": "0.17.0",
"resolved": "https://registry.npmjs.org/@excalidraw/excalidraw/-/excalidraw-0.16.1.tgz", "resolved": "https://registry.npmjs.org/@excalidraw/excalidraw/-/excalidraw-0.17.0.tgz",
"integrity": "sha512-4zirHk7dNx6SVq2jQmYOLliqAa1h3WPVqHM5qtJyhD769VsOqwlkopAcnZMb3G1PeIMm6cf2F31quS5MVqvoOQ==", "integrity": "sha512-NzP22v5xMqxYW27ZtTHhiGFe7kE8NeBk45aoeM/mDSkXiOXPDH+PcvwzHRN/Ei+Vj/0sTPHxejn8bZyRWKGjXg==",
"requires": {} "requires": {}
}, },
"@gar/promisify": { "@gar/promisify": {

View File

@ -38,7 +38,7 @@
"dependencies": { "dependencies": {
"@braintree/sanitize-url": "6.0.4", "@braintree/sanitize-url": "6.0.4",
"@electron/remote": "2.0.12", "@electron/remote": "2.0.12",
"@excalidraw/excalidraw": "0.16.1", "@excalidraw/excalidraw": "0.17.0",
"archiver": "6.0.1", "archiver": "6.0.1",
"async-mutex": "0.4.0", "async-mutex": "0.4.0",
"axios": "1.6.1", "axios": "1.6.1",

View File

@ -3,6 +3,7 @@ import TypeWidget from "./type_widget.js";
import utils from '../../services/utils.js'; import utils from '../../services/utils.js';
import linkService from '../../services/link.js'; import linkService from '../../services/link.js';
import debounce from "../../services/debounce.js"; import debounce from "../../services/debounce.js";
import {Excalidraw} from "@excalidraw/excalidraw/types/packages/excalidraw/example/public/excalidraw.development.js";
const {sleep} = utils; const {sleep} = utils;
@ -115,7 +116,6 @@ export default class ExcalidrawTypeWidget extends TypeWidget {
this.currentSceneVersion = this.SCENE_VERSION_INITIAL; this.currentSceneVersion = this.SCENE_VERSION_INITIAL;
// will be overwritten // will be overwritten
this.excalidrawRef;
this.$render; this.$render;
this.$widget; this.$widget;
this.reactHandlers; // used to control react state this.reactHandlers; // used to control react state
@ -179,7 +179,7 @@ export default class ExcalidrawTypeWidget extends TypeWidget {
const blob = await note.getBlob(); const blob = await note.getBlob();
// before we load content into excalidraw, make sure excalidraw has loaded // before we load content into excalidraw, make sure excalidraw has loaded
while (!this.excalidrawRef?.current) { while (!this.excalidrawApi) {
console.log("excalidrawRef not yet loaded, sleep 200ms..."); console.log("excalidrawRef not yet loaded, sleep 200ms...");
await sleep(200); await sleep(200);
} }
@ -199,7 +199,7 @@ export default class ExcalidrawTypeWidget extends TypeWidget {
collaborators: [] collaborators: []
}; };
this.excalidrawRef.current.updateScene(sceneData); this.excalidrawApi.updateScene(sceneData);
} }
else if (blob.content) { else if (blob.content) {
// load saved content into excalidraw canvas // load saved content into excalidraw canvas
@ -246,8 +246,8 @@ export default class ExcalidrawTypeWidget extends TypeWidget {
fileArray.push(file); fileArray.push(file);
} }
this.excalidrawRef.current.updateScene(sceneData); this.excalidrawApi.updateScene(sceneData);
this.excalidrawRef.current.addFiles(fileArray); this.excalidrawApi.addFiles(fileArray);
} }
Promise.all( Promise.all(
@ -260,7 +260,7 @@ export default class ExcalidrawTypeWidget extends TypeWidget {
} }
const libraryItems = blobs.map(blob => blob.getJsonContentSafely()).filter(item => !!item); const libraryItems = blobs.map(blob => blob.getJsonContentSafely()).filter(item => !!item);
this.excalidrawRef.current.updateLibrary({libraryItems, merge: false}); this.excalidrawApi.updateLibrary({libraryItems, merge: false});
}); });
// set initial scene version // set initial scene version
@ -274,14 +274,14 @@ export default class ExcalidrawTypeWidget extends TypeWidget {
* this is automatically called after this.saveData(); * this is automatically called after this.saveData();
*/ */
async getData() { async getData() {
const elements = this.excalidrawRef.current.getSceneElements(); const elements = this.excalidrawApi.getSceneElements();
const appState = this.excalidrawRef.current.getAppState(); const appState = this.excalidrawApi.getAppState();
/** /**
* A file is not deleted, even though removed from canvas. Therefore, we only keep * A file is not deleted, even though removed from canvas. Therefore, we only keep
* files that are referenced by an element. Maybe this will change with a new excalidraw version? * files that are referenced by an element. Maybe this will change with a new excalidraw version?
*/ */
const files = this.excalidrawRef.current.getFiles(); const files = this.excalidrawApi.getFiles();
// parallel svg export to combat bitrot and enable rendering image for note inclusion, preview, and share // parallel svg export to combat bitrot and enable rendering image for note inclusion, preview, and share
const svg = await window.ExcalidrawLib.exportToSvg({ const svg = await window.ExcalidrawLib.exportToSvg({
@ -320,7 +320,7 @@ export default class ExcalidrawTypeWidget extends TypeWidget {
// this.libraryChanged is unset in dataSaved() // this.libraryChanged is unset in dataSaved()
// there's no separate method to get library items, so have to abuse this one // there's no separate method to get library items, so have to abuse this one
const libraryItems = await this.excalidrawRef.current.updateLibrary({merge: true}); const libraryItems = await this.excalidrawApi.updateLibrary({merge: true});
let position = 10; let position = 10;
@ -376,11 +376,6 @@ export default class ExcalidrawTypeWidget extends TypeWidget {
} }
createExcalidrawReactApp() { createExcalidrawReactApp() {
const React = window.React;
const { Excalidraw } = window.ExcalidrawLib;
const excalidrawRef = React.useRef(null);
this.excalidrawRef = excalidrawRef;
const excalidrawWrapperRef = React.useRef(null); const excalidrawWrapperRef = React.useRef(null);
this.excalidrawWrapperRef = excalidrawWrapperRef; this.excalidrawWrapperRef = excalidrawWrapperRef;
const [dimensions, setDimensions] = React.useState({ const [dimensions, setDimensions] = React.useState({
@ -438,7 +433,7 @@ export default class ExcalidrawTypeWidget extends TypeWidget {
React.createElement(Excalidraw, { React.createElement(Excalidraw, {
// this makes sure that 1) manual theme switch button is hidden 2) theme stays as it should after opening menu // this makes sure that 1) manual theme switch button is hidden 2) theme stays as it should after opening menu
theme: this.themeStyle, theme: this.themeStyle,
ref: excalidrawRef, excalidrawAPI: api => { this.excalidrawApi = api; },
width: dimensions.width, width: dimensions.width,
height: dimensions.height, height: dimensions.height,
onPaste: (data, event) => { onPaste: (data, event) => {
@ -482,8 +477,8 @@ export default class ExcalidrawTypeWidget extends TypeWidget {
} }
getSceneVersion() { getSceneVersion() {
if (this.excalidrawRef) { if (this.excalidrawApi) {
const elements = this.excalidrawRef.current.getSceneElements(); const elements = this.excalidrawApi.getSceneElements();
return window.ExcalidrawLib.getSceneVersion(elements); return window.ExcalidrawLib.getSceneVersion(elements);
} else { } else {
return this.SCENE_VERSION_ERROR; return this.SCENE_VERSION_ERROR;