github excalidraw/excalidraw v0.11.0
v0.11.0 (2022-02-17)

latest releases: v0.16.4, v0.17.6, v0.16.3...
2 years ago

Excalidraw API

Features

  • Add onLinkOpen prop which will be triggered when clicked on element hyperlink if present #4694.

  • Support updating library using updateScene API #4546.

  • Introduced primary colors to the app. The colors can be overriden. Check readme on how to do so #4387.

  • exportToBlob now automatically sets appState.exportBackground to true if exporting to image/jpeg MIME type (to ensure that alpha channel is not compressed to black color) #4342.

    BREAKING CHANGE

    Remove getElementMap util #4306.

  • Changes to exportToCanvas util function #4321:

    • Add maxWidthOrHeight?: number attribute.
    • scale returned from getDimensions() is now optional (default to 1).
  • Image support added for host PR

    General notes:

    • File data are encoded as DataURLs (base64) for portability reasons.

    ExcalidrawAPI:

    • added getFiles() to get current BinaryFiles (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 passed BinaryFiles as third argument.
    • onPaste(data, event) data prop should contain data.files (BinaryFiles) if the elements pasted are referencing new files.
    • initialData object now supports additional files (BinaryFiles) attribute.

    Other notes:

    • .excalidraw files may now contain top-level files key in format of Record<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 isLinearElement and getNonDeletedElements #4072.

  • Support renderTopRightUI in mobile UI #4065.

  • Export THEME constant from the package so host can use this when passing the theme #4055.

    BREAKING CHANGE

    The Appearance type is now removed and renamed to Theme so Theme type needs to be used.

Fixes

  • Reset unmounted state on the component once component mounts to fix the mounting/unmounting repeatedly when used with useEffect #4682.
  • Panning the canvas using mousewheel-drag and space-drag now 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

 @excalibot trigger release

#4750.

  • Added an example to test and develop the package locally using yarn start #4488

  • Remove file-loader so font assets are not duplicated by webpack and use webpack asset modules for font generation #4380.

  • We're now compiling to es2017 target. Notably, async/await is 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 pointermove events 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 fontSize via 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 boundElementIdsboundElements #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 version param 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 pen events or touch #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 LibraryUnit DOM on unmount #4084

  • Pasting images on firefox #4085

Refactor

  • Simplify zoom by removing zoom.translation #4477

  • Deduplicate encryption helpers #4146

Performance

  • Cache approx line height in textwysiwg #4651

Build

  • Rename release command to 'release package' #4783

  • Deploy excalidraw package example #4762

  • Allow package.json changes when autoreleasing next #4068

Don't miss a new excalidraw release

NewReleases is sending notifications on new releases.