GithubHelp home page GithubHelp logo

bric3 / excalidraw-jetbrains-plugin Goto Github PK

View Code? Open in Web Editor NEW
69.0 4.0 9.0 10.34 MB

Create or edit Excalidraw files within Jetbrains IDEs (IntelliJ, CLion, Webstorm, Goland, ...)

Home Page: https://plugins.jetbrains.com/plugin/17096-excalidraw-integration/

License: MIT License

Kotlin 82.71% HTML 0.87% JavaScript 1.17% CSS 0.67% TypeScript 14.59%
excalidraw intellij ide jetbrains clion webstorm goland

excalidraw-jetbrains-plugin's Introduction

Excalidraw Integration for Jetbrains IDEs

Build Version Downloads Conventional Commits

This plugin allows creating or editing Excalidraw virtual whiteboard within the IDE.

light/dark plugin screenshot

Installation

  • Using IDE built-in plugin system:

    Settings/Preferences > Plugins > Marketplace > Search for "excalidraw-jetbrains-plugin" > Install Plugin

  • Manually:

    Download the latest release and install it manually using Settings/Preferences > Plugins > ⚙️ > Install plugin from disk...

How do I build and run this project?

For development purpose, clone the project locally and start it with the command:

./gradlew runIde

This will build the plugin and start a sandboxed instance of IntelliJ with the plugin already installed. You can even start this in debug mode.


The Logo is inspired from the actual Excalidraw logo (MIT licensed).

excalidraw-jetbrains-plugin's People

Contributors

actions-user avatar bric3 avatar michael-pratt avatar renovate-bot avatar renovate[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

excalidraw-jetbrains-plugin's Issues

Investigate Offscreen rendering

See IDEA-265760

JBCefBrowser browser = JBCefBrowser.createBuilder()
      .setOffScreenRendering(true)
      .setUrl("https://jetbrains.com")
      .createBrowser();

Implement off-screen JCEF render handler for org.cef.browser.CefBrowserOsrWithHandler, based on a buffered image (potentially volatile) and a Swing lightweight component. This will allow developers to utilize lightweight browser benefits [*] where it is more preferable and where some performance decrease is not critical. For instance - for simple HTML viewers.

[*] Lightweight benefits like: ability to paint other lw components above, ability to paint the browser content partially, etc.

OSR in CEF: https://bitbucket.org/chromiumembedded/cef/wiki/GeneralUsage#markdown-header-off-screen-rendering

Related : IDEA-257702 and IDEA-252845.

Upgrade to Excalidraw 0.12.0

Image added to a drawing are not properly saved

  1. Copy image to excalidraw
  2. Close drawing
  3. Re-open

The drawing have the placeholder for the image, but the image was not saved.

[!INFO]
The issue is the lack of APIs to load binary files in the excalidraw js library (see #200).

Crash and OOM after installing plugin and opening 2 drawings

I know this is a really vague bug report, but here goes:

Today, after

  • installing the plugin,
  • opening 2 drawings (in 2 tabs inside the same "split"),
  • switching the PyCharm window to full screen, and
  • switching from the 2nd tab to the first,

the following happened:

  • PyCharm crashed
  • Linux's OOM-killer went on its usual killing spree
  • The X server and entire KDE desktop crashed and/or were killed by OOM-killer.

I'm honestly not sure what the chain of events was -- system logs don't show the OOM-killer touching PyCharm, for example -- but switching to that 1st tab after fullscreening PyCharm seemed to be the trigger.

So I'm suspecting either some memory leak in the plugin, or some bug related to the fullscreen mode / changed window dimensions that happened to crash PyCharm at the same time.

Environment:

Debian 11, KDE, 32 GB RAM

PyCharm 2021.3.2 (Community Edition)
Build #PC-213.6777.50, built on January 27, 2022
Runtime version: 11.0.13+7-b1751.25 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.

Error message (on next PyCharm startup)

Exception in plugin Excalidraw Integration (0.3.2)

Unhandled exception in [StandaloneCoroutine{Cancelling}@e86ee73, Dispatchers.Default]

java.lang.NullPointerException
	at com.github.bric3.excalidraw.editor.ExcalidrawWebViewController.runJS(ExcalidrawWebViewController.kt:352)
	at com.github.bric3.excalidraw.editor.ExcalidrawWebViewController.saveAsCoroutines(ExcalidrawWebViewController.kt:333)
	at com.github.bric3.excalidraw.editor.ExcalidrawEditor$saveCoroutines$1.invokeSuspend(ExcalidrawEditor.kt:210)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)

Add library

Nice to have Excalidraw as a IntelliJ pluging 😄

Is it possible to add library in the plugin like in excalidraw.com?

Plugin:
Skjermbilde 2021-08-19 kl  21 51 44

excalidraw.com
Skjermbilde 2021-08-19 kl  21 53 24

Plugin version used 0.3.1

Detect and fallback when JCEF is not available

From the JCEF documentation

It is necessary to check if JCEF is supported

if (!JBCefApp.isSupported()) {
  // Fallback to an alternative browser-less solution
  return;
}

Possible reasons :

JCEF can be unsupported when:

  • It’s not available in the IDE runtime (the IDE is started with an alternative OpenJDK).
  • Its version is not compatible with the running IDE.

Exception IntelliJ 2023.1 / Excalidraw 0.3.2

ticket copied from excalidraw/excalidraw#6524 ...

I have this exception after installing Excalidraw Plugin in IntelliJ; it prevents rendering my Asciidoc files including diagrams.

Unhandled exception in [StandaloneCoroutine{Cancelling}@27bd0d04, Dispatchers.Default]

java.lang.NullPointerException: Cannot invoke "org.cef.browser.CefFrame.getURL()" because the return value of "org.cef.browser.CefBrowser.getMainFrame()" is null
	at com.github.bric3.excalidraw.editor.ExcalidrawWebViewController.runJS(ExcalidrawWebViewController.kt:352)
	at com.github.bric3.excalidraw.editor.ExcalidrawWebViewController.saveAsCoroutines(ExcalidrawWebViewController.kt:333)
	at com.github.bric3.excalidraw.editor.ExcalidrawEditor$saveCoroutines$1.invokeSuspend(ExcalidrawEditor.kt:210)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)
	Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelled}@27bd0d04, Dispatchers.Default]

java.lang.AssertionError: Not alive: Terminating

Overall the plugin works great, but from time to time I'm receiving the following error.

Unhandled exception in [StandaloneCoroutine{Cancelling}@77516895, Dispatchers.Default]

java.lang.AssertionError: Not alive: Terminating
	at com.jetbrains.rd.util.lifetime.RLifetimeKt.assertAlive(RLifetime.kt:347)
	at com.github.bric3.excalidraw.editor.ExcalidrawWebViewController.runJS(ExcalidrawWebViewController.kt:349)
	at com.github.bric3.excalidraw.editor.ExcalidrawWebViewController.saveAsCoroutines(ExcalidrawWebViewController.kt:333)
	at com.github.bric3.excalidraw.editor.ExcalidrawEditor$saveCoroutines$1.invokeSuspend(ExcalidrawEditor.kt:210)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)

IntelliJ IDEA 2021.2.2 (Ultimate Edition)
Build #IU-212.5284.40, built on September 14, 2021
Runtime version: 11.0.12+7-b1504.28 x86_64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
macOS 11.6
GC: G1 Young Generation, G1 Old Generation
Memory: 1262M
Cores: 16
Non-Bundled Plugins: com.github.bric3.excalidraw (0.3.2), org.openpolicyagent.opa-idea-plugin (0.6.0.0-211), org.jetbrains.plugins.go-template (212.4746.52), org.jetbrains.kotlin (212-1.5.31-release-546-IJ4638.7), com.intellij.kubernetes (212.5284.17), org.jetbrains.plugins.go (212.5284.31)
Kotlin: 212-1.5.31-release-546-IJ4638.7

Handle file change while editing, eg on git checkout

  • If the file is read only, only reload the file.

  • If the editor is dirty, then handle the change. Either

    • save the current editor to a different file, then load the file content
    • ignore file change and overwrite current file

More readable icons

I need help on this one, currently I have 3 different file icons, and they all look terrible.

image

image

image

image

White Background for Dracula

Is there anyway I can have the plugin create drawings such that the background is white and the lines/texts are black by default while in dracula mode? When I switch appearance in IntelliJ to other appearances I get the desired display of newly created Excalidraws. Also when I open an existing Excalidraw drawing that was drawn with a white background and black lines/texts the plugin is displaying it incorrectly with black background and white lines/text again only in Dracula mode.

Crashing in Rider 2023.2 Build #RD-232.8660.212, built on August 1, 2023

Rider crashes everytime I try opening the excalidraw file.

Happens for a empty excalidraw file too.

MacOS: 13.5 (22G74)
Excalidraw plugin: 0.3.2

Crash report:

      #
   # A fatal error has been detected by the Java Runtime Environment:
   #
   #  SIGSEGV (0xb) at pc=0x0000000000000000, pid=4942, tid=101891
   #
   # JRE version: OpenJDK Runtime Environment JBR-17.0.7+7-1000.6-jcef (17.0.7+7) (build 17.0.7+7-b1000.6)
   # Java VM: OpenJDK 64-Bit Server VM JBR-17.0.7+7-1000.6-jcef (17.0.7+7-b1000.6, mixed mode, tiered, compressed oops, compressed class ptrs, g1 gc, bsd-amd64)
   # Problematic frame:
   # C  0x0000000000000000
   #
   # No core dump will be written. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
   #
   # If you would like to submit a bug report, please visit:
   #   https://youtrack.jetbrains.com/issues/JBR
   # The crash happened outside the Java Virtual Machine in native code.
   # See problematic frame for where to report the bug.
   #

   ---------------  S U M M A R Y ------------

   Command Line: -XX:ErrorFile=/Users/resting/java_error_in_rider_%p.log -XX:HeapDumpPath=/Users/resting/java_error_in_rider.hprof -Xms128m -Xmx1500m -XX:ReservedCodeCacheSize=512m -XX:+UseG1GC -XX:SoftRefLRUPolicyMSPerMB=50 -XX:CICompilerCount=2 -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow -XX:+IgnoreUnrecognizedVMOptions -XX:CompileCommand=exclude,com/intellij/openapi/vfs/impl/FilePartNodeRoot,trieDescend -ea -Dsun.io.useCanonCaches=false -Dsun.java2d.metal=true -Djbr.catch.SIGABRT=true -Djdk.http.auth.tunneling.disabledSchemes="" -Djdk.attach.allowAttachSelf=true -Djdk.module.illegalAccess.silent=true -Dkotlinx.coroutines.debug=off -Dapple.awt.application.appearance=system -Dide.no.platform.update=true -Dtoolbox.notification.token=vifHefh2U2-mJifxh2FWJnlEtF18_aziydJyipE_Kv8= -Dtoolbox.notification.portFile=/Users/resting/Library/Application Support/JetBrains/Toolbox/apps/Rider/ch-0/232.8660.212/Rider.app.vmoptions.port -Didea.plugins.path=/Users/resting/Library/Application Support/JetBrains/Toolbox/apps/Rider/ch-0/232.8660.212/Rider.app.plugins -Xmx8000m -Djb.vmOptionsFile=/Users/resting/Library/Application Support/JetBrains/Toolbox/apps/Rider/ch-0/232.8660.212/Rider.app.vmoptions --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.ref=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.nio.charset=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.base/java.time=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED --add-opens=java.base/jdk.internal.vm=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/sun.nio.fs=ALL-UNNAMED --add-opens=java.base/sun.security.ssl=ALL-UNNAMED --add-opens=java.base/sun.security.util=ALL-UNNAMED --add-opens=java.base/sun.net.dns=ALL-UNNAMED --add-opens=java.desktop/com.apple.eawt=ALL-UNNAMED --add-opens=java.desktop/com.apple.eawt.event=ALL-UNNAMED --add-opens=java.desktop/com.apple.laf=ALL-UNNAMED --add-opens=java.desktop/java.awt=ALL-UNNAMED --add-opens=java.desktop/java.awt.dnd.peer=ALL-UNNAMED --add-opens=java.desktop/java.awt.event=ALL-UNNAMED --add-opens=java.desktop/java.awt.image=ALL-UNNAMED --add-opens=java.desktop/java.awt.peer=ALL-UNNAMED --add-opens=java.desktop/java.awt.font=ALL-UNNAMED --add-opens=java.desktop/javax.swing=ALL-UNNAMED --add-opens=java.desktop/javax.swing.plaf.basic=ALL-UNNAMED --add-opens=java.desktop/javax.swing.text.html=ALL-UNNAMED --add-opens=java.desktop/sun.awt.datatransfer=ALL-UNNAMED --add-opens=java.desktop/sun.awt.image=ALL-UNNAMED --add-opens=java.desktop/sun.awt=ALL-UNNAMED --add-opens=java.desktop/sun.font=ALL-UNNAMED --add-opens=java.desktop/sun.java2d=ALL-UNNAMED --add-opens=java.desktop/sun.lwawt=ALL-UNNAMED --add-opens=java.desktop/sun.lwawt.macosx=ALL-UNNAMED --add-opens=java.desktop/sun.swing=ALL-UNNAMED --add-opens=java.desktop/com.sun.java.swing=ALL-UNNAMED --add-opens=jdk.attach/sun.tools.attach=ALL-UNNAMED --add-opens=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-opens=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED --add-opens=jdk.jdi/com.sun.tools.jdi=ALL-UNNAMED -Djava.system.class.loader=com.intellij.util.lang.PathClassLoader -Djna.nosys=true -Dpty4j.preferred.native.folder=/Users/resting/Library/Application Support/JetBrains/Toolbox/apps/Rider/ch-0/232.8660.212/Rider.app/Contents/lib/pty4j -Djna.boot.library.path=/Users/resting/Library/Application Support/JetBrains/Toolbox/apps/Rider/ch-0/232.8660.212/Rider.app/Contents/lib/jna/amd64 -Didea.class.before.app=com.jetbrains.rider.protocol.EarlyBackendStarter -Djna.noclasspath=true -Daether.connector.resumeDownloads=false -Didea.show.customize.ide.wizard=true -Didea.executable=rider -Dsplash=true -Didea.platform.prefix=Rider -Didea.vendor.name=JetBrains -Didea.paths.selector=Rider2023.2 -Dide.native.launcher=true -Didea.home.path=/Users/resting/Library/Application Support/JetBrains/Toolbox/apps/Rider/ch-0/232.8660.212/Rider.app/Contents 

   Host: "iMac20,1" x86_64 3300 MHz, 12 cores, 24G, Darwin 22.6.0, macOS 13.5 (22G74)
   Time: Wed Aug 23 07:36:02 2023 +08 elapsed time: 397.368939 seconds (0d 0h 6m 37s)

   ---------------  T H R E A D  ---------------

   Current thread (0x00007f98648dc600):  JavaThread "AWT-EventQueue-0" [_thread_in_native, id=101891, stack(0x00007000171bc000,0x00007000172bc000)]

   Stack: [0x00007000171bc000,0x00007000172bc000],  sp=0x00007000172b7ec8,  free space=1007k
   Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
   j  org.cef.CefApp.N_ClearSchemeHandlerFactories()Z+0 jcef
   j  org.cef.CefApp.clearSchemeHandlerFactories()Z+1 jcef
   j  com.github.bric3.excalidraw.editor.ExcalidrawWebViewController$Companion.initializeSchemeHandler()V+7
   j  com.github.bric3.excalidraw.editor.ExcalidrawWebViewController.initJcefPanel()V+3
   j  com.github.bric3.excalidraw.editor.ExcalidrawWebViewController.<init>(Lcom/jetbrains/rd/util/lifetime/Lifetime;Ljava/lang/String;)V+91
   j  com.github.bric3.excalidraw.editor.ExcalidrawEditor.initViewIfSupported()V+22
   j  com.github.bric3.excalidraw.editor.ExcalidrawEditor.<init>(Lcom/intellij/openapi/project/Project;Lcom/intellij/openapi/vfs/VirtualFile;)V+190
   j  com.github.bric3.excalidraw.editor.ExcalidrawEditorProvider$createEditorAsync$1.build()Lcom/intellij/openapi/fileEditor/FileEditor;+39
   j  com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl.createComposite(Lcom/intellij/openapi/vfs/VirtualFile;Ljava/util/List;)Lcom/intellij/openapi/fileEditor/impl/EditorComposite;+138
   j  com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl$openFileInEdt$2$1.invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;+138
   J 22399 c2 kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(Ljava/lang/Object;)V (128 bytes) @ 0x00000001278a5560 [0x00000001278a54e0+0x0000000000000080]
   J 46024 c2 kotlinx.coroutines.DispatchedTask.run()V (574 bytes) @ 0x0000000127d74100 [0x0000000127d73c40+0x00000000000004c0]
   J 29018 c1 com.intellij.openapi.application.impl.DispatchedRunnable.run()V (57 bytes) @ 0x0000000119a5976c [0x0000000119a593a0+0x00000000000003cc]
   J 42107 c1 com.intellij.openapi.application.TransactionGuardImpl.runWithWritingAllowed(Ljava/lang/Runnable;)V (42 bytes) @ 0x000000011879babc [0x000000011879b940+0x000000000000017c]
   J 42101 c2 com.intellij.openapi.application.impl.FlushQueue.runNextEvent(Lcom/intellij/openapi/application/impl/FlushQueue$RunnableInfo;)V (599 bytes) @ 0x000000012829fb5c [0x000000012829f980+0x00000000000001dc]
   J 22879 c1 com.intellij.openapi.application.impl.FlushQueue.flushNow()V (95 bytes) @ 0x0000000118b4ce3c [0x0000000118b4cc20+0x000000000000021c]
   J 28072 c1 com.intellij.openapi.application.impl.FlushQueue$$Lambda$424+0x000000080053e8b0.run()V (8 bytes) @ 0x00000001187af43c [0x00000001187af3c0+0x000000000000007c]
   J 28756 c2 java.awt.event.InvocationEvent.dispatch()V java.desktop (69 bytes) @ 0x0000000127e3db14 [0x0000000127e3dac0+0x0000000000000054]
   J 33311 c2 java.awt.EventQueue$3.run()Ljava/lang/Object; java.desktop (5 bytes) @ 0x000000012819d780 [0x000000012819d440+0x0000000000000340]
   J 33406 c2 java.awt.EventQueue.dispatchEvent(Ljava/awt/AWTEvent;)V java.desktop (80 bytes) @ 0x00000001281b686c [0x00000001281b65a0+0x00000000000002cc]
   J 45297 c1 com.intellij.ide.IdeEventQueue.defaultDispatchEvent(Ljava/awt/AWTEvent;)V (145 bytes) @ 0x000000011af5baec [0x000000011af5ae00+0x0000000000000cec]
   J 45299 c1 com.intellij.ide.IdeEventQueue$$Lambda$844+0x0000000800c15f38.run()V (12 bytes) @ 0x000000011af5d6ec [0x000000011af5d120+0x00000000000005cc]
   J 41827 c2 com.intellij.ide.IdeEventQueue._dispatchEvent(Ljava/awt/AWTEvent;)V (357 bytes) @ 0x00000001283c6618 [0x00000001283c55a0+0x0000000000001078]
   J 28122 c2 com.intellij.ide.IdeEventQueueKt$$Lambda$842+0x0000000800c0bd08.run()V (8 bytes) @ 0x0000000127da0570 [0x0000000127da0040+0x0000000000000530]
   J 28558 c2 com.intellij.ide.IdeEventQueueKt.performActivity(Ljava/awt/AWTEvent;Lkotlin/jvm/functions/Function0;)V (111 bytes) @ 0x0000000127e0aa00 [0x0000000127e0a5c0+0x0000000000000440]
   J 45296 c1 com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$7(Lcom/intellij/ide/IdeEventQueue;Ljava/awt/AWTEvent;ZLjava/awt/AWTEvent;Lcom/intellij/diagnostic/EventWatcher;Ljava/lang/Runnable;Ljava/lang/Class;J)V (430 bytes) @ 0x000000011af5578c [0x000000011af54680+0x000000000000110c]
   J 25472 c2 com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(Ljava/lang/Runnable;)V (58 bytes) @ 0x000000012791f400 [0x000000012791f260+0x00000000000001a0]
   J 37585 c2 com.intellij.ide.IdeEventQueue.dispatchEvent(Ljava/awt/AWTEvent;)V (708 bytes) @ 0x0000000127face64 [0x0000000127fab2e0+0x0000000000001b84]
   j  com.intellij.openapi.progress.impl.PlatformTaskSupportKt.pumpEventsForHierarchy(Lcom/intellij/ide/IdeEventQueue;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;)V+71
   j  com.intellij.openapi.progress.impl.PlatformTaskSupportKt.access$pumpEventsForHierarchy(Lcom/intellij/ide/IdeEventQueue;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;)V+3
   j  com.intellij.openapi.progress.impl.PlatformTaskSupport$runWithModalProgressBlockingInternal$2.invoke(Lcom/intellij/openapi/application/ModalityState;)Ljava/lang/Object;+227
   j  com.intellij.openapi.progress.impl.PlatformTaskSupport$runWithModalProgressBlockingInternal$2.invoke(Ljava/lang/Object;)Ljava/lang/Object;+5
   j  com.intellij.openapi.application.impl.ModalityKt.inModalContext(Lcom/intellij/openapi/application/impl/JobProvider;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;+34
   j  com.intellij.openapi.progress.impl.PlatformTaskSupport.runWithModalProgressBlockingInternal(Lkotlinx/coroutines/CoroutineScope;Lkotlinx/coroutines/CoroutineDispatcher;Lcom/intellij/openapi/progress/impl/ModalIndicatorDescriptor;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;+39
   j  com.intellij.openapi.progress.impl.PlatformTaskSupport.access$runWithModalProgressBlockingInternal(Lcom/intellij/openapi/progress/impl/PlatformTaskSupport;Lkotlinx/coroutines/CoroutineScope;Lkotlinx/coroutines/CoroutineDispatcher;Lcom/intellij/openapi/progress/impl/ModalIndicatorDescriptor;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;+6
   j  com.intellij.openapi.progress.impl.PlatformTaskSupport$runWithModalProgressBlockingInternal$1.invoke(Lkotlin/coroutines/CoroutineContext;)Ljava/lang/Object;+54
   j  com.intellij.openapi.progress.impl.PlatformTaskSupport$runWithModalProgressBlockingInternal$1.invoke(Ljava/lang/Object;)Ljava/lang/Object;+5
   j  com.intellij.openapi.progress.ContextKt.prepareThreadContext(Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;+46
   j  com.intellij.openapi.progress.impl.PlatformTaskSupport.runWithModalProgressBlockingInternal(Lcom/intellij/openapi/progress/ModalTaskOwner;Ljava/lang/String;Lcom/intellij/openapi/progress/TaskCancellation;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;+45
   j  com.intellij.openapi.progress.TasksKt.runWithModalProgressBlocking(Lcom/intellij/openapi/progress/ModalTaskOwner;Ljava/lang/String;Lcom/intellij/openapi/progress/TaskCancellation;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;+31
   j  com.intellij.openapi.progress.TasksKt.runWithModalProgressBlocking(Lcom/intellij/openapi/project/Project;Ljava/lang/String;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;+42
   j  com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl.openFile(Lcom/intellij/openapi/vfs/VirtualFile;Lcom/intellij/openapi/fileEditor/impl/EditorWindow;Lcom/intellij/openapi/fileEditor/impl/FileEditorOpenOptions;)Lcom/intellij/openapi/fileEditor/FileEditorComposite;+369
   j  com.intellij.openapi.fileEditor.ex.FileEditorManagerEx.openFile(Lcom/intellij/openapi/vfs/VirtualFile;Z)[Lcom/intellij/openapi/fileEditor/FileEditor;+26
   j  com.jetbrains.rider.projectView.utils.NavigationUtilKt.navigate(Lcom/intellij/openapi/vfs/VirtualFile;Lcom/intellij/openapi/project/Project;Z)V+66
   j  com.jetbrains.rider.projectView.views.SolutionViewNode.navigate(Z)V+40
   j  com.intellij.platform.ide.navigation.impl.IdeNavigationServiceKt$navigateToSource$2$1.invoke()V+17
   j  com.intellij.platform.ide.navigation.impl.IdeNavigationServiceKt$navigateToSource$2$1.invoke()Ljava/lang/Object;+1
   J 20660 c1 com.intellij.openapi.progress.CoroutinesKt.blockingContext(Lkotlin/coroutines/CoroutineContext;Lkotlin/jvm/functions/Function0;)Ljava/lang/Object; (149 bytes) @ 0x0000000118d921a4 [0x0000000118d91fa0+0x0000000000000204]
   J 19117 c1 com.intellij.openapi.progress.CoroutinesKt.blockingContext(Lkotlin/jvm/functions/Function0;Lkotlin/coroutines/Continuation;)Ljava/lang/Object; (13 bytes) @ 0x0000000118adc79c [0x0000000118adc740+0x000000000000005c]
   j  com.intellij.platform.ide.navigation.impl.IdeNavigationServiceKt$navigateToSource$2.invokeSuspend(Ljava/lang/Object;)Ljava/lang/Object;+63
   J 22399 c2 kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(Ljava/lang/Object;)V (128 bytes) @ 0x00000001278a5560 [0x00000001278a54e0+0x0000000000000080]
   J 46024 c2 kotlinx.coroutines.DispatchedTask.run()V (574 bytes) @ 0x0000000127d74100 [0x0000000127d73c40+0x00000000000004c0]
   J 29018 c1 com.intellij.openapi.application.impl.DispatchedRunnable.run()V (57 bytes) @ 0x0000000119a5976c [0x0000000119a593a0+0x00000000000003cc]
   J 42107 c1 com.intellij.openapi.application.TransactionGuardImpl.runWithWritingAllowed(Ljava/lang/Runnable;)V (42 bytes) @ 0x000000011879babc [0x000000011879b940+0x000000000000017c]
   J 42101 c2 com.intellij.openapi.application.impl.FlushQueue.runNextEvent(Lcom/intellij/openapi/application/impl/FlushQueue$RunnableInfo;)V (599 bytes) @ 0x000000012829fb5c [0x000000012829f980+0x00000000000001dc]
   J 22879 c1 com.intellij.openapi.application.impl.FlushQueue.flushNow()V (95 bytes) @ 0x0000000118b4ce3c [0x0000000118b4cc20+0x000000000000021c]
   J 28072 c1 com.intellij.openapi.application.impl.FlushQueue$$Lambda$424+0x000000080053e8b0.run()V (8 bytes) @ 0x00000001187af43c [0x00000001187af3c0+0x000000000000007c]
   J 28756 c2 java.awt.event.InvocationEvent.dispatch()V java.desktop (69 bytes) @ 0x0000000127e3db14 [0x0000000127e3dac0+0x0000000000000054]
   J 33311 c2 java.awt.EventQueue$3.run()Ljava/lang/Object; java.desktop (5 bytes) @ 0x000000012819d780 [0x000000012819d440+0x0000000000000340]
   J 33406 c2 java.awt.EventQueue.dispatchEvent(Ljava/awt/AWTEvent;)V java.desktop (80 bytes) @ 0x00000001281b686c [0x00000001281b65a0+0x00000000000002cc]
   J 45297 c1 com.intellij.ide.IdeEventQueue.defaultDispatchEvent(Ljava/awt/AWTEvent;)V (145 bytes) @ 0x000000011af5baec [0x000000011af5ae00+0x0000000000000cec]
   J 45299 c1 com.intellij.ide.IdeEventQueue$$Lambda$844+0x0000000800c15f38.run()V (12 bytes) @ 0x000000011af5d6ec [0x000000011af5d120+0x00000000000005cc]
   J 41827 c2 com.intellij.ide.IdeEventQueue._dispatchEvent(Ljava/awt/AWTEvent;)V (357 bytes) @ 0x00000001283c6618 [0x00000001283c55a0+0x0000000000001078]
   J 28122 c2 com.intellij.ide.IdeEventQueueKt$$Lambda$842+0x0000000800c0bd08.run()V (8 bytes) @ 0x0000000127da0570 [0x0000000127da0040+0x0000000000000530]
   J 28558 c2 com.intellij.ide.IdeEventQueueKt.performActivity(Ljava/awt/AWTEvent;Lkotlin/jvm/functions/Function0;)V (111 bytes) @ 0x0000000127e0aa00 [0x0000000127e0a5c0+0x0000000000000440]
   J 45296 c1 com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$7(Lcom/intellij/ide/IdeEventQueue;Ljava/awt/AWTEvent;ZLjava/awt/AWTEvent;Lcom/intellij/diagnostic/EventWatcher;Ljava/lang/Runnable;Ljava/lang/Class;J)V (430 bytes) @ 0x000000011af5578c [0x000000011af54680+0x000000000000110c]
   J 25472 c2 com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(Ljava/lang/Runnable;)V (58 bytes) @ 0x000000012791f400 [0x000000012791f260+0x00000000000001a0]
   J 37585 c2 com.intellij.ide.IdeEventQueue.dispatchEvent(Ljava/awt/AWTEvent;)V (708 bytes) @ 0x0000000127face64 [0x0000000127fab2e0+0x0000000000001b84]
   j  com.intellij.openapi.progress.impl.PlatformTaskSupportKt.pumpEventsForHierarchy(Lcom/intellij/ide/IdeEventQueue;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;)V+71
   j  com.intellij.openapi.progress.impl.PlatformTaskSupportKt.access$pumpEventsForHierarchy(Lcom/intellij/ide/IdeEventQueue;Lkotlin/jvm/functions/Function0;Lkotlin/jvm/functions/Function0;)V+3
   j  com.intellij.openapi.progress.impl.PlatformTaskSupport$runWithModalProgressBlockingInternal$2.invoke(Lcom/intellij/openapi/application/ModalityState;)Ljava/lang/Object;+227
   j  com.intellij.openapi.progress.impl.PlatformTaskSupport$runWithModalProgressBlockingInternal$2.invoke(Ljava/lang/Object;)Ljava/lang/Object;+5
   j  com.intellij.openapi.application.impl.ModalityKt.inModalContext(Lcom/intellij/openapi/application/impl/JobProvider;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;+34
   j  com.intellij.openapi.progress.impl.PlatformTaskSupport.runWithModalProgressBlockingInternal(Lkotlinx/coroutines/CoroutineScope;Lkotlinx/coroutines/CoroutineDispatcher;Lcom/intellij/openapi/progress/impl/ModalIndicatorDescriptor;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;+39
   j  com.intellij.openapi.progress.impl.PlatformTaskSupport.access$runWithModalProgressBlockingInternal(Lcom/intellij/openapi/progress/impl/PlatformTaskSupport;Lkotlinx/coroutines/CoroutineScope;Lkotlinx/coroutines/CoroutineDispatcher;Lcom/intellij/openapi/progress/impl/ModalIndicatorDescriptor;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;+6
   j  com.intellij.openapi.progress.impl.PlatformTaskSupport$runWithModalProgressBlockingInternal$1.invoke(Lkotlin/coroutines/CoroutineContext;)Ljava/lang/Object;+54
   j  com.intellij.openapi.progress.impl.PlatformTaskSupport$runWithModalProgressBlockingInternal$1.invoke(Ljava/lang/Object;)Ljava/lang/Object;+5
   j  com.intellij.openapi.progress.ContextKt.prepareThreadContext(Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;+46
   j  com.intellij.openapi.progress.impl.PlatformTaskSupport.runWithModalProgressBlockingInternal(Lcom/intellij/openapi/progress/ModalTaskOwner;Ljava/lang/String;Lcom/intellij/openapi/progress/TaskCancellation;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;+45
   j  com.intellij.openapi.progress.TasksKt.runWithModalProgressBlocking(Lcom/intellij/openapi/progress/ModalTaskOwner;Ljava/lang/String;Lcom/intellij/openapi/progress/TaskCancellation;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;+31
   j  com.intellij.openapi.progress.TasksKt.runWithModalProgressBlocking(Lcom/intellij/openapi/project/Project;Ljava/lang/String;Lkotlin/jvm/functions/Function2;)Ljava/lang/Object;+42
   j  com.intellij.util.OpenSourceUtilKt.openSourcesFrom(Lcom/intellij/openapi/actionSystem/DataContext;Z)V+84
   j  com.intellij.util.OpenSourceUtil.openSourcesFrom(Lcom/intellij/openapi/actionSystem/DataContext;Z)V+18
   j  com.intellij.util.EditSourceOnDoubleClickHandler$TreeMouseListener.processDoubleClick(Ljava/awt/event/MouseEvent;Lcom/intellij/openapi/actionSystem/DataContext;Ljavax/swing/tree/TreePath;)V+68
   j  com.jetbrains.rider.projectView.views.impl.SolutionViewTreeMouseListener.processDoubleClick(Ljava/awt/event/MouseEvent;Lcom/intellij/openapi/actionSystem/DataContext;Ljavax/swing/tree/TreePath;)V+64
   j  com.intellij.util.EditSourceOnDoubleClickHandler$TreeMouseListener.onDoubleClick(Ljava/awt/event/MouseEvent;)Z+141
   j  com.intellij.ui.DoubleClickListener.onClick(Ljava/awt/event/MouseEvent;I)Z+23
   j  com.intellij.ui.ClickListener$1.mouseReleased(Ljava/awt/event/MouseEvent;)V+85
   j  java.awt.AWTEventMulticaster.mouseReleased(Ljava/awt/event/MouseEvent;)V+21 java.desktop
   j  java.awt.AWTEventMulticaster.mouseReleased(Ljava/awt/event/MouseEvent;)V+8 java.desktop
   j  java.awt.AWTEventMulticaster.mouseReleased(Ljava/awt/event/MouseEvent;)V+8 java.desktop
   J 32557 c1 java.awt.Component.processMouseEvent(Ljava/awt/event/MouseEvent;)V java.desktop (100 bytes) @ 0x00000001198aa224 [0x00000001198a9dc0+0x0000000000000464]
   J 32556 c1 javax.swing.JComponent.processMouseEvent(Ljava/awt/event/MouseEvent;)V java.desktop (27 bytes) @ 0x0000000117846a74 [0x0000000117846860+0x0000000000000214]
   j  com.intellij.ui.treeStructure.Tree.processMouseEvent(Ljava/awt/event/MouseEvent;)V+15
   j  com.intellij.ide.dnd.aware.DnDAwareTree.processMouseEvent(Ljava/awt/event/MouseEvent;)V+20
   J 43226 c2 java.awt.Component.processEvent(Ljava/awt/AWTEvent;)V java.desktop (220 bytes) @ 0x000000012855064c [0x0000000128550000+0x000000000000064c]
   J 45038 c2 java.awt.Container.processEvent(Ljava/awt/AWTEvent;)V java.desktop (22 bytes) @ 0x0000000128639f54 [0x0000000128639ea0+0x00000000000000b4]
   J 45138 c1 java.awt.Component.dispatchEventImpl(Ljava/awt/AWTEvent;)V java.desktop (835 bytes) @ 0x000000011aeebf84 [0x000000011aee8000+0x0000000000003f84]
   J 44967 c2 java.awt.Container.dispatchEventImpl(Ljava/awt/AWTEvent;)V java.desktop (129 bytes) @ 0x000000012862befc [0x000000012862b500+0x00000000000009fc]
   J 43538 c1 java.awt.LightweightDispatcher.retargetMouseEvent(Ljava/awt/Component;ILjava/awt/event/MouseEvent;)V java.desktop (372 bytes) @ 0x000000011a239174 [0x000000011a236ae0+0x0000000000002694]
   J 44967 c2 java.awt.Container.dispatchEventImpl(Ljava/awt/AWTEvent;)V java.desktop (129 bytes) @ 0x000000012862bb30 [0x000000012862b500+0x0000000000000630]
   J 45306 c2 java.awt.Window.dispatchEventImpl(Ljava/awt/AWTEvent;)V java.desktop (23 bytes) @ 0x00000001286a62f8 [0x00000001286a62a0+0x0000000000000058]
   J 33311 c2 java.awt.EventQueue$3.run()Ljava/lang/Object; java.desktop (5 bytes) @ 0x000000012819d878 [0x000000012819d440+0x0000000000000438]
   J 33406 c2 java.awt.EventQueue.dispatchEvent(Ljava/awt/AWTEvent;)V java.desktop (80 bytes) @ 0x00000001281b6bb0 [0x00000001281b65a0+0x0000000000000610]
   J 45297 c1 com.intellij.ide.IdeEventQueue.defaultDispatchEvent(Ljava/awt/AWTEvent;)V (145 bytes) @ 0x000000011af5baec [0x000000011af5ae00+0x0000000000000cec]
   J 41827 c2 com.intellij.ide.IdeEventQueue._dispatchEvent(Ljava/awt/AWTEvent;)V (357 bytes) @ 0x00000001283c6248 [0x00000001283c55a0+0x0000000000000ca8]
   J 28122 c2 com.intellij.ide.IdeEventQueueKt$$Lambda$842+0x0000000800c0bd08.run()V (8 bytes) @ 0x0000000127da0570 [0x0000000127da0040+0x0000000000000530]
   J 28558 c2 com.intellij.ide.IdeEventQueueKt.performActivity(Ljava/awt/AWTEvent;Lkotlin/jvm/functions/Function0;)V (111 bytes) @ 0x0000000127e0aa00 [0x0000000127e0a5c0+0x0000000000000440]
   J 45296 c1 com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$7(Lcom/intellij/ide/IdeEventQueue;Ljava/awt/AWTEvent;ZLjava/awt/AWTEvent;Lcom/intellij/diagnostic/EventWatcher;Ljava/lang/Runnable;Ljava/lang/Class;J)V (430 bytes) @ 0x000000011af5578c [0x000000011af54680+0x000000000000110c]
   J 25472 c2 com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(Ljava/lang/Runnable;)V (58 bytes) @ 0x000000012791f400 [0x000000012791f260+0x00000000000001a0]
   J 37585 c2 com.intellij.ide.IdeEventQueue.dispatchEvent(Ljava/awt/AWTEvent;)V (708 bytes) @ 0x0000000127face64 [0x0000000127fab2e0+0x0000000000001b84]
   J 33002 c2 java.awt.EventDispatchThread.pumpOneEventForFilters(I)V java.desktop (113 bytes) @ 0x00000001280c88d4 [0x00000001280c8360+0x0000000000000574]
   j  java.awt.EventDispatchThread.pumpEventsForFilter(ILjava/awt/Conditional;Ljava/awt/EventFilter;)V+35 java.desktop
   j  java.awt.EventDispatchThread.pumpEventsForHierarchy(ILjava/awt/Conditional;Ljava/awt/Component;)V+11 java.desktop
   j  java.awt.EventDispatchThread.pumpEvents(ILjava/awt/Conditional;)V+4 java.desktop
   j  java.awt.EventDispatchThread.pumpEvents(Ljava/awt/Conditional;)V+3 java.desktop
   j  java.awt.EventDispatchThread.run()V+18 java.desktop
   v  ~StubRoutines::call_stub

   siginfo: si_signo: 11 (SIGSEGV), si_code: 1 (SEGV_MAPERR), si_addr: 0x0000000000000000

   Register to memory mapping:

   RAX=0x00000001bd5220d0: Java_org_cef_CefApp_N_1ClearSchemeHandlerFactories+0 in /Users/resting/Library/Application Support/JetBrains/Toolbox/apps/Rider/ch-0/232.8660.212/Rider.app/Contents/jbr/Contents/Home/lib/libjcef.dylib at 0x00000001bd51d000
   RBX={method} {0x00000002445ebd20} 'N_ClearSchemeHandlerFactories' '()Z' in 'org/cef/CefApp'
   RCX=0x000060000087e1b8 points into unknown readable memory: 0x0000000000000000 | 00 00 00 00 00 00 00 00
   RDX=0x0000000000000003 is an unknown value
   RSP=0x00007000172b7ec8 is pointing into the stack for thread: 0x00007f98648dc600
   RBP=0x00007000172b7ed0 is pointing into the stack for thread: 0x00007f98648dc600
   RSI=0x00007000172b7f60 is pointing into the stack for thread: 0x00007f98648dc600
   RDI=0x00007f98648dc8a8 points into unknown readable memory: 0x00000001136dff88 | 88 ff 6d 13 01 00 00 00
   R8 ={method} {0x00000002445ebd20} 'N_ClearSchemeHandlerFactories' '()Z' in 'org/cef/CefApp'
   R9 =0x00000000000000ff is an unknown value
   R10=0x0000000126fbc50b is at code_begin+843 in an Interpreter codelet
   method entry point (kind = native)  [0x0000000126fbc1c0, 0x0000000126fbca20]  2144 bytes
   R11=0x0000000000000112 is an unknown value
   R12=0x0 is NULL
   R13={method} {0x00000002445ebd20} 'N_ClearSchemeHandlerFactories' '()Z' in 'org/cef/CefApp'
   R14=0x00007000172b7f60 is pointing into the stack for thread: 0x00007f98648dc600
   R15=0x00007f98648dc600 is a thread


   Registers:
   RAX=0x00000001bd5220d0, RBX=0x00000002445ebd20, RCX=0x000060000087e1b8, RDX=0x0000000000000003
   RSP=0x00007000172b7ec8, RBP=0x00007000172b7ed0, RSI=0x00007000172b7f60, RDI=0x00007f98648dc8a8
   R8 =0x00000002445ebd20, R9 =0x00000000000000ff, R10=0x0000000126fbc50b, R11=0x0000000000000112
   R12=0x0000000000000000, R13=0x00000002445ebd20, R14=0x00007000172b7f60, R15=0x00007f98648dc600
   RIP=0x0000000000000000, EFLAGS=0x0000000000010202, ERR=0x0000000000000014
     TRAPNO=0x000000000000000e

   Top of Stack: (sp=0x00007000172b7ec8)
   0x00007000172b7ec8:   00000001bd5b2729 00007000172b7ee0
   0x00007000172b7ed8:   00000001bd5220d9 00007000172b7f40
   0x00007000172b7ee8:   0000000126fbc53a 0000000126fbc276
   0x00007000172b7ef8:   00007000172b7ef8 00000002445ebd20
   0x00007000172b7f08:   00007000172b7f60 00000002445f8998
   0x00007000172b7f18:   0000000000000000 0000000616002f10
   0x00007000172b7f28:   00000002445ebd20 0000000000000000
   0x00007000172b7f38:   00007000172b7f60 00007000172b7fb0
   0x00007000172b7f48:   0000000126fb8317 0000000000000000
   0x00007000172b7f58:   0000000126fb9f60 0000000638513228
   0x00007000172b7f68:   00007000172b7f68 00000002445eabd1
   0x00007000172b7f78:   00007000172b7fc8 00000002445f8998
   0x00007000172b7f88:   0000000000000000 0000000616002f10
   0x00007000172b7f98:   00000002445eac08 00007000172b7f60
   0x00007000172b7fa8:   00007000172b7fc8 00007000172b8018
   0x00007000172b7fb8:   0000000126fb8317 0000000000000000
   0x00007000172b7fc8:   0000000638513228 00007000172b7fd0
   0x00007000172b7fd8:   0000000256026ab7 00007000172b8068
   0x00007000172b7fe8:   0000000256026d38 0000000000000000
   0x00007000172b7ff8:   00000006384c60c0 0000000256026b50
   0x00007000172b8008:   00007000172b7fc8 00007000172b8068
   0x00007000172b8018:   00007000172b80b8 0000000126fb842b
   0x00007000172b8028:   0000000000000000 0000000000000000
   0x00007000172b8038:   0000000000000000 0000000000000000
   0x00007000172b8048:   0000000000000000 0000000000000000
   0x00007000172b8058:   0000000000000000 0000000000000000
   0x00007000172b8068:   00000006384c6248 00007000172b8070
   0x00007000172b8078:   00000002560247cb 00007000172b80f8
   0x00007000172b8088:   00000002560259c0 0000000000000000
   0x00007000172b8098:   00000006384c5610 0000000256024948
   0x00007000172b80a8:   00007000172b8068 00007000172b80f8
   0x00007000172b80b8:   00007000172b8148 0000000126fb842b 

   Instructions: (pc=0x0000000000000000)
   0xffffffffffffff00:   


   Stack slot to memory mapping:
   stack at sp + 0 slots: 0x00000001bd5b2729: _Z30CefClearSchemeHandlerFactoriesv+0x9 in /Users/resting/Library/Application Support/JetBrains/Toolbox/apps/Rider/ch-0/232.8660.212/Rider.app/Contents/jbr/Contents/Home/lib/libjcef.dylib at 0x00000001bd51d000
   stack at sp + 1 slots: 0x00007000172b7ee0 is pointing into the stack for thread: 0x00007f98648dc600
   stack at sp + 2 slots: 0x00000001bd5220d9: Java_org_cef_CefApp_N_1ClearSchemeHandlerFactories+0x9 in /Users/resting/Library/Application Support/JetBrains/Toolbox/apps/Rider/ch-0/232.8660.212/Rider.app/Contents/jbr/Contents/Home/lib/libjcef.dylib at 0x00000001bd51d000
   stack at sp + 3 slots: 0x00007000172b7f40 is pointing into the stack for thread: 0x00007f98648dc600
   stack at sp + 4 slots: 0x0000000126fbc53a is at code_begin+890 in an Interpreter codelet
   method entry point (kind = native)  [0x0000000126fbc1c0, 0x0000000126fbca20]  2144 bytes
   stack at sp + 5 slots: 0x0000000126fbc276 is at code_begin+182 in an Interpreter codelet
   method entry point (kind = native)  [0x0000000126fbc1c0, 0x0000000126fbca20]  2144 bytes
   stack at sp + 6 slots: 0x00007000172b7ef8 is pointing into the stack for thread: 0x00007f98648dc600
   stack at sp + 7 slots: {method} {0x00000002445ebd20} 'N_ClearSchemeHandlerFactories' '()Z' in 'org/cef/CefApp'



      
      com.intellij.diagnostic.JBRCrash

Meta issue for 0.4.1

  • Whether to save automatically or on demand
  • #199
  • Understand why SVG files are saved with weird sizes (e.g. 63.xxx instead of 64)
  • #195

Unhandled NullPointerException on a CefFrame

Unhandled exception in [StandaloneCoroutine{Cancelling}@4f69667d, Dispatchers.Default]

java.lang.NullPointerException: Cannot invoke "org.cef.browser.CefFrame.getURL()" because the return value of "org.cef.browser.CefBrowser.getMainFrame()" is null
	at com.github.bric3.excalidraw.editor.ExcalidrawWebViewController.runJS(ExcalidrawWebViewController.kt:352)
	at com.github.bric3.excalidraw.editor.ExcalidrawWebViewController.saveAsCoroutines(ExcalidrawWebViewController.kt:333)
	at com.github.bric3.excalidraw.editor.ExcalidrawEditor$saveCoroutines$1.invokeSuspend(ExcalidrawEditor.kt:210)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)

IJ version

IntelliJ IDEA 2022.2.2 (Ultimate Edition)
Build #IU-222.4167.29, built on September 13, 2022
Licensed to ASML NETHERLANDS BV

Runtime version: 17.0.4+7-b469.53 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Windows 10 10.0
GC: G1 Young Generation, G1 Old Generation
Memory: 2012M
Cores: 8
Registry:
    ide.intellij.laf.enable.animation=true
    ide.balloon.shadow.size=0

Non-Bundled Plugins:
    youngstead.relative-line-numbers (1.0)
    org.intellij.plugins.hcl (222.4167.21)
    net.sjrx.intellij.plugins.systemdunitfiles (0.3.9)
    monokai-pro (1.9)
    dev.patrickpichler.darculaPitchBlackTheme (1.0.0)
    com.vermouthx.idea (1.13.3)
    com.thvardhan.gradianto (4.5)
    com.samdark.intellij-visual-studio-code-dark-plus (2.6)
    com.markskelton.one-dark-theme (5.7.0)
    com.jetbrains.darkPurpleTheme (1.3)
    com.github.bric3.excalidraw (0.3.2)
    com.arcticicestudio.nord.jetbrains (0.13.0)
    IdeaVIM (1.11.1)
    mobi.hsz.idea.gitignore (4.4.2)
    com.jetbrains.php (222.4167.37)
    org.jetbrains.plugins.phpstorm-remote-interpreter (222.4167.21)
    de.espend.idea.php.annotation (8.2.3)
    com.mesour.intellij.neon (1.0.4)
    com.kalessil.phpStorm.phpInspectionsEA (4.0.7.1)
    com.intellij.php.tools.quality.phpstan (222.4167.35)
    org.jetbrains.plugins.phpstorm-docker (222.4167.21)
    com.intellij.kubernetes (222.4167.21)
    Pythonid (222.4167.37)
    ru.adelf.idea.dotenv (2022.2)
    MetricsReloaded (1.12)

Kotlin: 222-1.7.10-release-334-IJ4167.29

Inconsistent resize button hover effect in Excalidraw

When attempting to resize objects in Excalidraw, I have noticed that the resize button hover effect can be inconsistent and difficult to use. Specifically, when hovering over the object resize button, it is not always selected, and the cursor does not smoothly transition from the pointer cursor to the stretch cursor that is used for resizing. This can make it difficult to accurately resize objects and can impact the overall user experience of Excalidraw.

One possible solution to this issue would be to improve the design or functionality of the resize button hover effect to make it more consistent and user-friendly. This could involve changes to the visual appearance of the button or adjustments to the way the hover effect is triggered. Overall, I believe that addressing this issue could significantly improve the usability and accessibility of Excalidraw for users who need to resize objects frequently.

bandicam.2023-03-06.01-47-11-981.mp4

double-click behaviour differs from the web version

When I double click on a box shape in the web version, I get to add a label that is associated with the shape.
When I double click on a box shape in the plugin tab, a new text label is added where I double clicked, which is not associated with the shape, and will not move with it.

With split panes, toolbar action apply to the selected / active editor

Suppose two diagrams are displayed side-to-side. Eg

image

Here, the right editor is selected (notice the blue line on the editor tab).

When toolbar icon is interacted on the right editor, the action will apply on the left editor which is the selected editor.

Either the toolbar should be disabled on non selected editor, or the true matching editor should be selected.

Crash in 2023.2.5

IU-232.10227.8, JRE 17.0.9+7-b1000.46x64 JetBrains s.r.o., OS Mac OS X(aarch64) v14.1.1, screens 4096.0x2304.0; Retina

  1. open a .excalidraw file. scribble something.
  2. close.
  3. crash
  Unhandled exception in [StandaloneCoroutine{Cancelling}@58f2c1b9, Dispatchers.Default]
  
  java.lang.AssertionError: Not alive: Lifetime `Anonymous` [Terminating, executing=0, resources=4]
at com.jetbrains.rd.util.lifetime.RLifetimeKt.assertAlive(RLifetime.kt:588)
at com.github.bric3.excalidraw.editor.ExcalidrawWebViewController.runJS(ExcalidrawWebViewController.kt:349)
at com.github.bric3.excalidraw.editor.ExcalidrawWebViewController.saveAsCoroutines(ExcalidrawWebViewController.kt:333)
at com.github.bric3.excalidraw.editor.ExcalidrawEditor$saveCoroutines$1.invokeSuspend(ExcalidrawEditor.kt:210)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684)
Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelled}@58f2c1b9, Dispatchers.Default]

Toggle light mode separate from IDE theme

It doesn't appear that the current plugin supports toggling light mode independent of the IDE color scheme. Would it be possible to add this in a future release?

Better scratch file support

Currently, the default file type for Excalidraw on the scratch menu is a JSON type, which causes the IDE to open a new JSON editor instead of a diagram editor. As an enhancement, it would be nice if the scratch file menu instead opened a diagram editor so users could go straight to the Excalidraw UI.

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Awaiting Schedule

These updates are awaiting their schedule. Click on a checkbox to get an update now.

  • chore(deps): update dependency eslint to v9

Pending Branch Automerge

These updates await pending status checks before automerging. Click on a checkbox to abort the branch automerge, and create a PR instead.

  • chore(deps): update yarn to v4.2.2
  • fix(deps): update dependency @types/node to v20.12.11

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Ignored or Blocked

These are blocked by an existing closed PR and will not be recreated unless you click a checkbox below.

Detected dependencies

github-actions
.github/workflows/build.yml
  • actions/checkout v4
  • gradle/wrapper-validation-action v2.1.3
  • actions/checkout v4
  • actions/setup-java v4
  • gradle/gradle-build-action v2
  • actions/cache v4
  • actions/upload-artifact v4
  • actions/checkout v4
  • actions/setup-java v4
  • gradle/gradle-build-action v2
  • actions/cache v4
  • actions/upload-artifact v4
  • actions/checkout v4
.github/workflows/qodana.yml
  • actions/checkout v4
  • JetBrains/qodana-action v2023.3.2
  • github/codeql-action v3
.github/workflows/release.yml
  • actions/checkout v4
  • actions/setup-java v4
  • gradle/gradle-build-action v2
gradle
settings.gradle.kts
excalidraw-assets/build.gradle.kts
  • org.siouan.frontend-jdk17 8.0.0
gradle/libs.versions.toml
  • junit:junit 4.13.2
  • org.junit.jupiter:junit-jupiter-api 5.10.2
  • org.junit.jupiter:junit-jupiter-engine 5.10.2
  • org.assertj:assertj-core 3.25.3
  • io.mockk:mockk 1.13.10
  • org.jetbrains.changelog 2.2.0
  • org.jetbrains.intellij 1.17.3
plugin/gradle.properties
plugin/build.gradle.kts
gradle-wrapper
gradle/wrapper/gradle-wrapper.properties
  • gradle 8.7
npm
excalidraw-assets/package.json
  • @excalidraw/excalidraw ^0.17.0
  • @types/jest ^29.0.0
  • @types/node ^20.9.0
  • @types/react ^18.0.0
  • @types/react-dom ^18.0.0
  • awesome-debounce-promise ^2.1.0
  • react ^18.0.0
  • react-app-rewired ^2.1.8
  • react-dom ^18.0.0
  • react-scripts 5.0.1
  • typescript ^4.9.5
  • @types/pako ^2.0.0
  • cross-env ^7.0.2
  • eslint ^8.29.0
  • eslint-config-react-app ^7.0.1
  • yarn 4.2.1

  • Check this box to trigger a request for Renovate to run again on this repository

Rework Plugin / JCef exchange of file payload

Currently file are exchanged as base64 strings in a payload run by CefFrame::executeJavaScript, this is not optimal for several reasons :

  • Base 64 encoding increase the size by ~33 % (not even accounting the line breaks)
  • Given excalidraw can embed pictures, the payload can be even bigger.
  • Big strings (backed by an array) will cause on G1GC (the default on IJ at this time) to create humongous region if the string is bigger than half the region size (which by default depends on the total Java heap).
    • Java heap of 4 GiB usually have 2 MiB regions, so HO are created when content is over 1 MiB,
    • Java heap of 2 GiB usually have 1 Mib regions, so HO are created when content is over 512 KiB.

In order to improve that aspects there are multiple options

  1. Use "the server" that would be able to server and receive files
  2. Avoid facing the problem by changing the encode to uuEncoding. (Not a lot of implementation out there : https://github.com/biagioT/java-uudecoder)
  3. Explore approaches using browser file system APIs (may not be be supported by Cef)

DevTools cannot load SourceMap files (`net::ERR_NAME_NOT_RESOLVED`)

I opened a ticket on JCEF about sourcemap not available in DevTools, see
https://bitbucket.org/chromiumembedded/java-cef/issues/403/devtools-cannot-load-sourcemap-files-net


I have Java code that expose a progressive web app via JCEF. However the third-party web-app javascript is minified. They do provide source maps however. This works fine in a usual browser.

However when running inside a JCEF frame, the devtools cannot load these source maps.

DevTools failed to load SourceMap: Could not load content for https://my-app/2.c9d7d260.chunk.js.map: Connection error: net::ERR_NAME_NOT_RESOLVED
DevTools failed to load SourceMap: Could not load content for https://my-app/main.a7bce6af.chunk.js.map: Connection error: net::ERR_NAME_NOT_RESOLVED
DevTools failed to load SourceMap: Could not load content for https://my-app/main.0d980f3a.chunk.css.map: Connection error: net::ERR_NAME_NOT_RESOLVED

I am registering a custom scheme handler

CefApp.getInstance().registerSchemeHandlerFactory(
    "https", appDomain,
    SchemeHandlerFactory { uri: URI ->
        BufferedInputStream(WebView::class.java.getResourceAsStream("/assets" + uri.path))
    }
).also { successful -> assert(successful) }

I even tried to hook a request handler

object : CefRequestHandlerAdapter() {
    override fun getResourceRequestHandler(
        browser: CefBrowser?,
        frame: CefFrame?,
        request: CefRequest?,
        isNavigation: Boolean,
        isDownload: Boolean,
        requestInitiator: String?,
        disableDefaultHandling: BoolRef?
    ): CefResourceRequestHandler? {
        println(request)
        return super.getResourceRequestHandler(
            browser,
            frame,
            request,
            isNavigation,
            isDownload,
            requestInitiator,
            disableDefaultHandling
        )
    }
}.also { requestHandler ->
    cefBrowser.client.addRequestHandler(requestHandler)
    lifetime.onTermination {
        cefBrowser.client.removeRequestHandler()
    }
}

Debugging at these location didn’t help much, as I don’t see any request to https://my-app/2.c9d7d260.chunk.js.map for example.

I am not sure if this is a bug or a missing feature, or simply a misuse.


I even tried to add this request handler on the devtool browser cefBrowser.devTools

WebStorm 2022.3 error at startup

Receiving the follow error message at startup in WebStorm 2022.3

Everything appears to be working as intended, at least I haven't encountered any issues so far, just wanted to make you aware of the issue.

Unhandled exception in [StandaloneCoroutine{Cancelling}@4d48f5bc, Dispatchers.Default]

java.lang.AssertionError: Not alive: Lifetime `Anonymous` [Terminated, executing=0, resources=0]
	at com.jetbrains.rd.util.lifetime.RLifetimeKt.assertAlive(RLifetime.kt:524)
	at com.github.bric3.excalidraw.editor.ExcalidrawWebViewController.runJS(ExcalidrawWebViewController.kt:349)
	at com.github.bric3.excalidraw.editor.ExcalidrawWebViewController.saveAsCoroutines(ExcalidrawWebViewController.kt:333)
	at com.github.bric3.excalidraw.editor.ExcalidrawEditor$saveCoroutines$1.invokeSuspend(ExcalidrawEditor.kt:210)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)
	Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelled}@4d48f5bc, Dispatchers.Default]

Meta issue for 0.4.0

  • Bump versions, bump platform to 2023.2
  • Rewrote save routines with coroutines
  • Check continuous saving of image files, see #70
  • scratch files ?, See also #22, #90
  • Double check if any disposable issues?
  • Excalidraw 17 (needs typescript 5?), simply updating do ot work, see #111
  • Support additional image type (supported by excalidraw), see #69
  • #102
  • #17

Plugin Settings

Create plugin settings that set default, like save-as options, excalidraw options (grid, zen modes)

Error on save

When saving drawing into PNG or SVG, nothing happens. In logs, I'm receiving an error:

2022-04-20 20:51:47,320 [377982618] SEVERE - #c.g.b.e.e.ExcalidrawWebViewController - [LOGSEVERITY_ERROR][https://excalidraw-jetbrains-plugin/index.html:1]:
Uncaught SyntaxError: Unexpected end of JSON input
java.lang.Throwable: [LOGSEVERITY_ERROR][https://excalidraw-jetbrains-plugin/index.html:1]:
Uncaught SyntaxError: Unexpected end of JSON input
	at com.intellij.openapi.diagnostic.Logger.error(Logger.java:182)
	at com.github.bric3.excalidraw.editor.ExcalidrawWebViewController$initJcefPanel$5.onConsoleMessage(ExcalidrawWebViewController.kt:219)
	at com.intellij.ui.jcef.JBCefClient$3.lambda$onConsoleMessage$4(JBCefClient.java:306)
	at com.intellij.ui.jcef.JBCefClient$HandlerSupport.lambda$handle$0(JBCefClient.java:725)
	at java.base/java.lang.Iterable.forEach(Iterable.java:75)
	at java.base/java.util.Collections$SynchronizedCollection.forEach(Collections.java:2067)
	at com.intellij.ui.jcef.JBCefClient$HandlerSupport.handle(JBCefClient.java:725)
	at com.intellij.ui.jcef.JBCefClient$HandlerSupport.handleBoolean(JBCefClient.java:730)
	at com.intellij.ui.jcef.JBCefClient$3.onConsoleMessage(JBCefClient.java:305)
	at jcef/org.cef.CefClient.onConsoleMessage(CefClient.java:329)
2022-04-20 20:51:47,320 [377982618] SEVERE - #c.g.b.e.e.ExcalidrawWebViewController - PyCharm 2022.1  Build #PY-221.5080.212
2022-04-20 20:51:47,320 [377982618] SEVERE - #c.g.b.e.e.ExcalidrawWebViewController - JDK: 11.0.14.1; VM: OpenJDK 64-Bit Server VM; Vendor: JetBrains s.r.o.
2022-04-20 20:51:47,320 [377982618] SEVERE - #c.g.b.e.e.ExcalidrawWebViewController - OS: Mac OS X
2022-04-20 20:51:47,321 [377982619] SEVERE - #c.g.b.e.e.ExcalidrawWebViewController - Plugin to blame: Excalidraw Integration version: 0.3.2

NPE can be raised even when no excalidraw editor is opened

update failed for AnAction(com.github.bric3.excalidraw.actions.ToggleWatermarkSaveOptionAction, id=excalidraw.ToggleSaveWithWatermark) with text=Add Watermark When Saving as Image

java.lang.NullPointerException: null cannot be cast to non-null type com.intellij.psi.PsiFile
	at com.github.bric3.excalidraw.UtilsKt.findEditor(utils.kt:34)
	at com.github.bric3.excalidraw.actions.ToggleSaveOptionAction.getSaveOptions(ToggleSaveOptionAction.kt:18)
	at com.github.bric3.excalidraw.actions.ToggleWatermarkSaveOptionAction.isSelected(ToggleWatermarkSaveOptionAction.kt:8)
	at com.intellij.openapi.actionSystem.ToggleAction.update(ToggleAction.java:72)
	at com.intellij.openapi.actionSystem.ex.ActionUtil.lambda$performDumbAwareUpdate$0(ActionUtil.java:130)
	at com.intellij.openapi.actionSystem.ex.ActionUtil.performDumbAwareUpdate(ActionUtil.java:144)
	at com.intellij.openapi.actionSystem.impl.ActionUpdater.doUpdate(ActionUpdater.java:592)
	at com.intellij.openapi.actionSystem.impl.ActionUpdater.lambda$updateActionReal$7(ActionUpdater.java:132)
	at com.intellij.openapi.actionSystem.impl.ActionUpdater.lambda$callAction$9(ActionUpdater.java:187)
	at com.intellij.openapi.progress.ProgressManager.lambda$runProcess$0(ProgressManager.java:57)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:183)
	at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:705)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:647)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:63)
	at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:170)
	at com.intellij.openapi.progress.ProgressManager.runProcess(ProgressManager.java:57)
	at com.intellij.openapi.actionSystem.impl.ActionUpdater.lambda$callAction$10(ActionUpdater.java:185)
	at com.intellij.openapi.actionSystem.impl.ActionUpdateEdtExecutor.lambda$computeOnEdt$0(ActionUpdateEdtExecutor.java:45)
	at com.intellij.openapi.application.TransactionGuardImpl$2.run(TransactionGuardImpl.java:199)
	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:794)
	at com.intellij.openapi.application.impl.ApplicationImpl.lambda$invokeLater$4(ApplicationImpl.java:350)
	at com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java:84)
	at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:133)
	at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:46)
	at com.intellij.openapi.application.impl.FlushQueue$FlushNow.run(FlushQueue.java:189)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:776)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:746)
	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:885)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:754)
	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$6(IdeEventQueue.java:441)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:825)
	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$7(IdeEventQueue.java:440)
	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:794)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:486)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

NPE when interactiing with libraries

Exception in thread "Thread-3225" java.lang.NullPointerException: Parameter specified as non-null is null: method com.github.bric3.excalidraw.editor.SchemeHandlerFactory.create, parameter browser
	at com.github.bric3.excalidraw.editor.SchemeHandlerFactory.create(SchemeHandlerFactory.kt)
Exception in thread "AppKit Thread" java.lang.IllegalArgumentException: Argument for @NotNull parameter 'browser' of com/intellij/ui/jcef/JBCefClient$HandlerSupport.get must not be null
	at com.intellij.ui.jcef.JBCefClient$HandlerSupport.$$$reportNull$$$0(JBCefClient.java)
	at com.intellij.ui.jcef.JBCefClient$HandlerSupport.get(JBCefClient.java)
	at com.intellij.ui.jcef.JBCefClient$12.onCertificateError(JBCefClient.java:621)
	at jcef/org.cef.CefClient.onCertificateError(CefClient.java:964)

Related #16

The font color is not displayed correctly.

  • I have a excalidraw file that can be correctly rendered by the excalidraw website.
    • image
  • But can not be rendered by the plugin. (I need to click it to show the right color)
    • excalidraw-ide

I was thought it's the light/dark theme issue, but I change change to both light/dark theme of the plugin, but neither of them can render the color correctly

The target origin provided ... does not match the recipient window's origin ('null').

Possibly happened during refactoring only

2022-06-26 05:15:04,454 [  14949]  ERROR - or.ExcalidrawWebViewController - [LOGSEVERITY_ERROR][about:blank:1]:
Failed to execute 'postMessage' on 'DOMWindow': The target origin provided ('https://excalidraw-jetbrains-plugin') does not match the recipient window's origin ('null'). 
java.lang.Throwable: [LOGSEVERITY_ERROR][about:blank:1]:
Failed to execute 'postMessage' on 'DOMWindow': The target origin provided ('https://excalidraw-jetbrains-plugin') does not match the recipient window's origin ('null').
	at com.intellij.openapi.diagnostic.Logger.error(Logger.java:165)
	at com.github.bric3.excalidraw.editor.ExcalidrawWebViewController$initJcefPanel$5.onConsoleMessage(ExcalidrawWebViewController.kt:222)
	at com.intellij.ui.jcef.JBCefClient$3.lambda$onConsoleMessage$4(JBCefClient.java:299)
	at com.intellij.ui.jcef.JBCefClient$HandlerSupport.lambda$handle$0(JBCefClient.java:685)
	at java.base/java.lang.Iterable.forEach(Iterable.java:75)
	at java.base/java.util.Collections$SynchronizedCollection.forEach(Collections.java:2067)
	at com.intellij.ui.jcef.JBCefClient$HandlerSupport.handle(JBCefClient.java:685)
	at com.intellij.ui.jcef.JBCefClient$HandlerSupport.handleBoolean(JBCefClient.java:690)
	at com.intellij.ui.jcef.JBCefClient$3.onConsoleMessage(JBCefClient.java:298)
	at jcef/org.cef.CefClient.onConsoleMessage(CefClient.java:319)

Load scene from SVG or PNG files

At this stage, the react API doesn't allow to load an image file having an Excalidraw payload.

Extracting this data is possible. However the payload contains a Json document with binary content (non-encoded). Processing this in Java is challenging this might to be moved to the javascript App component.

Investigate dynamic choices to export image support to ask directly Excalidraw

Currently supporting a new file for export is added manually.

E.g. there's a file that lists the supported types, however it doesn't seem to be publicly exposed.

From this code

https://github.com/excalidraw/excalidraw/blob/65047cc2cb59843a4305f9088d886edd9b933585/packages/utils/export.ts#L136-L153

  1. scene embedding only works on SVG and PNG
  2. supported type is driven by the browser support (canvas.toBlob)

So maybe there's a way to query the browser for supported types.


Note that recognizing a file as having an embedded scene is out of scope there as currently embedded scene is only supported on PNG and already implemented, for other file types it's not yet supported.

Restoring files is broken when text content has a new line.

I encountered the following error in the devtools console:

Uncaught SyntaxError: Unexpected token 
 in JSON at position 2055
    at JSON.parse (<anonymous>)
    at index.html:1

Upon inspection of the actual json file

$  cat plugin/src/docs/demo.excalidraw | dd ibs=1 skip=2055 count=1 2>/dev/null
\
$ cat plugin/src/docs/demo.excalidraw |  tail -c +2050 | head -c +10
lidraw\nco%                              

Noticed the backslash, this can be easily reproduced in the console :

JSON.parse(`{"text": "Excalidraw\ncomponent"}`)
-----
Uncaught SyntaxError: Unexpected token 
 in JSON at position 20
    at JSON.parse (<anonymous>)
    at <anonymous>:1:6

Publish newest version to matketplace

The version published in the JetBrains marketplace is 2 years old at this point and diagrams made in the newest excalidraw tool, are opened weirdly by the plugin, for example text on top of the arrows becomes disconnected. As far as I understand the current master version has some improvements to this situation.

Would be nice to have the newest version published to the JetBrains marketplace for ease of installation.

Thanks for working on this!

Unhandled Exception in Excalidraw Plugin for Goland

I encountered an unhandled exception while using the Excalidraw plugin in Goland. The exception details are as follows:

Unhandled exception in [StandaloneCoroutine{Cancelling}@5e8e7c97, Dispatchers.Default]
java.lang.AssertionError: Not alive: Lifetime `Anonymous` [Terminating, executing=0, resources=4]
	at com.jetbrains.rd.util.lifetime.RLifetimeKt.assertAlive(RLifetime.kt:524)
	at com.github.bric3.excalidraw.editor.ExcalidrawWebViewController.runJS(ExcalidrawWebViewController.kt:349)
	at com.github.bric3.excalidraw.editor.ExcalidrawWebViewController.saveAsCoroutines(ExcalidrawWebViewController.kt:333)
	at com.github.bric3.excalidraw.editor.ExcalidrawEditor$saveCoroutines$1.invokeSuspend(ExcalidrawEditor.kt:210)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
	at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677)
	at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)
	Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelled}@5e8e7c97, Dispatchers.Default]

I believe this issue is causing problems with the saving of Excalidraw diagrams. I would appreciate it if this issue could be investigated and resolved as soon as possible.

Thank you for your attention to this matter.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.