mirror of
				https://github.com/zadam/trilium.git
				synced 2025-11-04 13:39:01 +01:00 
			
		
		
		
	minor canvas note cleanup
This commit is contained in:
		
							parent
							
								
									a1d1b4580a
								
							
						
					
					
						commit
						2085dc5ed4
					
				@ -85,7 +85,7 @@
 | 
			
		||||
  },
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "cross-env": "7.0.3",
 | 
			
		||||
    "electron": "16.2.6",
 | 
			
		||||
    "electron": "16.2.7",
 | 
			
		||||
    "electron-builder": "23.0.3",
 | 
			
		||||
    "electron-packager": "15.5.1",
 | 
			
		||||
    "electron-rebuild": "3.2.7",
 | 
			
		||||
 | 
			
		||||
@ -95,7 +95,6 @@ export default class ExcalidrawTypeWidget extends TypeWidget {
 | 
			
		||||
        // will be overwritten
 | 
			
		||||
        this.excalidrawRef;
 | 
			
		||||
        this.$render;
 | 
			
		||||
        this.renderElement;
 | 
			
		||||
        this.$widget;
 | 
			
		||||
        this.reactHandlers; // used to control react state
 | 
			
		||||
 | 
			
		||||
@ -104,40 +103,31 @@ export default class ExcalidrawTypeWidget extends TypeWidget {
 | 
			
		||||
        this.isNewSceneVersion = this.isNewSceneVersion.bind(this);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * (trilium)
 | 
			
		||||
     * @returns {string} "canvas"
 | 
			
		||||
     */
 | 
			
		||||
    static getType() {
 | 
			
		||||
        return "canvas";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * (trilium)
 | 
			
		||||
     * renders note
 | 
			
		||||
     */
 | 
			
		||||
    doRender() {
 | 
			
		||||
        this.$widget = $(TPL);
 | 
			
		||||
 | 
			
		||||
        this.$widget.toggleClass("full-height", true); // only add
 | 
			
		||||
        this.$render = this.$widget.find('.canvas-render');
 | 
			
		||||
        this.renderElement = this.$render.get(0);
 | 
			
		||||
 | 
			
		||||
        libraryLoader
 | 
			
		||||
            .requireLibrary(libraryLoader.EXCALIDRAW)
 | 
			
		||||
            .then(() => {
 | 
			
		||||
                const React = window.React;
 | 
			
		||||
                const ReactDOM = window.ReactDOM;
 | 
			
		||||
                const renderElement = this.$render.get(0);
 | 
			
		||||
 | 
			
		||||
                ReactDOM.unmountComponentAtNode(this.renderElement);
 | 
			
		||||
                ReactDOM.render(React.createElement(this.createExcalidrawReactApp), this.renderElement);
 | 
			
		||||
            })
 | 
			
		||||
                ReactDOM.unmountComponentAtNode(renderElement);
 | 
			
		||||
                ReactDOM.render(React.createElement(this.createExcalidrawReactApp), renderElement);
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
        return this.$widget;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * (trilium)
 | 
			
		||||
     * called to populate the widget container with the note content
 | 
			
		||||
     *
 | 
			
		||||
     * @param {note} note
 | 
			
		||||
@ -166,7 +156,7 @@ export default class ExcalidrawTypeWidget extends TypeWidget {
 | 
			
		||||
         * note into this fresh note. Probably due to that this note-instance does not get
 | 
			
		||||
         * newly instantiated?
 | 
			
		||||
         */
 | 
			
		||||
        if (this.excalidrawRef.current && noteComplement.content === "") {
 | 
			
		||||
        if (this.excalidrawRef.current && noteComplement.content?.trim() === "") {
 | 
			
		||||
            const sceneData = {
 | 
			
		||||
                elements: [],
 | 
			
		||||
                appState: {},
 | 
			
		||||
@ -175,16 +165,9 @@ export default class ExcalidrawTypeWidget extends TypeWidget {
 | 
			
		||||
 | 
			
		||||
            this.excalidrawRef.current.updateScene(sceneData);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * load saved content into excalidraw canvas
 | 
			
		||||
         */
 | 
			
		||||
        else if (this.excalidrawRef.current && noteComplement.content) {
 | 
			
		||||
            let content ={
 | 
			
		||||
                elements: [],
 | 
			
		||||
                appState: [],
 | 
			
		||||
                files: [],
 | 
			
		||||
            };
 | 
			
		||||
            // load saved content into excalidraw canvas
 | 
			
		||||
            let content;
 | 
			
		||||
 | 
			
		||||
            try {
 | 
			
		||||
                content = JSON.parse(noteComplement.content || "");
 | 
			
		||||
@ -192,6 +175,12 @@ export default class ExcalidrawTypeWidget extends TypeWidget {
 | 
			
		||||
                console.error("Error parsing content. Probably note.type changed",
 | 
			
		||||
                              "Starting with empty canvas"
 | 
			
		||||
                              , note, noteComplement, err);
 | 
			
		||||
 | 
			
		||||
                content = {
 | 
			
		||||
                    elements: [],
 | 
			
		||||
                    appState: [],
 | 
			
		||||
                    files: [],
 | 
			
		||||
                };
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            const {elements, appState, files} = content;
 | 
			
		||||
@ -225,8 +214,6 @@ export default class ExcalidrawTypeWidget extends TypeWidget {
 | 
			
		||||
                fileArray.push(file);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            this.sceneVersion = window.Excalidraw.getSceneVersion(elements);
 | 
			
		||||
 | 
			
		||||
            this.excalidrawRef.current.updateScene(sceneData);
 | 
			
		||||
            this.excalidrawRef.current.addFiles(fileArray);
 | 
			
		||||
        }
 | 
			
		||||
@ -238,7 +225,6 @@ export default class ExcalidrawTypeWidget extends TypeWidget {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * (trilium)
 | 
			
		||||
     * gets data from widget container that will be sent via spacedUpdate.scheduleUpdate();
 | 
			
		||||
     * this is automatically called after this.saveData();
 | 
			
		||||
     */
 | 
			
		||||
@ -285,13 +271,10 @@ export default class ExcalidrawTypeWidget extends TypeWidget {
 | 
			
		||||
            svg: svgSafeString, // not needed for excalidraw, used for note_short, content, and image api
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        const contentString = JSON.stringify(content);
 | 
			
		||||
 | 
			
		||||
        return contentString;
 | 
			
		||||
        return JSON.stringify(content);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * (trilium)
 | 
			
		||||
     * save content to backend
 | 
			
		||||
     * spacedUpdate is kind of a debouncer.
 | 
			
		||||
     */
 | 
			
		||||
@ -300,8 +283,6 @@ export default class ExcalidrawTypeWidget extends TypeWidget {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    onChangeHandler() {
 | 
			
		||||
        const appState = this.excalidrawRef.current.getAppState() || {};
 | 
			
		||||
 | 
			
		||||
        // changeHandler is called upon any tiny change in excalidraw. button clicked, hover, etc.
 | 
			
		||||
        // make sure only when a new element is added, we actually save something.
 | 
			
		||||
        const isNewSceneVersion = this.isNewSceneVersion();
 | 
			
		||||
@ -336,11 +317,6 @@ export default class ExcalidrawTypeWidget extends TypeWidget {
 | 
			
		||||
            height: undefined
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        const [viewModeEnabled, setViewModeEnabled] = React.useState(false);
 | 
			
		||||
        const [zenModeEnabled, setZenModeEnabled] = React.useState(false);
 | 
			
		||||
        const [gridModeEnabled, setGridModeEnabled] = React.useState(false);
 | 
			
		||||
        const [synchronized, setSynchronized] = React.useState(true);
 | 
			
		||||
        
 | 
			
		||||
        React.useEffect(() => {
 | 
			
		||||
            const dimensions = {
 | 
			
		||||
                width: excalidrawWrapperRef.current.getBoundingClientRect().width,
 | 
			
		||||
@ -401,9 +377,9 @@ export default class ExcalidrawTypeWidget extends TypeWidget {
 | 
			
		||||
                    onCollabButtonClick: () => {
 | 
			
		||||
                        window.alert("You clicked on collab button. No collaboration is implemented.");
 | 
			
		||||
                    },
 | 
			
		||||
                    viewModeEnabled: viewModeEnabled,
 | 
			
		||||
                    zenModeEnabled: zenModeEnabled,
 | 
			
		||||
                    gridModeEnabled: gridModeEnabled,
 | 
			
		||||
                    viewModeEnabled: false,
 | 
			
		||||
                    zenModeEnabled: false,
 | 
			
		||||
                    gridModeEnabled: false,
 | 
			
		||||
                    isCollaborating: false,
 | 
			
		||||
                    detectScroll: false,
 | 
			
		||||
                    handleKeyboardGlobally: false,
 | 
			
		||||
@ -432,8 +408,7 @@ export default class ExcalidrawTypeWidget extends TypeWidget {
 | 
			
		||||
    getSceneVersion() {
 | 
			
		||||
        if (this.excalidrawRef) {
 | 
			
		||||
            const elements = this.excalidrawRef.current.getSceneElements();
 | 
			
		||||
            const sceneVersion = window.Excalidraw.getSceneVersion(elements);
 | 
			
		||||
            return sceneVersion;
 | 
			
		||||
            return window.Excalidraw.getSceneVersion(elements);
 | 
			
		||||
        } else {
 | 
			
		||||
            return this.SCENE_VERSION_ERROR;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user