【分享】Excalidraw 画板挂件(小改)

本贴最后更新于 603 天前,其中的信息可能已经时过境迁

写在前面

大致是将思源笔记里的【悬浮预览】、【引用块跳转】功能融入到 Excalidraw 画板中。用来画一下简单的关系图并链接到本地的笔记,感觉效果还可以,主要是画板比较自由,挺适合做那个【内容地图】(Map of Content)。

只需要稍微修改一下 theme.css 和 main.js 就可以了,其中修改 main.js 的做法跟那个【分享】导图挂件更新 是一样的,已经改过的就不用改了。

原 Excalidraw 仓库地址:https://github.com/excalidraw/excalidraw

Excalidraw 挂件中一些数据会缓存到 LocalStorage 中,比如:素材库的内容和画板设置。后续的笔记版本(比如当前的 V2.7.2)因为使用了随机端口,所以关闭软件重新打开后会发现画板的状态又被初始化了,素材库的内容也没了,为了获得更好的使用体验,建议在桌面端的快捷方式中指定端口。,参考思源 2.6.1 至 2.7.0 重要更新一览(带图)中提到的桌面端快捷方式支持 --port 启动参数,在桌面快捷方式中指定端口,比如:6806)。

视频演示

演示环境:Window10 , V2.7.2

演示内容:

1、插入块超链接
2、插入引用块
3、分屏打开文档
4、悬浮预览文档
5、搜索、定位关键字
6、保存、打开文件

开始使用

1、更新挂件

  • 下载挂件的压缩包后,解压得到一个【画板】的文件夹;
  • 打开挂件所在文件夹 笔记数据所在文件夹\data\widgets\
  • 如果有旧的,那就需要删掉旧的画板挂件,再将新的放进去;

2、修改 theme.css

这个是为了给画板挂件【全屏】功能使用的,Excalidraw 画板本身就有全屏的功能,但它全屏后会置顶,然后就遮挡了悬浮预览的窗口,故换了个方式让它全屏铺满。这里用的是增/删 类名的方式,所以要在 theme.css 中添加一个样式。

比如:现在使用的主题是 Tsundoku Dark

打开思源笔记——【更多】——【设置】——【外观】——【打开主题文件夹】,打开后,找到【Tsundoku Dark】文件夹,里面有个 theme.css,打开后在最后加上:

.fullScreen {
    position: fixed;
    top: 0px;
    left: 0px;
    width: 100vw !important;
    height: 100vh !important;
    z-index: 200;
}

修改后保存文件。

3、修改 main.js

这个跟【分享】导图挂件更新 是一样的,已经改过的就不用改了。

示例:

V2.7.2

PC 端 windows 平台 V2.7.2,main.js 的修改方法如下:

使用编辑器比如 VSCode 打开 笔记安装的文件夹\resources\stage\build\app\main.js,使用查找/替换功能:

搜索

t.WYSIWYG=class

替换成

window._M=n(236);window._o=n(8438);window._a=n(7377);t.WYSIWYG=class

修改后保存对应文件。


4、清除缓存后,重启笔记

打开思源笔记——右下角【帮助】图标——【开发者工具】——在【Network】中勾选【Disable cache】后按键盘上的【F5】进行刷新,刷新后手动取消勾选【Disable cache】,然后关闭开发者工具。

image.png

5、插入挂件,开始使用

插入超链接

  • 复制外部超链接或者笔记内的块超链接
  • 在画布中选中一个元素,按 Ctrl+K 弹出超链接输入框
  • 粘贴刚刚复制的链接地址并回车即可

备注:如果选中图形后按 Ctrl+K 并没有弹出超链接输入框,可以在选中图形后先按下 Ctrl+shift+G 解除编组后再试试。

插入引用块

  • 在笔记内文档、块的菜单中,点击【复制该块为引用块】
  • 单击画板空白处,然后按下 Ctrl+V
  • 再次单击画板空白处,然后按下 Ctrl+V 即可粘贴带标题和超链接的图形块到画布中。

备注:第一次按 Ctrl+V 的时候处理一下剪切版里的数据,改成 Excalidraw 里的数据格式,第二次粘贴的时候粘入。

分屏打开文档

如果是笔记内文档或者块的超链接,点击超链接图标后默认是分屏打开的。需要保持画布所在窗口是选中的,否则会打开多个分屏窗口。

悬浮预览

如果是笔记内文档或者块的超链接,点击画布空白处后按下 Alt+Q 即可打开【预览模式】,此时将鼠标悬浮在超链接图标上,会弹出文档或块的悬浮预览框,可以通过鼠标移开到预览框外或者单击预览框后按下【ESC】键的方式来关闭预览框,当然,直接点击预览窗口右上角的上的【x】来关闭窗口也可以的。

点击画布空白处后按下 Alt+W 即可关闭预览模式,此时鼠标悬浮在超链接块上不会弹出预览窗口。

搜索、定位关键字

  • 单击画板空白处后,按 Alt+T 唤出搜索面板,再次按 Alt+T 或者点击搜索面板外的画板来关闭搜索;
  • 焦点在搜索面板的输入框时,按键盘上的上下箭头能切换搜索结果;激活的搜索结果会显示在画板大约中央位置(当前画板比例需要设置成 100%,否则定位不准);

切换到中文手写字体

点击左侧字体栏最左边的按钮就切换到手写字体;

画板.png

挂件压缩包

画板.zip

Tips

1、选中某个图形后 Ctrl+K 快捷键不能弹出超链接输入框?

可能是因为图形的 编组 ,选中图形后 Ctrl+shift+G 解除编组后再试试。

image.png

2、添加常用元素到个人素材库

可以绘制并添加一些常用的图形元素到 个人素材库中,后续绘制时直接通过点击插入元素即可。

image.png

image.png

3、文本要自动换行?

使用【将文本绑定到容器】这个功能即可。

image.png

4、设置透明边框

方框绑定文本后,单击方框,设置 描边 的颜色为:transparent

然后双击方框选中文字,设置 描边 的颜色为:#000000

即可制作一个透明边框的文本框,这样可以方便的调整文本框宽度,也不影响观感。

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    23014 引用 • 92569 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • teacherQ 1 赞同 1 评论

    强啊,老哥,羡慕 ob 的功能很久了,请问能上传到集市里吗?

    上架最好还是到手即用的那种好一点,这个还要用户自己改东西的不太合适。
    someone69799
  • zyu318 1 赞同

    希望上传到集市,感谢

  • Jagger

    厉害 越来越有感觉了

  • derdunkel

    大佬,为什么我在不同文档页面中建立的 Excalidraw 都是同一个呢?在页面 B 中改 Excalidraw,页面 A 里也会被改掉,也就是说不管多少个页面里的 Excalidraw 都是同一个,这样它的实用性就大大降低了。

    我尝试将其导出保存到 data\assets 中,但再次打开依然是统一的那个 Excalidraw,需要自己手动再导入一次,有什么办法解决吗,谢谢大佬。

    1 回复
  • someone69799
    作者

    打开是同一个是因为画布数据是缓存到 localStorage 中的,读取的是同一个缓存数据。

    目前只是作为画布编辑器用的,不是内容块,所以插入多个 Excalidraw 的意义不大。它的画布数据都是保存到本地的文件比如 png 图片里,跟导图之类的挂件将数据保存到属性里有点不一样。思源有提供往 assets 里读写文件的 API,或许后续可以改成某个画布自动读写指定文件的形式来当内容块用,不过暂时没试过,不太清楚。

  • derdunkel 1 评论

    感谢!

    我又尝试了集市中的 Excalidraw 挂件,发现如下事项:

    1. 在三个页面测试了不同的 Excalidraw,对应在 assets 文件夹中生成了三个不同的.excalidaw 后缀文件。
    2. 关闭思源再打开后,发现三个页面中的 Excalidraw 都恢复为初始无图像的状态。
    3. 分别用其打开 assets 文件夹中的三个.excalidaw 后缀文件,的确是在第一步生成的不同内容。

    结论:

    1. 集市中的 Excalidraw 很可能实现了向 assets 文件夹写入文件的功能,将其作为内容块使用。
    2. 目前还有 BUG,在关闭思源后可能是丢失了生成的这些文件的连接路径,导致显示无图案,只能手动再打开。

    跟大佬同步一下我发现的情况。

    嗯,不过这个 Excalidraw 加上依赖包打包完都接近 10M 了,直接拿来当做内容块插入文档感觉有点臃肿。如果只是平时用来画画关系图啥的,其实可以直接保存为包含画布数据的 png 到本地,然后建文件夹分类管理,打开前在文件夹那里也能进行预览。
    someone69799
  • juksam 1 评论

    大佬好 第三版默认铺满页签之后怎么恢复大小呢,是不能像以前那样窗口化了吗?

    第三版要的就是铺满文档的效果,要恢复窗口的话,还是用之前的第二版吧。
    someone69799
  • forwardlee 1 评论
    1. 去掉【全屏】按钮。改成:插入白板后自动铺满页签。

    这个最新的版本,请问我在一个文章的一个块中添加了,如何退出呢?

    有其他内容的文档还是不要用第三版了,那个本来就是在单独的空文档里插入使用的。如果已经插入画板的,先删掉画板那个挂件,然后再删掉那个挂件块吧。
    someone69799
  • forwardlee

    目前在这个块的左侧菜单点击后,通过删除进行退出全屏页签了

    image.png

  • 2.5.1 没找到 main.js,无法进行超链接跳转

    1 回复
  • someone69799
    作者
  • someone69799
    作者

    第四次提交的版本处理了之前没处理好的关闭页签后图片丢失的问题,还有那个铺满页签后产生滚动条的问题。另外,我看到网页版的 Excalidraw 有个钉住素材库的功能很好用,所以更新了 Excalidraw 的版本。新版本界面有点小变化,但用来还可以。请参考演示视频。

  • someone69799
    作者

    昨天给第五版加了个搜索关键字的功能,这功能在画布内容多的时候感觉还是蛮实用的。

  • someone69799
    作者

    Excalidraw 挂件中一些数据会缓存到 LocalStorage 中,比如:素材库的内容和画板设置。后续的笔记版本(比如当前的 V2.7.2)因为使用了随机端口,所以关闭软件重新打开后会发现画板的状态又被初始化了,素材库的内容也没了,为了获得更好的使用体验,建议在桌面端的快捷方式中指定端口。,参考思源 2.6.1 至 2.7.0 重要更新一览(带图)中提到的桌面端快捷方式支持 --port 启动参数,在桌面快捷方式中指定端口,比如:6806)。

  • 大佬,这个画完图咋保存,每找到保存按钮,重启后画的图就没了

  • yunyunyun

    大佬!求助!我在文件里没有找到这串代码:image.png
    另外,主题文件里也把代码复制在最底下了,但是进思源还是没有变化,白板还是置顶的效果,菜单和设置什么的都在它底下 😭 😭 image.png

请输入回帖内容 ...