Compare commits

...

1 Commits

Author SHA1 Message Date
zsviczian
5c709588dd 2.6.0-beta-1, 0.17.6-6, embedded file loader batching 2024-10-23 22:23:24 +02:00
7 changed files with 31 additions and 17 deletions

Binary file not shown.

View File

@@ -1,7 +1,7 @@
{
"id": "obsidian-excalidraw-plugin",
"name": "Excalidraw",
"version": "2.5.3-beta-5",
"version": "2.6.0-beta-1",
"minAppVersion": "1.1.6",
"description": "An Obsidian plugin to edit and view Excalidraw drawings",
"author": "Zsolt Viczian",

View File

@@ -19,7 +19,7 @@
"license": "MIT",
"dependencies": {
"@popperjs/core": "^2.11.8",
"@zsviczian/excalidraw": "0.17.6-4",
"@zsviczian/excalidraw": "0.17.6-6",
"chroma-js": "^2.4.2",
"clsx": "^2.0.0",
"@zsviczian/colormaster": "^1.2.2",

View File

@@ -608,7 +608,9 @@ export class EmbeddedFilesLoader {
this.isDark = excalidrawData?.scene?.appState?.theme === "dark";
}
let entry: IteratorResult<[FileId, EmbeddedFile]>;
const files: FileData[] = [];
const files: FileData[][] = [];
files.push([]);
let batch = 0;
function* loadIterator():Generator<Promise<void>> {
while (!(entry = entries.next()).done) {
@@ -632,13 +634,13 @@ export class EmbeddedFilesLoader {
hasSVGwithBitmap: data.hasSVGwithBitmap,
shouldScale: embeddedFile.shouldScale()
};
try {
files[batch].push(fileData);
/* try {
addFiles([fileData], this.isDark, false);
}
catch(e) {
errorlog({ where: "EmbeddedFileLoader.loadSceneFiles", error: e });
}
//files.push(fileData);
}*/
}
} else if (embeddedFile.isSVGwithBitmap && (depth !== 0 || isThemeChange)) {
//this will reload the image in light/dark mode when switching themes
@@ -651,13 +653,13 @@ export class EmbeddedFilesLoader {
hasSVGwithBitmap: embeddedFile.isSVGwithBitmap,
shouldScale: embeddedFile.shouldScale()
};
//files.push(fileData);
try {
files[batch].push(fileData);
/* try {
addFiles([fileData], this.isDark, false);
}
catch(e) {
errorlog({ where: "EmbeddedFileLoader.loadSceneFiles", error: e });
}
}*/
}
});
}
@@ -685,7 +687,7 @@ export class EmbeddedFilesLoader {
hasSVGwithBitmap: false,
shouldScale: true
};
files.push(fileData);
files[batch].push(fileData);
}
}
});
@@ -713,7 +715,7 @@ export class EmbeddedFilesLoader {
shouldScale: true,
size: await getImageSize(result.files[key].dataURL),
};
files.push(fileData);
files[batch].push(fileData);
}
return;
}
@@ -741,7 +743,7 @@ export class EmbeddedFilesLoader {
size,
shouldScale: true,
};
files.push(fileData);
files[batch].push(fileData);
}
return;
}
@@ -750,9 +752,25 @@ export class EmbeddedFilesLoader {
};
}
const addFilesTimer = setInterval(() => {
if(files[batch].length === 0) {
return;
}
try {
addFiles(files[batch], this.isDark, false);
}
catch(e) {
errorlog({ where: "EmbeddedFileLoader.loadSceneFiles", error: e });
}
files.push([]);
batch++;
}, 1200);
const iterator = loadIterator.bind(this)();
const concurency = 5;
await new PromisePool(iterator, concurency).all();
clearInterval(addFilesTimer);
this.emptyPDFDocsMap();
if (this.terminate) {
@@ -761,7 +779,7 @@ export class EmbeddedFilesLoader {
//debug({where:"EmbeddedFileLoader.loadSceneFiles",uid:this.uid,status:"add Files"});
try {
//in try block because by the time files are loaded the user may have closed the view
addFiles(files, this.isDark, true);
addFiles(files[batch], this.isDark, true);
} catch (e) {
errorlog({ where: "EmbeddedFileLoader.loadSceneFiles", error: e });
}

View File

@@ -189,6 +189,5 @@ declare namespace ExcalidrawLib {
): string;
function safelyParseJSON (json: string): Record<string, any> | null;
function loadSceneFonts(elements: NonDeletedExcalidrawElement[]): Promise<void>;
function initializeObsidianUtils(obsidianPlugin: ExcalidrawPlugin): void;
}

View File

@@ -104,7 +104,6 @@ export const {
refreshTextDimensions,
getCSSFontDefinition,
loadSceneFonts,
initializeObsidianUtils,
} = excalidrawLib;
export const FONTS_STYLE_ID = "excalidraw-custom-fonts";

View File

@@ -45,7 +45,6 @@ import {
DEVICE,
sceneCoordsToViewportCoords,
FONTS_STYLE_ID,
initializeObsidianUtils,
} from "./constants/constants";
import ExcalidrawView, { TextMode, getTextMode } from "./ExcalidrawView";
import {
@@ -205,7 +204,6 @@ export default class ExcalidrawPlugin extends Plugin {
this.equationsMaster = new Map<FileId, string>();
this.mermaidsMaster = new Map<FileId, string>();
setExcalidrawPlugin(this);
initializeObsidianUtils(this);
/*if((process.env.NODE_ENV === 'development')) {
this.slob = new Array(200 * 1024 * 1024 + 1).join('A'); // Create a 200MB blob
}*/