diff --git a/manifest-beta.json b/manifest-beta.json index 6b97a44..b1d23df 100644 --- a/manifest-beta.json +++ b/manifest-beta.json @@ -1,7 +1,7 @@ { "id": "obsidian-excalidraw-plugin", "name": "Excalidraw", - "version": "2.8.0-beta-3", + "version": "2.8.0-beta-4", "minAppVersion": "1.1.6", "description": "An Obsidian plugin to edit and view Excalidraw drawings", "author": "Zsolt Viczian", diff --git a/src/constants/assets/startupScript.md b/src/constants/assets/startupScript.md index 8bace30..d782044 100644 --- a/src/constants/assets/startupScript.md +++ b/src/constants/assets/startupScript.md @@ -138,7 +138,7 @@ * drawingFilePath: string; // The full filepath of the Excalidraw file where the image is being used. * }) => string = null; */ -//ea.onImageFileNameHook = (data) => {}; +//ea.onImageFilePathHook = (data) => {}; /** * If set, this callback is triggered whenever the active canvas color changes diff --git a/src/constants/starutpscript.ts b/src/constants/starutpscript.ts index ce02f03..d18a2b0 100644 --- a/src/constants/starutpscript.ts +++ b/src/constants/starutpscript.ts @@ -7,4 +7,4 @@ window.navigator.clipboard.writeText(`export const startupScript = () => atob("$ console.log("String copied to clipboard"); */ -export const startupScript = () => atob("LyoKI2V4Y2x1ZGUKYGBganMqLwovKioKICogSWYgc2V0LCB0aGlzIGNhbGxiYWNrIGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIGNsb3NlcyBhbiBFeGNhbGlkcmF3IHZpZXcuCiAqICAgb25WaWV3VW5sb2FkSG9vazogKHZpZXc6IEV4Y2FsaWRyYXdWaWV3KSA9PiB2b2lkID0gbnVsbDsKICovCi8vZWEub25WaWV3VW5sb2FkSG9vayA9ICh2aWV3KSA9PiB7fTsKCi8qKgogKiBJZiBzZXQsIHRoaXMgY2FsbGJhY2sgaXMgdHJpZ2dlcmVkLCB3aGVuIHRoZSB1c2VyIGNoYW5nZXMgdGhlIHZpZXcgbW9kZS4KICogWW91IGNhbiB1c2UgdGhpcyBjYWxsYmFjayBpbiBjYXNlIHlvdSB3YW50IHRvIGRvIHNvbWV0aGluZyBhZGRpdGlvbmFsIHdoZW4gdGhlIHVzZXIgc3dpdGNoZXMgdG8gdmlldyBtb2RlIGFuZCBiYWNrLgogKiAgIG9uVmlld01vZGVDaGFuZ2VIb29rOiAoaXNWaWV3TW9kZUVuYWJsZWQ6Ym9vbGVhbiwgdmlldzogRXhjYWxpZHJhd1ZpZXcsIGVhOiBFeGNhbGlkcmF3QXV0b21hdGUpID0+IHZvaWQgPSBudWxsOwogKi8KLy9lYS5vblZpZXdNb2RlQ2hhbmdlSG9vayA9IChpc1ZpZXdNb2RlRW5hYmxlZCwgdmlldywgZWEpID0+IHt9OwoKLyoqCiAqIElmIHNldCwgdGhpcyBjYWxsYmFjayBpcyB0cmlnZ2VyZWQsIHdoZW4gdGhlIHVzZXIgaG92ZXJzIGEgbGluayBpbiB0aGUgc2NlbmUuCiAqIFlvdSBjYW4gdXNlIHRoaXMgY2FsbGJhY2sgaW4gY2FzZSB5b3Ugd2FudCB0byBkbyBzb21ldGhpbmcgYWRkaXRpb25hbCB3aGVuIHRoZSBvbkxpbmtIb3ZlciBldmVudCBvY2N1cnMuCiAqIFRoaXMgY2FsbGJhY2sgbXVzdCByZXR1cm4gYSBib29sZWFuIHZhbHVlLgogKiBJbiBjYXNlIHlvdSB3YW50IHRvIHByZXZlbnQgdGhlIGV4Y2FsaWRyYXcgb25MaW5rSG92ZXIgYWN0aW9uIHlvdSBtdXN0IHJldHVybiBmYWxzZSwgaXQgd2lsbCBzdG9wIHRoZSBuYXRpdmUgZXhjYWxpZHJhdyBvbkxpbmtIb3ZlciBtYW5hZ2VtZW50IGZsb3cuCiAqICAgb25MaW5rSG92ZXJIb29rOiAoCiAqICAgICBlbGVtZW50OiBOb25EZWxldGVkRXhjYWxpZHJhd0VsZW1lbnQsCiAqICAgICBsaW5rVGV4dDogc3RyaW5nLAogKiAgICAgdmlldzogRXhjYWxpZHJhd1ZpZXcsCiAqICAgICBlYTogRXhjYWxpZHJhd0F1dG9tYXRlCiAqICAgKSA9PiBib29sZWFuID0gbnVsbDsKICovCi8vZWEub25MaW5rSG92ZXJIb29rID0gKGVsZW1lbnQsIGxpbmtUZXh0LCB2aWV3LCBlYSkgPT4ge307CiAgIAovKioKICogSWYgc2V0LCB0aGlzIGNhbGxiYWNrIGlzIHRyaWdnZXJlZCwgd2hlbiB0aGUgdXNlciBjbGlja3MgYSBsaW5rIGluIHRoZSBzY2VuZS4KICogWW91IGNhbiB1c2UgdGhpcyBjYWxsYmFjayBpbiBjYXNlIHlvdSB3YW50IHRvIGRvIHNvbWV0aGluZyBhZGRpdGlvbmFsIHdoZW4gdGhlIG9uTGlua0NsaWNrIGV2ZW50IG9jY3Vycy4KICogVGhpcyBjYWxsYmFjayBtdXN0IHJldHVybiBhIGJvb2xlYW4gdmFsdWUuCiAqIEluIGNhc2UgeW91IHdhbnQgdG8gcHJldmVudCB0aGUgZXhjYWxpZHJhdyBvbkxpbmtDbGljayBhY3Rpb24geW91IG11c3QgcmV0dXJuIGZhbHNlLCBpdCB3aWxsIHN0b3AgdGhlIG5hdGl2ZSBleGNhbGlkcmF3IG9uTGlua0NsaWNrIG1hbmFnZW1lbnQgZmxvdy4KICogICBvbkxpbmtDbGlja0hvb2s6KAogKiAgICAgZWxlbWVudDogRXhjYWxpZHJhd0VsZW1lbnQsCiAqICAgICBsaW5rVGV4dDogc3RyaW5nLAogKiAgICAgZXZlbnQ6IE1vdXNlRXZlbnQsCiAqICAgICB2aWV3OiBFeGNhbGlkcmF3VmlldywKICogICAgIGVhOiBFeGNhbGlkcmF3QXV0b21hdGUKICogICApID0+IGJvb2xlYW4gPSBudWxsOwogKi8KLy9lYS5vbkxpbmtDbGlja0hvb2sgPSAoZWxlbWVudCxsaW5rVGV4dCxldmVudCwgdmlldywgZWEpID0+IHt9OwogICAKLyoqCiAqIElmIHNldCwgdGhpcyBjYWxsYmFjayBpcyB0cmlnZ2VyZWQsIHdoZW4gRXhjYWxpZHJhdyByZWNlaXZlcyBhbiBvbkRyb3AgZXZlbnQuIAogKiBZb3UgY2FuIHVzZSB0aGlzIGNhbGxiYWNrIGluIGNhc2UgeW91IHdhbnQgdG8gZG8gc29tZXRoaW5nIGFkZGl0aW9uYWwgd2hlbiB0aGUgb25Ecm9wIGV2ZW50IG9jY3Vycy4KICogVGhpcyBjYWxsYmFjayBtdXN0IHJldHVybiBhIGJvb2xlYW4gdmFsdWUuCiAqIEluIGNhc2UgeW91IHdhbnQgdG8gcHJldmVudCB0aGUgZXhjYWxpZHJhdyBvbkRyb3AgYWN0aW9uIHlvdSBtdXN0IHJldHVybiBmYWxzZSwgaXQgd2lsbCBzdG9wIHRoZSBuYXRpdmUgZXhjYWxpZHJhdyBvbkRyb3AgbWFuYWdlbWVudCBmbG93LgogKiAgIG9uRHJvcEhvb2s6IChkYXRhOiB7CiAqICAgICBlYTogRXhjYWxpZHJhd0F1dG9tYXRlOwogKiAgICAgZXZlbnQ6IFJlYWN0LkRyYWdFdmVudDxIVE1MRGl2RWxlbWVudD47CiAqICAgICBkcmFnZ2FibGU6IGFueTsgLy9PYnNpZGlhbiBkcmFnZ2FibGUgb2JqZWN0CiAqICAgICB0eXBlOiAiZmlsZSIgfCAidGV4dCIgfCAidW5rbm93biI7CiAqICAgICBwYXlsb2FkOiB7CiAqICAgICAgIGZpbGVzOiBURmlsZVtdOyAvL1RGaWxlW10gYXJyYXkgb2YgZHJvcHBlZCBmaWxlcwogKiAgICAgICB0ZXh0OiBzdHJpbmc7IC8vc3RyaW5nCiAqICAgICB9OwogKiAgICAgZXhjYWxpZHJhd0ZpbGU6IFRGaWxlOyAvL3RoZSBmaWxlIHJlY2VpdmluZyB0aGUgZHJvcCBldmVudAogKiAgICAgdmlldzogRXhjYWxpZHJhd1ZpZXc7IC8vdGhlIGV4Y2FsaWRyYXcgdmlldyByZWNlaXZpbmcgdGhlIGRyb3AKICogICAgIHBvaW50ZXJQb3NpdGlvbjogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9OyAvL3RoZSBwb2ludGVyIHBvc2l0aW9uIG9uIGNhbnZhcyBhdCB0aGUgdGltZSBvZiBkcm9wCiAqICAgfSkgPT4gYm9vbGVhbiA9IG51bGw7CiAqLwovL2VhLm9uRHJvcEhvb2sgPSAoZGF0YSkgPT4ge307CiAKLyoqCiAqIElmIHNldCwgdGhpcyBjYWxsYmFjayBpcyB0cmlnZ2VyZWQsIHdoZW4gRXhjYWxpZHJhdyByZWNlaXZlcyBhbiBvblBhc3RlIGV2ZW50LgogKiBZb3UgY2FuIHVzZSB0aGlzIGNhbGxiYWNrIGluIGNhc2UgeW91IHdhbnQgdG8gZG8gc29tZXRoaW5nIGFkZGl0aW9uYWwgd2hlbiB0aGUKICogb25QYXN0ZSBldmVudCBvY2N1cnMuCiAqIFRoaXMgY2FsbGJhY2sgbXVzdCByZXR1cm4gYSBib29sZWFuIHZhbHVlLgogKiBJbiBjYXNlIHlvdSB3YW50IHRvIHByZXZlbnQgdGhlIGV4Y2FsaWRyYXcgb25QYXN0ZSBhY3Rpb24geW91IG11c3QgcmV0dXJuIGZhbHNlLAogKiBpdCB3aWxsIHN0b3AgdGhlIG5hdGl2ZSBleGNhbGlkcmF3IG9uUGFzdGUgbWFuYWdlbWVudCBmbG93LgogKiAgIG9uUGFzdGVIb29rOiAoZGF0YTogewogKiAgICAgZWE6IEV4Y2FsaWRyYXdBdXRvbWF0ZTsKICogICAgIHBheWxvYWQ6IENsaXBib2FyZERhdGE7CiAqICAgICBldmVudDogQ2xpcGJvYXJkRXZlbnQ7CiAqICAgICBleGNhbGlkcmF3RmlsZTogVEZpbGU7IC8vdGhlIGZpbGUgcmVjZWl2aW5nIHRoZSBwYXN0ZSBldmVudAogKiAgICAgdmlldzogRXhjYWxpZHJhd1ZpZXc7IC8vdGhlIGV4Y2FsaWRyYXcgdmlldyByZWNlaXZpbmcgdGhlIHBhc3RlCiAqICAgICBwb2ludGVyUG9zaXRpb246IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfTsgLy90aGUgcG9pbnRlciBwb3NpdGlvbiBvbiBjYW52YXMKICogICB9KSA9PiBib29sZWFuID0gbnVsbDsKICovCi8vZWEub25QYXN0ZUhvb2sgPSAoZGF0YSkgPT4ge307CgovKioKICogaWYgc2V0LCB0aGlzIGNhbGxiYWNrIGlzIHRyaWdnZXJlZCwgd2hlbiBhbiBFeGNhbGlkcmF3IGZpbGUgaXMgb3BlbmVkCiAqIFlvdSBjYW4gdXNlIHRoaXMgY2FsbGJhY2sgaW4gY2FzZSB5b3Ugd2FudCB0byBkbyBzb21ldGhpbmcgYWRkaXRpb25hbCB3aGVuIHRoZSBmaWxlIGlzIG9wZW5lZC4KICogVGhpcyB3aWxsIHJ1biBiZWZvcmUgdGhlIGZpbGUgbGV2ZWwgc2NyaXB0IGRlZmluZWQgaW4gdGhlIGBleGNhbGlkcmF3LW9ubG9hZC1zY3JpcHRgIGZyb250bWF0dGVyLgogKiAgIG9uRmlsZU9wZW5Ib29rOiAoZGF0YTogewogKiAgICAgZWE6IEV4Y2FsaWRyYXdBdXRvbWF0ZTsKICogICAgIGV4Y2FsaWRyYXdGaWxlOiBURmlsZTsgLy90aGUgZmlsZSBiZWluZyBsb2FkZWQKICogICAgIHZpZXc6IEV4Y2FsaWRyYXdWaWV3OwogKiAgIH0pID0+IFByb21pc2U8dm9pZD47CiAqLwovL2VhLm9uRmlsZU9wZW5Ib29rID0gKGRhdGEpID0+IHt9OwoKLyoqCiAqIGlmIHNldCwgdGhpcyBjYWxsYmFjayBpcyB0cmlnZ2VyZWQsIHdoZW4gYW4gRXhjYWxpZHJhdyBmaWxlIGlzIGNyZWF0ZWQKICogc2VlIGFsc286IGh0dHBzOi8vZ2l0aHViLmNvbS96c3ZpY3ppYW4vb2JzaWRpYW4tZXhjYWxpZHJhdy1wbHVnaW4vaXNzdWVzLzExMjQKICogICBvbkZpbGVDcmVhdGVIb29rOiAoZGF0YTogewogKiAgICAgZWE6IEV4Y2FsaWRyYXdBdXRvbWF0ZTsKICogICAgIGV4Y2FsaWRyYXdGaWxlOiBURmlsZTsgLy90aGUgZmlsZSBiZWluZyBjcmVhdGVkCiAqICAgICB2aWV3OiBFeGNhbGlkcmF3VmlldzsKICogICB9KSA9PiBQcm9taXNlPHZvaWQ+OwogKi8KLy9lYS5vbkZpbGVDcmVhdGVIb29rID0gKGRhdGEpID0+IHt9OyAKCi8qKgogKiBJZiBzZXQsIHRoaXMgY2FsbGJhY2sgaXMgdHJpZ2dlcmVkIHdoZW4gYSBpbWFnZSBpcyBiZWluZyBzYXZlZCBpbiBFeGNhbGlkcmF3LgogKiBZb3UgY2FuIHVzZSB0aGlzIGNhbGxiYWNrIHRvIGN1c3RvbWl6ZSB0aGUgbmFtaW5nIGFuZCBwYXRoIG9mIHBhc3RlZCBpbWFnZXMgdG8gYXZvaWQKICogZGVmYXVsdCBuYW1lcyBsaWtlICJQYXN0ZWQgaW1hZ2UgMTIzMTQ3MTcwLnBuZyIgYmVpbmcgc2F2ZWQgaW4gdGhlIGF0dGFjaG1lbnRzIGZvbGRlciwKICogYW5kIGluc3RlYWQgdXNlIG1vcmUgbWVhbmluZ2Z1bCBuYW1lcyBiYXNlZCBvbiB0aGUgRXhjYWxpZHJhdyBmaWxlIG9yIG90aGVyIGNyaXRlcmlhLAogKiBwbHVzIHNhdmUgdGhlIGltYWdlIGluIGEgZGlmZmVyZW50IGZvbGRlci4KICogCiAqIElmIHRoZSBmdW5jdGlvbiByZXR1cm5zIG51bGwgb3IgdW5kZWZpbmVkLCB0aGUgbm9ybWFsIEV4Y2FsaWRyYXcgb3BlcmF0aW9uIHdpbGwgY29udGludWUKICogd2l0aCB0aGUgZXhjYWxpZHJhdyBnZW5lcmF0ZWQgbmFtZSBhbmQgZGVmYXVsdCBwYXRoLgogKiBJZiBhIGZpbGVwYXRoIGlzIHJldHVybmVkLCB0aGF0IHdpbGwgYmUgdXNlZC4gSW5jbHVkZSB0aGUgZnVsbCBWYXVsdCBmaWxlcGF0aCBhbmQgZmlsZW5hbWUKICogd2l0aCB0aGUgZmlsZSBleHRlbnNpb24uCiAqIFRoZSBjdXJyZW50SW1hZ2VOYW1lIGlzIHRoZSBuYW1lIG9mIHRoZSBpbWFnZSBnZW5lcmF0ZWQgYnkgZXhjYWxpZHJhdyBvciBwcm92aWRlZCBkdXJpbmcgcGFzdGUuCiAqIAogKiBAcGFyYW0gZGF0YSAtIEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKICogICBAcHJvcGVydHkge3N0cmluZ30gW2N1cnJlbnRJbWFnZU5hbWVdIC0gRGVmYXVsdCBuYW1lIGZvciB0aGUgaW1hZ2UuCiAqICAgQHByb3BlcnR5IHtzdHJpbmd9IGRyYXdpbmdGaWxlUGF0aCAtIFRoZSBmaWxlIHBhdGggb2YgdGhlIEV4Y2FsaWRyYXcgZmlsZSB3aGVyZSB0aGUgaW1hZ2UgaXMgYmVpbmcgdXNlZC4KICogCiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIG5ldyBmaWxlcGF0aCBmb3IgdGhlIGltYWdlIGluY2x1ZGluZyBmdWxsIHZhdWx0IHBhdGggYW5kIGV4dGVuc2lvbi4KICogCiAqIEV4YW1wbGUgdXNhZ2U6CiAqIGBgYAogKiBvbkltYWdlRmlsZVBhdGhIb29rOiAoZGF0YSkgPT4gewogKiAgIGNvbnN0IHsgY3VycmVudEltYWdlTmFtZSwgZHJhd2luZ0ZpbGVQYXRoIH0gPSBkYXRhOwogKiAgIGNvbnN0IGV4dCA9IGN1cnJlbnRJbWFnZU5hbWUuc3BsaXQoJy4nKS5wb3AoKTsKICogICAvLyBHZW5lcmF0ZSBhIG5ldyBmaWxlcGF0aCBiYXNlZCBvbiB0aGUgZHJhd2luZyBmaWxlIG5hbWUgYW5kIG90aGVyIGNyaXRlcmlhCiAqICAgcmV0dXJuIGAke2RyYXdpbmdGaWxlTmFtZX0gLSAke2N1cnJlbnRJbWFnZU5hbWUgfHwgJ2ltYWdlJ30uJHtleHR9YDsKICogfQogKiBgYGAKICogIG9uSW1hZ2VGaWxlUGF0aEhvb2s6IChkYXRhOiB7CiAqICAgY3VycmVudEltYWdlTmFtZTogc3RyaW5nOyAvLyBFeGNhbGlkcmF3IGdlbmVyYXRlZCBuYW1lIG9mIHRoZSBpbWFnZSwgb3IgdGhlIG5hbWUgcmVjZWl2ZWQgZnJvbSB0aGUgZmlsZSBzeXN0ZW0uCiAqICAgZHJhd2luZ0ZpbGVQYXRoOiBzdHJpbmc7IC8vIFRoZSBmdWxsIGZpbGVwYXRoIG9mIHRoZSBFeGNhbGlkcmF3IGZpbGUgd2hlcmUgdGhlIGltYWdlIGlzIGJlaW5nIHVzZWQuCiAqIH0pID0+IHN0cmluZyA9IG51bGw7ICAKKi8KLy9lYS5vbkltYWdlRmlsZU5hbWVIb29rID0gKGRhdGEpID0+IHt9OwoKLyoqCiAqIElmIHNldCwgdGhpcyBjYWxsYmFjayBpcyB0cmlnZ2VyZWQgd2hlbmV2ZXIgdGhlIGFjdGl2ZSBjYW52YXMgY29sb3IgY2hhbmdlcwogKiAgIG9uQ2FudmFzQ29sb3JDaGFuZ2VIb29rOiAoCiAqICAgICBlYTogRXhjYWxpZHJhd0F1dG9tYXRlLAogKiAgICAgdmlldzogRXhjYWxpZHJhd1ZpZXcsIC8vdGhlIGV4Y2FsaWRyYXcgdmlldyAKICogICAgIGNvbG9yOiBzdHJpbmcsCiAqICAgKSA9PiB2b2lkID0gbnVsbDsKICovCi8vZWEub25DYW52YXNDb2xvckNoYW5nZUhvb2sgPSAoZWEsIHZpZXcsIGNvbG9yKSA9PiB7fTs="); \ No newline at end of file +export const startupScript = () => atob("LyoKI2V4Y2x1ZGUKYGBganMqLwovKioKICogSWYgc2V0LCB0aGlzIGNhbGxiYWNrIGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIGNsb3NlcyBhbiBFeGNhbGlkcmF3IHZpZXcuCiAqICAgb25WaWV3VW5sb2FkSG9vazogKHZpZXc6IEV4Y2FsaWRyYXdWaWV3KSA9PiB2b2lkID0gbnVsbDsKICovCi8vZWEub25WaWV3VW5sb2FkSG9vayA9ICh2aWV3KSA9PiB7fTsKCi8qKgogKiBJZiBzZXQsIHRoaXMgY2FsbGJhY2sgaXMgdHJpZ2dlcmVkLCB3aGVuIHRoZSB1c2VyIGNoYW5nZXMgdGhlIHZpZXcgbW9kZS4KICogWW91IGNhbiB1c2UgdGhpcyBjYWxsYmFjayBpbiBjYXNlIHlvdSB3YW50IHRvIGRvIHNvbWV0aGluZyBhZGRpdGlvbmFsIHdoZW4gdGhlIHVzZXIgc3dpdGNoZXMgdG8gdmlldyBtb2RlIGFuZCBiYWNrLgogKiAgIG9uVmlld01vZGVDaGFuZ2VIb29rOiAoaXNWaWV3TW9kZUVuYWJsZWQ6Ym9vbGVhbiwgdmlldzogRXhjYWxpZHJhd1ZpZXcsIGVhOiBFeGNhbGlkcmF3QXV0b21hdGUpID0+IHZvaWQgPSBudWxsOwogKi8KLy9lYS5vblZpZXdNb2RlQ2hhbmdlSG9vayA9IChpc1ZpZXdNb2RlRW5hYmxlZCwgdmlldywgZWEpID0+IHt9OwoKLyoqCiAqIElmIHNldCwgdGhpcyBjYWxsYmFjayBpcyB0cmlnZ2VyZWQsIHdoZW4gdGhlIHVzZXIgaG92ZXJzIGEgbGluayBpbiB0aGUgc2NlbmUuCiAqIFlvdSBjYW4gdXNlIHRoaXMgY2FsbGJhY2sgaW4gY2FzZSB5b3Ugd2FudCB0byBkbyBzb21ldGhpbmcgYWRkaXRpb25hbCB3aGVuIHRoZSBvbkxpbmtIb3ZlciBldmVudCBvY2N1cnMuCiAqIFRoaXMgY2FsbGJhY2sgbXVzdCByZXR1cm4gYSBib29sZWFuIHZhbHVlLgogKiBJbiBjYXNlIHlvdSB3YW50IHRvIHByZXZlbnQgdGhlIGV4Y2FsaWRyYXcgb25MaW5rSG92ZXIgYWN0aW9uIHlvdSBtdXN0IHJldHVybiBmYWxzZSwgaXQgd2lsbCBzdG9wIHRoZSBuYXRpdmUgZXhjYWxpZHJhdyBvbkxpbmtIb3ZlciBtYW5hZ2VtZW50IGZsb3cuCiAqICAgb25MaW5rSG92ZXJIb29rOiAoCiAqICAgICBlbGVtZW50OiBOb25EZWxldGVkRXhjYWxpZHJhd0VsZW1lbnQsCiAqICAgICBsaW5rVGV4dDogc3RyaW5nLAogKiAgICAgdmlldzogRXhjYWxpZHJhd1ZpZXcsCiAqICAgICBlYTogRXhjYWxpZHJhd0F1dG9tYXRlCiAqICAgKSA9PiBib29sZWFuID0gbnVsbDsKICovCi8vZWEub25MaW5rSG92ZXJIb29rID0gKGVsZW1lbnQsIGxpbmtUZXh0LCB2aWV3LCBlYSkgPT4ge307CiAgIAovKioKICogSWYgc2V0LCB0aGlzIGNhbGxiYWNrIGlzIHRyaWdnZXJlZCwgd2hlbiB0aGUgdXNlciBjbGlja3MgYSBsaW5rIGluIHRoZSBzY2VuZS4KICogWW91IGNhbiB1c2UgdGhpcyBjYWxsYmFjayBpbiBjYXNlIHlvdSB3YW50IHRvIGRvIHNvbWV0aGluZyBhZGRpdGlvbmFsIHdoZW4gdGhlIG9uTGlua0NsaWNrIGV2ZW50IG9jY3Vycy4KICogVGhpcyBjYWxsYmFjayBtdXN0IHJldHVybiBhIGJvb2xlYW4gdmFsdWUuCiAqIEluIGNhc2UgeW91IHdhbnQgdG8gcHJldmVudCB0aGUgZXhjYWxpZHJhdyBvbkxpbmtDbGljayBhY3Rpb24geW91IG11c3QgcmV0dXJuIGZhbHNlLCBpdCB3aWxsIHN0b3AgdGhlIG5hdGl2ZSBleGNhbGlkcmF3IG9uTGlua0NsaWNrIG1hbmFnZW1lbnQgZmxvdy4KICogICBvbkxpbmtDbGlja0hvb2s6KAogKiAgICAgZWxlbWVudDogRXhjYWxpZHJhd0VsZW1lbnQsCiAqICAgICBsaW5rVGV4dDogc3RyaW5nLAogKiAgICAgZXZlbnQ6IE1vdXNlRXZlbnQsCiAqICAgICB2aWV3OiBFeGNhbGlkcmF3VmlldywKICogICAgIGVhOiBFeGNhbGlkcmF3QXV0b21hdGUKICogICApID0+IGJvb2xlYW4gPSBudWxsOwogKi8KLy9lYS5vbkxpbmtDbGlja0hvb2sgPSAoZWxlbWVudCxsaW5rVGV4dCxldmVudCwgdmlldywgZWEpID0+IHt9OwogICAKLyoqCiAqIElmIHNldCwgdGhpcyBjYWxsYmFjayBpcyB0cmlnZ2VyZWQsIHdoZW4gRXhjYWxpZHJhdyByZWNlaXZlcyBhbiBvbkRyb3AgZXZlbnQuIAogKiBZb3UgY2FuIHVzZSB0aGlzIGNhbGxiYWNrIGluIGNhc2UgeW91IHdhbnQgdG8gZG8gc29tZXRoaW5nIGFkZGl0aW9uYWwgd2hlbiB0aGUgb25Ecm9wIGV2ZW50IG9jY3Vycy4KICogVGhpcyBjYWxsYmFjayBtdXN0IHJldHVybiBhIGJvb2xlYW4gdmFsdWUuCiAqIEluIGNhc2UgeW91IHdhbnQgdG8gcHJldmVudCB0aGUgZXhjYWxpZHJhdyBvbkRyb3AgYWN0aW9uIHlvdSBtdXN0IHJldHVybiBmYWxzZSwgaXQgd2lsbCBzdG9wIHRoZSBuYXRpdmUgZXhjYWxpZHJhdyBvbkRyb3AgbWFuYWdlbWVudCBmbG93LgogKiAgIG9uRHJvcEhvb2s6IChkYXRhOiB7CiAqICAgICBlYTogRXhjYWxpZHJhd0F1dG9tYXRlOwogKiAgICAgZXZlbnQ6IFJlYWN0LkRyYWdFdmVudDxIVE1MRGl2RWxlbWVudD47CiAqICAgICBkcmFnZ2FibGU6IGFueTsgLy9PYnNpZGlhbiBkcmFnZ2FibGUgb2JqZWN0CiAqICAgICB0eXBlOiAiZmlsZSIgfCAidGV4dCIgfCAidW5rbm93biI7CiAqICAgICBwYXlsb2FkOiB7CiAqICAgICAgIGZpbGVzOiBURmlsZVtdOyAvL1RGaWxlW10gYXJyYXkgb2YgZHJvcHBlZCBmaWxlcwogKiAgICAgICB0ZXh0OiBzdHJpbmc7IC8vc3RyaW5nCiAqICAgICB9OwogKiAgICAgZXhjYWxpZHJhd0ZpbGU6IFRGaWxlOyAvL3RoZSBmaWxlIHJlY2VpdmluZyB0aGUgZHJvcCBldmVudAogKiAgICAgdmlldzogRXhjYWxpZHJhd1ZpZXc7IC8vdGhlIGV4Y2FsaWRyYXcgdmlldyByZWNlaXZpbmcgdGhlIGRyb3AKICogICAgIHBvaW50ZXJQb3NpdGlvbjogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9OyAvL3RoZSBwb2ludGVyIHBvc2l0aW9uIG9uIGNhbnZhcyBhdCB0aGUgdGltZSBvZiBkcm9wCiAqICAgfSkgPT4gYm9vbGVhbiA9IG51bGw7CiAqLwovL2VhLm9uRHJvcEhvb2sgPSAoZGF0YSkgPT4ge307CiAKLyoqCiAqIElmIHNldCwgdGhpcyBjYWxsYmFjayBpcyB0cmlnZ2VyZWQsIHdoZW4gRXhjYWxpZHJhdyByZWNlaXZlcyBhbiBvblBhc3RlIGV2ZW50LgogKiBZb3UgY2FuIHVzZSB0aGlzIGNhbGxiYWNrIGluIGNhc2UgeW91IHdhbnQgdG8gZG8gc29tZXRoaW5nIGFkZGl0aW9uYWwgd2hlbiB0aGUKICogb25QYXN0ZSBldmVudCBvY2N1cnMuCiAqIFRoaXMgY2FsbGJhY2sgbXVzdCByZXR1cm4gYSBib29sZWFuIHZhbHVlLgogKiBJbiBjYXNlIHlvdSB3YW50IHRvIHByZXZlbnQgdGhlIGV4Y2FsaWRyYXcgb25QYXN0ZSBhY3Rpb24geW91IG11c3QgcmV0dXJuIGZhbHNlLAogKiBpdCB3aWxsIHN0b3AgdGhlIG5hdGl2ZSBleGNhbGlkcmF3IG9uUGFzdGUgbWFuYWdlbWVudCBmbG93LgogKiAgIG9uUGFzdGVIb29rOiAoZGF0YTogewogKiAgICAgZWE6IEV4Y2FsaWRyYXdBdXRvbWF0ZTsKICogICAgIHBheWxvYWQ6IENsaXBib2FyZERhdGE7CiAqICAgICBldmVudDogQ2xpcGJvYXJkRXZlbnQ7CiAqICAgICBleGNhbGlkcmF3RmlsZTogVEZpbGU7IC8vdGhlIGZpbGUgcmVjZWl2aW5nIHRoZSBwYXN0ZSBldmVudAogKiAgICAgdmlldzogRXhjYWxpZHJhd1ZpZXc7IC8vdGhlIGV4Y2FsaWRyYXcgdmlldyByZWNlaXZpbmcgdGhlIHBhc3RlCiAqICAgICBwb2ludGVyUG9zaXRpb246IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfTsgLy90aGUgcG9pbnRlciBwb3NpdGlvbiBvbiBjYW52YXMKICogICB9KSA9PiBib29sZWFuID0gbnVsbDsKICovCi8vZWEub25QYXN0ZUhvb2sgPSAoZGF0YSkgPT4ge307CgovKioKICogaWYgc2V0LCB0aGlzIGNhbGxiYWNrIGlzIHRyaWdnZXJlZCwgd2hlbiBhbiBFeGNhbGlkcmF3IGZpbGUgaXMgb3BlbmVkCiAqIFlvdSBjYW4gdXNlIHRoaXMgY2FsbGJhY2sgaW4gY2FzZSB5b3Ugd2FudCB0byBkbyBzb21ldGhpbmcgYWRkaXRpb25hbCB3aGVuIHRoZSBmaWxlIGlzIG9wZW5lZC4KICogVGhpcyB3aWxsIHJ1biBiZWZvcmUgdGhlIGZpbGUgbGV2ZWwgc2NyaXB0IGRlZmluZWQgaW4gdGhlIGBleGNhbGlkcmF3LW9ubG9hZC1zY3JpcHRgIGZyb250bWF0dGVyLgogKiAgIG9uRmlsZU9wZW5Ib29rOiAoZGF0YTogewogKiAgICAgZWE6IEV4Y2FsaWRyYXdBdXRvbWF0ZTsKICogICAgIGV4Y2FsaWRyYXdGaWxlOiBURmlsZTsgLy90aGUgZmlsZSBiZWluZyBsb2FkZWQKICogICAgIHZpZXc6IEV4Y2FsaWRyYXdWaWV3OwogKiAgIH0pID0+IFByb21pc2U8dm9pZD47CiAqLwovL2VhLm9uRmlsZU9wZW5Ib29rID0gKGRhdGEpID0+IHt9OwoKLyoqCiAqIGlmIHNldCwgdGhpcyBjYWxsYmFjayBpcyB0cmlnZ2VyZWQsIHdoZW4gYW4gRXhjYWxpZHJhdyBmaWxlIGlzIGNyZWF0ZWQKICogc2VlIGFsc286IGh0dHBzOi8vZ2l0aHViLmNvbS96c3ZpY3ppYW4vb2JzaWRpYW4tZXhjYWxpZHJhdy1wbHVnaW4vaXNzdWVzLzExMjQKICogICBvbkZpbGVDcmVhdGVIb29rOiAoZGF0YTogewogKiAgICAgZWE6IEV4Y2FsaWRyYXdBdXRvbWF0ZTsKICogICAgIGV4Y2FsaWRyYXdGaWxlOiBURmlsZTsgLy90aGUgZmlsZSBiZWluZyBjcmVhdGVkCiAqICAgICB2aWV3OiBFeGNhbGlkcmF3VmlldzsKICogICB9KSA9PiBQcm9taXNlPHZvaWQ+OwogKi8KLy9lYS5vbkZpbGVDcmVhdGVIb29rID0gKGRhdGEpID0+IHt9OyAKCi8qKgogKiBJZiBzZXQsIHRoaXMgY2FsbGJhY2sgaXMgdHJpZ2dlcmVkIHdoZW4gYSBpbWFnZSBpcyBiZWluZyBzYXZlZCBpbiBFeGNhbGlkcmF3LgogKiBZb3UgY2FuIHVzZSB0aGlzIGNhbGxiYWNrIHRvIGN1c3RvbWl6ZSB0aGUgbmFtaW5nIGFuZCBwYXRoIG9mIHBhc3RlZCBpbWFnZXMgdG8gYXZvaWQKICogZGVmYXVsdCBuYW1lcyBsaWtlICJQYXN0ZWQgaW1hZ2UgMTIzMTQ3MTcwLnBuZyIgYmVpbmcgc2F2ZWQgaW4gdGhlIGF0dGFjaG1lbnRzIGZvbGRlciwKICogYW5kIGluc3RlYWQgdXNlIG1vcmUgbWVhbmluZ2Z1bCBuYW1lcyBiYXNlZCBvbiB0aGUgRXhjYWxpZHJhdyBmaWxlIG9yIG90aGVyIGNyaXRlcmlhLAogKiBwbHVzIHNhdmUgdGhlIGltYWdlIGluIGEgZGlmZmVyZW50IGZvbGRlci4KICogCiAqIElmIHRoZSBmdW5jdGlvbiByZXR1cm5zIG51bGwgb3IgdW5kZWZpbmVkLCB0aGUgbm9ybWFsIEV4Y2FsaWRyYXcgb3BlcmF0aW9uIHdpbGwgY29udGludWUKICogd2l0aCB0aGUgZXhjYWxpZHJhdyBnZW5lcmF0ZWQgbmFtZSBhbmQgZGVmYXVsdCBwYXRoLgogKiBJZiBhIGZpbGVwYXRoIGlzIHJldHVybmVkLCB0aGF0IHdpbGwgYmUgdXNlZC4gSW5jbHVkZSB0aGUgZnVsbCBWYXVsdCBmaWxlcGF0aCBhbmQgZmlsZW5hbWUKICogd2l0aCB0aGUgZmlsZSBleHRlbnNpb24uCiAqIFRoZSBjdXJyZW50SW1hZ2VOYW1lIGlzIHRoZSBuYW1lIG9mIHRoZSBpbWFnZSBnZW5lcmF0ZWQgYnkgZXhjYWxpZHJhdyBvciBwcm92aWRlZCBkdXJpbmcgcGFzdGUuCiAqIAogKiBAcGFyYW0gZGF0YSAtIEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKICogICBAcHJvcGVydHkge3N0cmluZ30gW2N1cnJlbnRJbWFnZU5hbWVdIC0gRGVmYXVsdCBuYW1lIGZvciB0aGUgaW1hZ2UuCiAqICAgQHByb3BlcnR5IHtzdHJpbmd9IGRyYXdpbmdGaWxlUGF0aCAtIFRoZSBmaWxlIHBhdGggb2YgdGhlIEV4Y2FsaWRyYXcgZmlsZSB3aGVyZSB0aGUgaW1hZ2UgaXMgYmVpbmcgdXNlZC4KICogCiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIG5ldyBmaWxlcGF0aCBmb3IgdGhlIGltYWdlIGluY2x1ZGluZyBmdWxsIHZhdWx0IHBhdGggYW5kIGV4dGVuc2lvbi4KICogCiAqIEV4YW1wbGUgdXNhZ2U6CiAqIGBgYAogKiBvbkltYWdlRmlsZVBhdGhIb29rOiAoZGF0YSkgPT4gewogKiAgIGNvbnN0IHsgY3VycmVudEltYWdlTmFtZSwgZHJhd2luZ0ZpbGVQYXRoIH0gPSBkYXRhOwogKiAgIGNvbnN0IGV4dCA9IGN1cnJlbnRJbWFnZU5hbWUuc3BsaXQoJy4nKS5wb3AoKTsKICogICAvLyBHZW5lcmF0ZSBhIG5ldyBmaWxlcGF0aCBiYXNlZCBvbiB0aGUgZHJhd2luZyBmaWxlIG5hbWUgYW5kIG90aGVyIGNyaXRlcmlhCiAqICAgcmV0dXJuIGAke2RyYXdpbmdGaWxlTmFtZX0gLSAke2N1cnJlbnRJbWFnZU5hbWUgfHwgJ2ltYWdlJ30uJHtleHR9YDsKICogfQogKiBgYGAKICogIG9uSW1hZ2VGaWxlUGF0aEhvb2s6IChkYXRhOiB7CiAqICAgY3VycmVudEltYWdlTmFtZTogc3RyaW5nOyAvLyBFeGNhbGlkcmF3IGdlbmVyYXRlZCBuYW1lIG9mIHRoZSBpbWFnZSwgb3IgdGhlIG5hbWUgcmVjZWl2ZWQgZnJvbSB0aGUgZmlsZSBzeXN0ZW0uCiAqICAgZHJhd2luZ0ZpbGVQYXRoOiBzdHJpbmc7IC8vIFRoZSBmdWxsIGZpbGVwYXRoIG9mIHRoZSBFeGNhbGlkcmF3IGZpbGUgd2hlcmUgdGhlIGltYWdlIGlzIGJlaW5nIHVzZWQuCiAqIH0pID0+IHN0cmluZyA9IG51bGw7ICAKKi8KLy9lYS5vbkltYWdlRmlsZVBhdGhIb29rID0gKGRhdGEpID0+IHt9OwoKLyoqCiAqIElmIHNldCwgdGhpcyBjYWxsYmFjayBpcyB0cmlnZ2VyZWQgd2hlbmV2ZXIgdGhlIGFjdGl2ZSBjYW52YXMgY29sb3IgY2hhbmdlcwogKiAgIG9uQ2FudmFzQ29sb3JDaGFuZ2VIb29rOiAoCiAqICAgICBlYTogRXhjYWxpZHJhd0F1dG9tYXRlLAogKiAgICAgdmlldzogRXhjYWxpZHJhd1ZpZXcsIC8vdGhlIGV4Y2FsaWRyYXcgdmlldyAKICogICAgIGNvbG9yOiBzdHJpbmcsCiAqICAgKSA9PiB2b2lkID0gbnVsbDsKICovCi8vZWEub25DYW52YXNDb2xvckNoYW5nZUhvb2sgPSAoZWEsIHZpZXcsIGNvbG9yKSA9PiB7fTs="); \ No newline at end of file diff --git a/src/shared/Dialogs/SuggesterInfo.ts b/src/shared/Dialogs/SuggesterInfo.ts index 96051fb..0b401fe 100644 --- a/src/shared/Dialogs/SuggesterInfo.ts +++ b/src/shared/Dialogs/SuggesterInfo.ts @@ -558,6 +558,21 @@ export const EXCALIDRAW_AUTOMATE_INFO: SuggesterInfo[] = [ desc: "If set Excalidraw will call this function onDrop events.\nA return of true will stop the default onDrop processing in Excalidraw.\n\ndraggable is the Obsidian draggable object\nfiles is the array of dropped files\nexcalidrawFile is the file receiving the drop event\nview is the excalidraw view receiving the drop.\npointerPosition is the pointer position on canvas at the time of drop.", after: "", }, + { + field: "onImageFilePathHook", + code: `onImageFilePathHook: (data: {currentImageName: string; drawingFilePath: string;}): string;`, + desc: "If set, this callback is triggered when an image is being saved in Excalidraw.\n" + + "You can use this callback to customize the naming and path of pasted images to avoid\n" + + 'default names like "Pasted image 123147170.png" being saved in the attachments folder,\n' + + "and instead use more meaningful names based on the Excalidraw file or other criteria,\n" + + "plus save the image in a different folder.\n\n" + + "If the function returns null or undefined, the normal Excalidraw operation will continue\n" + + "with the excalidraw generated name and default path.\n" + + "If a filepath is returned, that will be used. Include the full Vault filepath and filename\n" + + "with the file extension.\n" + + "The currentImageName is the name of the image generated by excalidraw or provided during paste.", + after: "", + }, { field: "mostRecentMarkdownSVG", code: "mostRecentMarkdownSVG: SVGSVGElement;", diff --git a/src/shared/ExcalidrawData.ts b/src/shared/ExcalidrawData.ts index 1691435..cac7db2 100644 --- a/src/shared/ExcalidrawData.ts +++ b/src/shared/ExcalidrawData.ts @@ -52,10 +52,11 @@ import { getMermaidImageElements, getMermaidText, shouldRenderMermaid } from ".. import { DEBUGGING, debug } from "../utils/debugHelper"; import { Mutable } from "@zsviczian/excalidraw/types/excalidraw/utility-types"; import { updateElementIdsInScene } from "../utils/excalidrawSceneUtils"; -import { getNewUniqueFilepath, splitFolderAndFilename } from "../utils/fileUtils"; +import { checkAndCreateFolder, getNewUniqueFilepath, splitFolderAndFilename } from "../utils/fileUtils"; import { t } from "../lang/helpers"; import { displayFontMessage } from "../utils/excalidrawViewUtils"; import { getPDFRect } from "../utils/PDFUtils"; +import { create } from "domain"; type SceneDataWithFiles = SceneData & { files: BinaryFiles }; @@ -1558,6 +1559,7 @@ export class ExcalidrawData { let filepath:string; if(hookFilepath) { const {folderpath, filename} = splitFolderAndFilename(hookFilepath); + await checkAndCreateFolder(folderpath); filepath = getNewUniqueFilepath(this.app.vault,filename,folderpath); } else { const x = await getAttachmentsFolderAndFilePath(this.app, this.file.path, fname);