Excalidraw
Virtual whiteboard for sketching hand-drawn style diagrams
Alternative to: Miro, FigJam, Google Jamboard
v0.11.0
2022-02-17Excalidraw API
Features
-
Add
onLinkOpenprop which will be triggered when clicked on element hyperlink if present #4694. -
Support updating library using
updateSceneAPI #4546. -
Introduced primary colors to the app. The colors can be overriden. Check readme on how to do so #4387.
-
exportToBlobnow automatically setsappState.exportBackgroundtotrueif exporting toimage/jpegMIME type (to ensure that alpha channel is not compressed to black color) #4342.BREAKING CHANGE
Remove
getElementMaputil #4306. -
Changes to
exportToCanvasutil function #4321:- Add
maxWidthOrHeight?: numberattribute. scalereturned fromgetDimensions()is now optional (default to1).
- Add
-
Image support added for host PR
General notes:
- File data are encoded as DataURLs (base64) for portability reasons.
- added
getFiles()to get currentBinaryFiles(Record<FileId, BinaryFileData>). It may contain files that aren’t referenced by any element, so if you’re persisting the files to a storage, you should compare them against stored elements.
Excalidraw app props:
- added
generateIdForFile(file: File)optional prop so you can generate your own ids for added files. onChange(elements, appState, files)prop callback is now passedBinaryFilesas third argument.onPaste(data, event)data prop should containdata.files(BinaryFiles) if the elements pasted are referencing new files.initialDataobject now supports additionalfiles(BinaryFiles) attribute.
Other notes:
.excalidrawfiles may now contain top-levelfileskey in format ofRecord<FileId, BinaryFileData>when exporting any (image) elements.- Changes were made to various export utilities exported from the package so that they take
files, you can refer to the docs for the same.
-
Export
isLinearElementandgetNonDeletedElements#4072. -
Support
renderTopRightUIin mobile UI #4065. -
Export
THEMEconstant from the package so host can use this when passing the theme #4055.BREAKING CHANGE
The
Appearancetype is now removed and renamed toThemesoThemetype needs to be used.
Fixes
- Reset
unmountedstate on the component once component mounts to fix the mounting/unmounting repeatedly when used withuseEffect#4682. - Panning the canvas using
mousewheel-dragandspace-dragnow prevents the browser from scrolling the container/page #4489. - Scope drag and drop events to Excalidraw container to prevent overriding host application drag and drop events #4445.
Build
- Release preview package @excalidraw/excalidraw-preview when triggered via comment
@excalibot trigger release
-
Added an example to test and develop the package locally using
yarn start#4488 -
Remove
file-loaderso font assets are not duplicated by webpack and use webpack asset modules for font generation #4380. -
We’re now compiling to
es2017target. Notably,async/awaitis not compiled down to generators. #4341.
Excalidraw Library
This section lists the updates made to the excalidraw library and will not affect the integration.
Features
-
Show group/group and link action in mobile #4795
-
Support background fill for freedraw shapes #4610
-
Keep selected tool on canvas reset #4728
-
Make whole element clickable in view mode when it has hyperlink #4735
-
Allow any precision when zooming #4730
-
Throttle
pointermoveevents per framerate #4727 -
Support hyperlinks 🔥 #4620
-
Added penMode for palm rejection #4657
-
Support unbinding bound text #4686
-
Sync local storage state across tabs when out of sync #4545
-
Support contextMenuLabel to be of function type to support dynmaic labels #4654
-
Support decreasing/increasing
fontSizevia keyboard #4553 -
Link to new LP for excalidraw plus #4549
-
Update stroke color of bounded text along with container #4541
-
Hints and shortcuts help around deep selection #4502
-
Support updating text properties by clicking on container #4499
-
Bind text to shapes when pressing enter and support sticky notes 🎉 #4343
-
Change
boundElementIds→boundElements#4404 -
Support selecting multiple points when editing line #4373
-
Horizontally center toolbar menu commit link
-
Add support for rounded corners in diamond #4369
-
Allow zooming up to 3000% #4358
-
Stop discarding precision when rendering #4357
-
Support Image binding #4347
-
Add
element.updated#4070 -
Compress shareLink data when uploading to json server #4225
-
Supply
versionparam when installing libraries #4305 -
Log FS abortError to console #4279
-
Add validation for website and remove validation for library item name #4269
-
Allow publishing libraries from UI #4115
-
Create confirm dialog to use instead of window.confirm #4256
-
Allow letters in IDs for storing files in backend #4224
-
Remove support for V1 unencrypted backend #4189
-
Use separate backend for local storage #4187
-
Add hint around canvas panning #4159
-
Stop using production services for development #4113
-
Add triangle arrowhead #4024
-
Add rewrite to webex landing page #4102
-
Switch collab server #4092
-
Use dialog component for clear canvas instead of window confirm #4075
Fixes
-
Rename —color-primary-chubb to —color-primary-contrast-offset and fallback to primary color if not present #4803
-
Add commits directly pushed to master in changelog #4798
-
Don’t bump element version when adding files data #4794
-
Mobile link click #4742
-
ContextMenu timer & pointers not correctly reset on iOS #4765
-
Use absolute coords when rendering link popover #4753
-
Changing font size when text is not selected or edited #4751
-
Disable contextmenu on non-secondary
penevents ortouch#4675 -
Mobile context menu won’t show on long press #4741
-
Do not open links twice #4738
-
Make link icon clickable in mobile #4736
-
Apple Pen missing strokes #4705
-
Freedraw slow movement jittery lines #4726
-
Disable three finger pinch zoom in penMode #4725
-
Remove click listener for opening popup #4700
-
Link popup position not accounting for offsets #4695
-
PenMode darkmode style #4692
-
Typing
_+in wysiwyg not working #4681 -
Keyboard-zooming in wysiwyg should zoom canvas #4676
-
SceneCoordsToViewportCoords, jumping text when there is an offset #4413 (#4630)
-
Right-click object menu displays partially off-screen #4572 (#4631)
-
Support collaboration in bound text #4573
-
Cmd/ctrl native browser behavior blocked in inputs #4589
-
Use cached width when calculating min width during resize #4585
-
Support collaboration in bounded text #4580
-
Port for collab server and update docs #4569
-
Don’t mutate the bounded text if not updated when submitted #4543
-
Prevent canvas drag while editing text #4552
-
Support shift+P for freedraw #4550
-
Prefer spreadsheet data over image #4533
-
Show text properties button states correctly for bounded text #4542
-
Rotate bounded text when container is rotated before typing #4535
-
Undo should work when selecting bounded textr #4537
-
Reduce padding to 5px for bounded text #4530
-
Bound text doesn’t inherit container #4521
-
Text wrapping with grid #4505 (#4506)
-
Check if process is defined before using so it works in browser #4497
-
Pending review fixes for sticky notes #4493
-
Pasted elements except binded text once paste action is complete #4472
-
Don’t select binded text when ungrouping #4470
-
Set height correctly when text properties updated while editing in container until first submit #4469
-
Align and distribute binded text in container and cleanup #4468
-
Move binded text when moving container using keyboard #4466
-
Support dragging binded text in container selected in a group #4462
-
Vertically align single line when deleting text in bounded container #4460
-
Update height correctly when updating text properties in binded text #4459
-
Align library item previews to center #4447
-
Vertically center align text when text deleted #4457
-
Vertically center the first line as user starts typing in container #4454
-
Switch cursor to center of container when adding text when dimensions are too small #4452
-
Vertically center align the bounded text correctly when zoomed #4444
-
Support updating stroke color for text by typing in color picker input #4415
-
Bound text not atomic with container when changing z-index #4414
-
Update viewport coords correctly when editing text #4416
-
Use word-break break-word only and update text editor height only when binded to container #4410
-
Husky not able to execute pre-commit on windows #4370
-
Make firebase config parsing not fail on undefined env #4381
-
Adding to library via contextmenu when no image is selected #4356
-
Export scale quality regression #4316
-
Remove
100%height from tooltip container to fix layout issues #3980 -
Inline ENV variables when building excalidraw package #4311
-
SVG export in dark mode with embedded bitmap image #4285
-
New FS API not working on Linux #4280
-
Url -> URL for consistency #4277
-
Prevent adding images to library via contextMenu #4264
-
Account for libraries v2 when prompting #4263
-
Skia rendering issues #4200
-
Ellipse roughness when
0#4194 -
Proper string for invalid SVG #4191
-
Images not initialized correctly #4157
-
Image-related fixes #4147
-
Rewrite collab element reconciliation to fix z-index issues #4076
-
Redirect excalidraw.com/about to for-webex.excalidraw.com #4104
-
Redirect to webex LP instead of rewrite to fix SW #4103
-
Clear image/shape cache of affected elements when adding files #4089
-
Clear
LibraryUnitDOM on unmount #4084 -
Pasting images on firefox #4085
Refactor
Performance
- Cache approx line height in textwysiwg #4651