UNPKG

@peakpay/excalidraw

Version:
929 lines (485 loc) 77.5 kB
# Changelog <!-- Guidelines for changelog: The change should be grouped under one of the below section and must contain PR link. - Features: For new features. - Fixes: For bug fixes. - Chore: Changes for non src files example package.json. - Refactor: For any refactoring. Please add the latest change on the top under the correct section. --> ## Excalidraw Library **_This section lists the updates made to the excalidraw library and will not affect the integration._** ### Features - Remove unused icons - Change default sloppiness to 0 and remove change sloppiness buttons ### Fixes - Disable github action --- ## version (2023-07-12) ### Features - Add support for `opts.fitToViewport` and `opts.viewportZoomFactor` in the [`ExcalidrawAPI.scrollToContent`](https://docs.excalidraw.com/docs/@excalidraw/excalidraw/api/props/ref#scrolltocontent) API. [#6581](https://github.com/excalidraw/excalidraw/pull/6581). - Properly sanitize element `link` urls. [#6728](https://github.com/excalidraw/excalidraw/pull/6728). - Sidebar component now supports tabs — for more detailed description of new behavior and breaking changes, see the linked PR. [#6213](https://github.com/excalidraw/excalidraw/pull/6213) - Exposed `DefaultSidebar` component to allow modifying the default sidebar, such as adding custom tabs to it. [#6213](https://github.com/excalidraw/excalidraw/pull/6213) #### BREAKING CHANGES - `props.renderSidebar` is removed in favor of rendering as `children`. - `appState.isSidebarDocked` replaced with `appState.defaultSidebarDockedPreference` with slightly different semantics, and relating only to the default sidebar. You need to handle `docked` state for your custom sidebars yourself. - Sidebar `props.dockable` is removed. To indicate dockability, supply `props.onDock()` alongside setting `props.docked`. - `Sidebar.Header` is no longer rendered by default. You need to render it yourself. - `props.onClose` replaced with `props.onStateChange`. - `restore()`/`restoreAppState()` now retains `appState.openSidebar` regardless of docked state. ## Excalidraw Library **_This section lists the updates made to the excalidraw library and will not affect the integration._** ### Features - Support customizing what parts of frames are rendered [#6752](https://github.com/excalidraw/excalidraw/pull/6752) - Make `appState.selectedElementIds` more stable [#6745](https://github.com/excalidraw/excalidraw/pull/6745) - Overwrite confirmation dialogs [#6658](https://github.com/excalidraw/excalidraw/pull/6658) - Simple analitycs [#6683](https://github.com/excalidraw/excalidraw/pull/6683) - Introduce frames [#6123](https://github.com/excalidraw/excalidraw/pull/6123) - Add canvas-roundrect-polyfill package [#6675](https://github.com/excalidraw/excalidraw/pull/6675) - Polyfill `CanvasRenderingContext2D.roundRect` [#6673](https://github.com/excalidraw/excalidraw/pull/6673) - Disable collab feature when running in iframe [#6646](https://github.com/excalidraw/excalidraw/pull/6646) - Assign random user name when not set [#6663](https://github.com/excalidraw/excalidraw/pull/6663) - Redesigned collab cursors [#6659](https://github.com/excalidraw/excalidraw/pull/6659) - Eye dropper [#6615](https://github.com/excalidraw/excalidraw/pull/6615) - Redesign of Live Collaboration dialog [#6635](https://github.com/excalidraw/excalidraw/pull/6635) - Recover scrolled position after Library re-opening [#6624](https://github.com/excalidraw/excalidraw/pull/6624) - Clearing library cache [#6621](https://github.com/excalidraw/excalidraw/pull/6621) - Update design of ImageExportDialog [#6614](https://github.com/excalidraw/excalidraw/pull/6614) - Add flipping for multiple elements [#5578](https://github.com/excalidraw/excalidraw/pull/5578) - Color picker redesign [#6216](https://github.com/excalidraw/excalidraw/pull/6216) - Add "unlock all elements" to canvas contextMenu [#5894](https://github.com/excalidraw/excalidraw/pull/5894) - Library sidebar design tweaks [#6582](https://github.com/excalidraw/excalidraw/pull/6582) - Add Trans component for interpolating JSX in translations [#6534](https://github.com/excalidraw/excalidraw/pull/6534) - Testing simple analytics and fathom analytics for better privacy of the users [#6529](https://github.com/excalidraw/excalidraw/pull/6529) - Retain `seed` on shift-paste [#6509](https://github.com/excalidraw/excalidraw/pull/6509) - Allow `avif`, `jfif`, `webp`, `bmp`, `ico` image types (#6500 ### Fixes - UI disappears when pressing the eyedropper shortcut on mobile [#6725](https://github.com/excalidraw/excalidraw/pull/6725) - Elements in non-existing frame getting removed [#6708](https://github.com/excalidraw/excalidraw/pull/6708) - Scrollbars renders but disable [#6706](https://github.com/excalidraw/excalidraw/pull/6706) - Typo in chart.ts [#6696](https://github.com/excalidraw/excalidraw/pull/6696) - Do not bind text to container using text tool when it has text already [#6694](https://github.com/excalidraw/excalidraw/pull/6694) - Don't allow binding text to images [#6693](https://github.com/excalidraw/excalidraw/pull/6693) - Updated link for documentation page under help section [#6654](https://github.com/excalidraw/excalidraw/pull/6654) - Collab username style fixes [#6668](https://github.com/excalidraw/excalidraw/pull/6668) - Bound arrows not updated when rotating multiple elements [#6662](https://github.com/excalidraw/excalidraw/pull/6662) - Delete setCursor when resize [#6660](https://github.com/excalidraw/excalidraw/pull/6660) - Creating text while color picker open [#6651](https://github.com/excalidraw/excalidraw/pull/6651) - Cleanup textWysiwyg and getAdjustedDimensions [#6520](https://github.com/excalidraw/excalidraw/pull/6520) - Eye dropper not accounting for offsets [#6640](https://github.com/excalidraw/excalidraw/pull/6640) - Color picker input closing problem [#6599](https://github.com/excalidraw/excalidraw/pull/6599) - Export dialog shortcut toggles console on firefox [#6620](https://github.com/excalidraw/excalidraw/pull/6620) - Add react v17 `useTransition` polyfill [#6618](https://github.com/excalidraw/excalidraw/pull/6618) - Library dropdown visibility issue for mobile [#6613](https://github.com/excalidraw/excalidraw/pull/6613) - `withInternalFallback` leaking state in multi-instance scenarios [#6602](https://github.com/excalidraw/excalidraw/pull/6602) - Language list containing duplicate `en` lang [#6583](https://github.com/excalidraw/excalidraw/pull/6583) - Garbled text displayed on avatars [#6575](https://github.com/excalidraw/excalidraw/pull/6575) - Assign the original text to text editor only during init [#6580](https://github.com/excalidraw/excalidraw/pull/6580) - I18n: Apply Trans component to publish library dialogue [#6564](https://github.com/excalidraw/excalidraw/pull/6564) - Fix brave error i18n string and remove unused [#6561](https://github.com/excalidraw/excalidraw/pull/6561) - Revert add version tags to Docker build [#6540](https://github.com/excalidraw/excalidraw/pull/6540) - Don't refresh dimensions for text containers on font load [#6523](https://github.com/excalidraw/excalidraw/pull/6523) - Cleanup getMaxContainerHeight and getMaxContainerWidth [#6519](https://github.com/excalidraw/excalidraw/pull/6519) - Cleanup redrawTextBoundingBox [#6518](https://github.com/excalidraw/excalidraw/pull/6518) - Text jumps when editing on Android Chrome [#6503](https://github.com/excalidraw/excalidraw/pull/6503) ### Styles - Removes extra spaces [#6558](https://github.com/excalidraw/excalidraw/pull/6558) - Fix font family inconsistencies [#6501](https://github.com/excalidraw/excalidraw/pull/6501) ### Refactor - Simplify `ImageExportDialog` [#6578](https://github.com/excalidraw/excalidraw/pull/6578) ### Performance - Memoize rendering of library [#6622](https://github.com/excalidraw/excalidraw/pull/6622) - Improve rendering performance for Library [#6587](https://github.com/excalidraw/excalidraw/pull/6587) - Use `UIAppState` where possible to reduce UI rerenders [#6560](https://github.com/excalidraw/excalidraw/pull/6560) ### Build - Add version tags to Docker build [#6508](https://github.com/excalidraw/excalidraw/pull/6508) --- ## 0.15.2 (2023-04-20) ### Docs - Fix docs link in readme [#6486](https://github.com/excalidraw/excalidraw/pull/6486) ## Excalidraw Library **_This section lists the updates made to the excalidraw library and will not affect the integration._** ### Fixes - Rotate the text element when binding to a rotated container [#6477](https://github.com/excalidraw/excalidraw/pull/6477) - Support breaking words containing hyphen - [#6014](https://github.com/excalidraw/excalidraw/pull/6014) - Incorrect background fill button active state [#6491](https://github.com/excalidraw/excalidraw/pull/6491) --- ## 0.15.1 (2023-04-18) ### Docs - Add the readme back to the package which was mistakenly removed [#6484](https://github.com/excalidraw/excalidraw/pull/6484) ## Excalidraw Library **_This section lists the updates made to the excalidraw library and will not affect the integration._** --- ## 0.15.0 (2023-04-18) ### Features - [`ExcalidrawAPI.scrollToContent`](https://docs.excalidraw.com/docs/@excalidraw/excalidraw/api/props/ref#scrolltocontent) has new opts object allowing you to fit viewport to content, and animate the scrolling. [#6319](https://github.com/excalidraw/excalidraw/pull/6319) - Expose `useI18n()` hook return an object containing `t()` i18n helper and current `langCode`. You can use this in components you render as `<Excalidraw>` children to render any of our i18n locale strings. [#6224](https://github.com/excalidraw/excalidraw/pull/6224) - [`restoreElements`](https://docs.excalidraw.com/docs/@excalidraw/excalidraw/api/utils/restore#restoreelements) API now takes an optional parameter `opts` which currently supports the below attributes ```js { refreshDimensions?: boolean, repairBindings?: boolean } ``` The same `opts` param has been added to [`restore`](https://docs.excalidraw.com/docs/@excalidraw/excalidraw/api/utils/restore#restore) API as well. For more details refer to the [docs](https://docs.excalidraw.com) #### BREAKING CHANGE - The optional parameter `refreshDimensions` in [`restoreElements`](https://docs.excalidraw.com/docs/@excalidraw/excalidraw/api/utils/restore#restoreelements) has been removed and can be enabled via `opts` ### Fixes - Exporting labelled arrows via export utils [#6443](https://github.com/excalidraw/excalidraw/pull/6443) ## Excalidraw Library **_This section lists the updates made to the excalidraw library and will not affect the integration._** ### Features - Constrain export dialog preview size [#6475](https://github.com/excalidraw/excalidraw/pull/6475) - Zigzag fill easter egg [#6439](https://github.com/excalidraw/excalidraw/pull/6439) - Add container to multiple text elements [#6428](https://github.com/excalidraw/excalidraw/pull/6428) - Starting migration from GA to Matomo for better privacy [#6398](https://github.com/excalidraw/excalidraw/pull/6398) - Add line height attribute to text element [#6360](https://github.com/excalidraw/excalidraw/pull/6360) - Add thai lang support [#6314](https://github.com/excalidraw/excalidraw/pull/6314) - Create bound container from text [#6301](https://github.com/excalidraw/excalidraw/pull/6301) - Improve text measurements in bound containers [#6187](https://github.com/excalidraw/excalidraw/pull/6187) - Bind text to container if double clicked on filled shape or stroke [#6250](https://github.com/excalidraw/excalidraw/pull/6250) - Make repair and refreshDimensions configurable in restoreElements [#6238](https://github.com/excalidraw/excalidraw/pull/6238) - Show error message when not connected to internet while collabo… [#6165](https://github.com/excalidraw/excalidraw/pull/6165) - Shortcut for clearCanvas confirmDialog [#6114](https://github.com/excalidraw/excalidraw/pull/6114) - Disable canvas smoothing (antialiasing) for right-angled elements [#6186](https://github.com/excalidraw/excalidraw/pull/6186)Co-authored-by: Ignacio Cuadra <67276174+ignacio-cuadra@users.noreply.github.com> ### Fixes - Center align text when wrapped in container via context menu [#6480](https://github.com/excalidraw/excalidraw/pull/6480) - Restore original container height when unbinding text which was binded via context menu [#6444](https://github.com/excalidraw/excalidraw/pull/6444) - Mark more props as optional for element [#6448](https://github.com/excalidraw/excalidraw/pull/6448) - Improperly cache-busting on canvas scale instead of zoom [#6473](https://github.com/excalidraw/excalidraw/pull/6473) - Incorrectly duplicating items on paste/library insert [#6467](https://github.com/excalidraw/excalidraw/pull/6467) - Library ids cross-contamination on multiple insert [#6466](https://github.com/excalidraw/excalidraw/pull/6466) - Color picker keyboard handling not working [#6464](https://github.com/excalidraw/excalidraw/pull/6464) - Abort freedraw line if second touch is detected [#6440](https://github.com/excalidraw/excalidraw/pull/6440) - Utils leaking Scene state [#6461](https://github.com/excalidraw/excalidraw/pull/6461) - Split "Edit selected shape" shortcut [#6457](https://github.com/excalidraw/excalidraw/pull/6457) - Center align text when bind to container via context menu [#6451](https://github.com/excalidraw/excalidraw/pull/6451) - Update coords when text unbinded from its container [#6445](https://github.com/excalidraw/excalidraw/pull/6445) - Autoredirect to plus in prod only [#6446](https://github.com/excalidraw/excalidraw/pull/6446) - Fixing popover overflow on small screen [#6433](https://github.com/excalidraw/excalidraw/pull/6433) - Introduce baseline to fix the layout shift when switching to text editor [#6397](https://github.com/excalidraw/excalidraw/pull/6397) - Don't refresh dimensions for deleted text elements [#6438](https://github.com/excalidraw/excalidraw/pull/6438) - Element vanishes when zoomed in [#6417](https://github.com/excalidraw/excalidraw/pull/6417) - Don't jump text to end when out of viewport in safari [#6416](https://github.com/excalidraw/excalidraw/pull/6416) - GetDefaultLineHeight should return default font family line height for unknown font [#6399](https://github.com/excalidraw/excalidraw/pull/6399) - Revert use `ideographic` textBaseline to improve layout shift when editing text" [#6400](https://github.com/excalidraw/excalidraw/pull/6400) - Call stack size exceeded when paste large text [#6373](https://github.com/excalidraw/excalidraw/pull/6373) (#6396) - Use `ideographic` textBaseline to improve layout shift when editing text [#6384](https://github.com/excalidraw/excalidraw/pull/6384) - Chrome crashing when embedding scene on chrome arm [#6383](https://github.com/excalidraw/excalidraw/pull/6383) - Division by zero in findFocusPointForEllipse leads to infinite loop in wrapText freezing Excalidraw [#6377](https://github.com/excalidraw/excalidraw/pull/6377) - Containerizing text incorrectly updates arrow bindings [#6369](https://github.com/excalidraw/excalidraw/pull/6369) - Ensure export preview is centered [#6337](https://github.com/excalidraw/excalidraw/pull/6337) - Hide text align for labelled arrows [#6339](https://github.com/excalidraw/excalidraw/pull/6339) - Refresh dimensions when elements loaded from shareable link and blob [#6333](https://github.com/excalidraw/excalidraw/pull/6333) - Show error message when measureText API breaks in brave [#6336](https://github.com/excalidraw/excalidraw/pull/6336) - Add an offset of 0.5px for text editor in containers [#6328](https://github.com/excalidraw/excalidraw/pull/6328) - Move utility types out of `.d.ts` file to fix exported declaration files [#6315](https://github.com/excalidraw/excalidraw/pull/6315) - More jotai scopes missing [#6313](https://github.com/excalidraw/excalidraw/pull/6313) - Provide HelpButton title prop [#6209](https://github.com/excalidraw/excalidraw/pull/6209) - Respect text align when wrapping in a container [#6310](https://github.com/excalidraw/excalidraw/pull/6310) - Compute bounding box correctly for text element when multiple element resizing [#6307](https://github.com/excalidraw/excalidraw/pull/6307) - Use jotai scope for editor-specific atoms [#6308](https://github.com/excalidraw/excalidraw/pull/6308) - Consider arrow for bound text element [#6297](https://github.com/excalidraw/excalidraw/pull/6297) - Text never goes beyond max width for unbound text elements [#6288](https://github.com/excalidraw/excalidraw/pull/6288) - Svg text baseline [#6285](https://github.com/excalidraw/excalidraw/pull/6273) - Compute container height from bound text correctly [#6273](https://github.com/excalidraw/excalidraw/pull/6273) - Fit mobile toolbar and make scrollable [#6270](https://github.com/excalidraw/excalidraw/pull/6270) - Indenting via `tab` clashing with IME compositor [#6258](https://github.com/excalidraw/excalidraw/pull/6258) - Improve text wrapping inside rhombus and more fixes [#6265](https://github.com/excalidraw/excalidraw/pull/6265) - Improve text wrapping in ellipse and alignment [#6172](https://github.com/excalidraw/excalidraw/pull/6172) - Don't allow blank space in collab name [#6211](https://github.com/excalidraw/excalidraw/pull/6211) - Docker build architecture:linux/amd64 error occur on linux/arm64 instance [#6197](https://github.com/excalidraw/excalidraw/pull/6197) - Sort bound text elements to fix text duplication z-index error [#5130](https://github.com/excalidraw/excalidraw/pull/5130) - Hide welcome screen on mobile once user interacts [#6185](https://github.com/excalidraw/excalidraw/pull/6185) - Edit link in docs [#6182](https://github.com/excalidraw/excalidraw/pull/6182) ### Refactor - Inline `SingleLibraryItem` into `PublishLibrary` [#6462](https://github.com/excalidraw/excalidraw/pull/6462) - Make the example React app reusable without duplication [#6188](https://github.com/excalidraw/excalidraw/pull/6188) ### Performance - Break early if the line width <= max width of the container [#6347](https://github.com/excalidraw/excalidraw/pull/6347) ### Build - Move TS and types to devDependencies [#6346](https://github.com/excalidraw/excalidraw/pull/6346) --- ## 0.14.2 (2023-02-01) ### Features - Welcome screen no longer renders by default, and you need to render it yourself. `UIOptions.welcomeScreen` option is now deprecated. [#6117](https://github.com/excalidraw/excalidraw/pull/6117) - `MainMenu`, `MainMenu.Item`, and `MainMenu.ItemLink` components now all support `onSelect(event: Event): void` callback. If you call `event.preventDefault()`, it will prevent the menu from closing when an item is selected (clicked on). [#6152](https://github.com/excalidraw/excalidraw/pull/6152) ### Fixes - declare css variable for font in excalidraw so its available in host [#6160](https://github.com/excalidraw/excalidraw/pull/6160) ## Excalidraw Library **_This section lists the updates made to the excalidraw library and will not affect the integration._** ### Features - Add hand/panning tool [#6141](https://github.com/excalidraw/excalidraw/pull/6141) - Show copy-as-png export button on firefox and show steps how to enable it [#6125](https://github.com/excalidraw/excalidraw/pull/6125) ### Fixes - Horizontal padding when aligning bound text containers [#6180](https://github.com/excalidraw/excalidraw/pull/6180) - Make tunnels work in multi-instance scenarios [#6178](https://github.com/excalidraw/excalidraw/pull/6178) - Add 1px width to the container to calculate more accurately [#6174](https://github.com/excalidraw/excalidraw/pull/6174) - Quick typo fix [#6167](https://github.com/excalidraw/excalidraw/pull/6167) - Set the width correctly using measureText in editor [#6162](https://github.com/excalidraw/excalidraw/pull/6162) - :bug: broken emojis when wrap text [#6153](https://github.com/excalidraw/excalidraw/pull/6153) - Button background and svg sizes [#6155](https://github.com/excalidraw/excalidraw/pull/6155) ### Styles - Change in ExportButton style [#6147](https://github.com/excalidraw/excalidraw/pull/6147) (#6148) ### Build - Temporarily disable pre-commit [#6132](https://github.com/excalidraw/excalidraw/pull/6132) --- ## 0.14.1 (2023-01-16) ### Fixes - remove overflow hidden from button [#6110](https://github.com/excalidraw/excalidraw/pull/6110). This fixes the collaborator count css in the [LiveCollaborationTrigger](https://github.com/excalidraw/excalidraw/blob/master/src/packages/excalidraw/README.md#LiveCollaborationTrigger) component. ## 0.14.0 (2023-01-13) ### Features - Support customization for the editor [welcome screen](https://github.com/excalidraw/excalidraw/blob/master/src/packages/excalidraw/README.md#WelcomeScreen) [#6048](https://github.com/excalidraw/excalidraw/pull/6048). - Expose component API for the Excalidraw main menu [#6034](https://github.com/excalidraw/excalidraw/pull/6034), You can read more about its usage [here](https://github.com/excalidraw/excalidraw/blob/master/src/packages/excalidraw/README.md#MainMenu) - Support customization for the Excalidraw [main menu](https://github.com/excalidraw/excalidraw/blob/master/src/packages/excalidraw/README.md#MainMenu) [#6034](https://github.com/excalidraw/excalidraw/pull/6034). - [Footer](https://github.com/excalidraw/excalidraw/blob/master/src/packages/excalidraw/README.md#Footer) is now rendered as child component instead of passed as a render prop [#5970](https://github.com/excalidraw/excalidraw/pull/5970). - Any top-level children passed to the `<Excalidraw/>` component that do not belong to one of the officially supported Excalidraw children components are now rendered directly inside the Excalidraw container (previously, they weren't rendered at all) [#6096](https://github.com/excalidraw/excalidraw/pull/6096). - Expose [LiveCollaborationTrigger](https://github.com/excalidraw/excalidraw/blob/master/src/packages/excalidraw/README.md#LiveCollaborationTrigger) component. Replaces `props.onCollabButtonClick` [#6104](https://github.com/excalidraw/excalidraw/pull/6104). #### BREAKING CHANGES - `props.onCollabButtonClick` is now removed. You need to render the main menu item yourself, and optionally also render the `<LiveCollaborationTrigger>` component using [renderTopRightUI](https://github.com/excalidraw/excalidraw/blob/master/src/packages/excalidraw/README.md#renderTopRightUI) prop if you want to retain the canvas button at top-right. - The prop `renderFooter` is now removed in favor of rendering as a child component. ### Excalidraw schema - Merged `appState.currentItemStrokeSharpness` and `appState.currentItemLinearStrokeSharpness` into `appState.currentItemRoundness`. Renamed `changeSharpness` action to `changeRoundness`. Excalidraw element's `strokeSharpness` was changed to `roundness`. Check the PR for types and more details [#5553](https://github.com/excalidraw/excalidraw/pull/5553). ## Excalidraw Library **_This section lists the updates made to the excalidraw library and will not affect the integration._** ### Features - Generic button export [#6092](https://github.com/excalidraw/excalidraw/pull/6092) - Scroll using PageUp and PageDown [#6038](https://github.com/excalidraw/excalidraw/pull/6038) - Support shrinking text containers to original height when text removed [#6025](https://github.com/excalidraw/excalidraw/pull/6025) - Move contextMenu into the component tree and control via appState [#6021](https://github.com/excalidraw/excalidraw/pull/6021) - Allow readonly actions to be used in viewMode [#5982](https://github.com/excalidraw/excalidraw/pull/5982) - Support labels for arrow 🔥 [#5723](https://github.com/excalidraw/excalidraw/pull/5723) - Don't add midpoint until dragged beyond a threshold [#5927](https://github.com/excalidraw/excalidraw/pull/5927) - Changed text copy/paste behaviour [#5786](https://github.com/excalidraw/excalidraw/pull/5786) - Reintroduce `x` shortcut for `freedraw` [#5840](https://github.com/excalidraw/excalidraw/pull/5840) - Tweak toolbar shortcuts & remove library shortcut [#5832](https://github.com/excalidraw/excalidraw/pull/5832) - Clean unused images only after 24hrs (local-only) [#5839](https://github.com/excalidraw/excalidraw/pull/5839) - Refetch errored/pending images on collab room init load [#5833](https://github.com/excalidraw/excalidraw/pull/5833) - Stop deleting whole line when no point select in line editor [#5676](https://github.com/excalidraw/excalidraw/pull/5676) - Editor redesign 🔥 [#5780](https://github.com/excalidraw/excalidraw/pull/5780) ### Fixes - Mobile tools positioning [#6107](https://github.com/excalidraw/excalidraw/pull/6107) - Renamed folder MainMenu->main-menu and support rest props [#6103](https://github.com/excalidraw/excalidraw/pull/6103) - Use position absolute for mobile misc tools [#6099](https://github.com/excalidraw/excalidraw/pull/6099) - React.memo resolvers not accounting for all props [#6042](https://github.com/excalidraw/excalidraw/pull/6042) - Image horizontal flip fix + improved tests [#5799](https://github.com/excalidraw/excalidraw/pull/5799) - Png-exporting does not preserve angles correctly for flipped images [#6085](https://github.com/excalidraw/excalidraw/pull/6085) - Stale appState of MainMenu defaultItems rendered from Actions [#6074](https://github.com/excalidraw/excalidraw/pull/6074) - HelpDialog [#6072](https://github.com/excalidraw/excalidraw/pull/6072) - Show error message on collab save failure [#6063](https://github.com/excalidraw/excalidraw/pull/6063) - Remove ga from docker build [#6059](https://github.com/excalidraw/excalidraw/pull/6059) - Use displayName since name gets stripped off when uglifying/minifiyng in production [#6036](https://github.com/excalidraw/excalidraw/pull/6036) - Remove background from wysiwyg when editing arrow label [#6033](https://github.com/excalidraw/excalidraw/pull/6033) - Use canvas measureText to calculate width in measureText [#6030](https://github.com/excalidraw/excalidraw/pull/6030) - Restoring deleted bindings [#6029](https://github.com/excalidraw/excalidraw/pull/6029) - ColorPicker getColor [#5949](https://github.com/excalidraw/excalidraw/pull/5949) - Don't push whitespace to next line when exceeding max width during wrapping and make sure to use same width of text editor on DOM when measuring dimensions [#5996](https://github.com/excalidraw/excalidraw/pull/5996) - Showing `grabbing` cursor when holding `spacebar` [#6015](https://github.com/excalidraw/excalidraw/pull/6015) - Resize sometimes throwing on missing null-checks [#6013](https://github.com/excalidraw/excalidraw/pull/6013) - PWA not working after CRA@5 update [#6012](https://github.com/excalidraw/excalidraw/pull/6012) - Not properly restoring element stroke and bg colors [#6002](https://github.com/excalidraw/excalidraw/pull/6002) - Avatar outline on safari & center [#5997](https://github.com/excalidraw/excalidraw/pull/5997) - Chart pasting not working due to removing tab characters [#5987](https://github.com/excalidraw/excalidraw/pull/5987) - Apply the right type of roundness when pasting styles [#5979](https://github.com/excalidraw/excalidraw/pull/5979) - Remove editor onpaste handler [#5971](https://github.com/excalidraw/excalidraw/pull/5971) - Remove blank space [#5950](https://github.com/excalidraw/excalidraw/pull/5950) - Galego and Kurdî missing in languages plus two locale typos [#5954](https://github.com/excalidraw/excalidraw/pull/5954) - `ExcalidrawArrowElement` rather than `ExcalidrawArrowEleement` [#5955](https://github.com/excalidraw/excalidraw/pull/5955) - RenderFooter styling [#5962](https://github.com/excalidraw/excalidraw/pull/5962) - Repair element bindings on restore [#5956](https://github.com/excalidraw/excalidraw/pull/5956) - Don't allow whitespaces for bound text [#5939](https://github.com/excalidraw/excalidraw/pull/5939) - Bindings do not survive history serialization [#5942](https://github.com/excalidraw/excalidraw/pull/5942) - Dedupe boundElement ids when container duplicated with alt+drag [#5938](https://github.com/excalidraw/excalidraw/pull/5938) - Scale font correctly when using shift [#5935](https://github.com/excalidraw/excalidraw/pull/5935) - Always bind to container selected by user [#5880](https://github.com/excalidraw/excalidraw/pull/5880) - Fonts not rendered on init if `loadingdone` not fired [#5923](https://github.com/excalidraw/excalidraw/pull/5923) - Stop replacing `del` word with `Delete` [#5897](https://github.com/excalidraw/excalidraw/pull/5897) - Remove legacy React.render() from the editor [#5893](https://github.com/excalidraw/excalidraw/pull/5893) - Allow adding text via enter only for text containers [#5891](https://github.com/excalidraw/excalidraw/pull/5891) - Stop font `loadingdone` loop when rendering element SVGs [#5883](https://github.com/excalidraw/excalidraw/pull/5883) - Refresh text dimensions only after font load done [#5878](https://github.com/excalidraw/excalidraw/pull/5878) - Correctly paste contents parsed by `JSON.parse()` as text. [#5868](https://github.com/excalidraw/excalidraw/pull/5868) - SVG element attributes in icons.tsx [#5871](https://github.com/excalidraw/excalidraw/pull/5871) - Merge existing text with new when pasted [#5856](https://github.com/excalidraw/excalidraw/pull/5856) - Disable FAST_REFRESH to fix live reload [#5852](https://github.com/excalidraw/excalidraw/pull/5852) - Paste clipboard contents into unbound text elements [#5849](https://github.com/excalidraw/excalidraw/pull/5849) - Compute dimensions of container correctly when text pasted on container [#5845](https://github.com/excalidraw/excalidraw/pull/5845) - Line editor points rendering below elements [#5781](https://github.com/excalidraw/excalidraw/pull/5781) - Syncing 1-point lines to remote clients [#5677](https://github.com/excalidraw/excalidraw/pull/5677) - Incorrectly selecting linear elements on creation while tool-locked [#5785](https://github.com/excalidraw/excalidraw/pull/5785) - Corrected typo in toggle theme shortcut [#5813](https://github.com/excalidraw/excalidraw/pull/5813) - Hide canvas-modifying UI in view mode [#5815](https://github.com/excalidraw/excalidraw/pull/5815) - Fix vertical/horizntal centering icons [#5812](https://github.com/excalidraw/excalidraw/pull/5812) - Consistent use of ZOOM_STEP [#5801](https://github.com/excalidraw/excalidraw/pull/5801) - Multiple elements resizing regressions [#5586](https://github.com/excalidraw/excalidraw/pull/5586) - Changelog typo [#5795](https://github.com/excalidraw/excalidraw/pull/5795) ### Refactor - Remove unnecessary code [#5933](https://github.com/excalidraw/excalidraw/pull/5933) ### Build - Move release scripts to use release branch [#5958](https://github.com/excalidraw/excalidraw/pull/5958) - Stops ignoring .env files from docker context so env variables get set during react app build. [#5809](https://github.com/excalidraw/excalidraw/pull/5809) --- ## 0.13.0 (2022-10-27) ### Excalidraw API #### Features - `restoreElements()` now takes an optional parameter to indicate whether we should also recalculate text element dimensions. Defaults to `true`, but since this is a potentially costly operation, you may want to disable it if you restore elements in tight loops, such as during collaboration [#5432](https://github.com/excalidraw/excalidraw/pull/5432). - Support rendering custom sidebar using [`renderSidebar`](https://github.com/excalidraw/excalidraw/blob/master/src/packages/excalidraw/README.md#renderSidebar) prop ([#5663](https://github.com/excalidraw/excalidraw/pull/5663)). - Add [`toggleMenu`](https://github.com/excalidraw/excalidraw/blob/master/src/packages/excalidraw/README.md#toggleMenu) prop to toggle specific menu open/close state ([#5663](https://github.com/excalidraw/excalidraw/pull/5663)). - Support [theme](https://github.com/excalidraw/excalidraw/blob/master/src/packages/excalidraw/README.md#theme) to be semi-controlled [#5660](https://github.com/excalidraw/excalidraw/pull/5660). - Added support for storing [`customData`](https://github.com/excalidraw/excalidraw/blob/master/src/packages/excalidraw/README.md#storing-custom-data-on-excalidraw-elements) on Excalidraw elements [#5592]. - Added `exportPadding?: number;` to [exportToCanvas](https://github.com/excalidraw/excalidraw/blob/master/src/packages/excalidraw/README.md#exporttocanvas) and [exportToBlob](https://github.com/excalidraw/excalidraw/blob/master/src/packages/excalidraw/README.md#exporttoblob). The default value of the padding is `10`. #### Breaking Changes - `props.UIOptions.canvasActions.theme` is now renamed to `props.UIOptions.canvasActions.toggleTheme` [#5660](https://github.com/excalidraw/excalidraw/pull/5660). - `setToastMessage` API is now renamed to `setToast` API and the function signature is also updated [#5427](https://github.com/excalidraw/excalidraw/pull/5427). You can also pass `duration` and `closable` attributes along with `message`. ## Excalidraw Library **_This section lists the updates made to the excalidraw library and will not affect the integration._** ### Features - Render library into `Sidebar` on mobile [#5774](https://github.com/excalidraw/excalidraw/pull/5774) - Additional drag and drop image format support (webp, bmp, ico) [#5749](https://github.com/excalidraw/excalidraw/pull/5749) - Enter and Exit line editor via context menu [#5719](https://github.com/excalidraw/excalidraw/pull/5719) - Further reduce darkmode init flash [#5701](https://github.com/excalidraw/excalidraw/pull/5701) - Support segment midpoints in line editor [#5641](https://github.com/excalidraw/excalidraw/pull/5641) - Added exportPadding to PNG (blob) export in @excalidraw/utils [#5626](https://github.com/excalidraw/excalidraw/pull/5626) - Introduce ExcalidrawElements and ExcalidrawAppState provider [#5463](https://github.com/excalidraw/excalidraw/pull/5463) - Enable midpoint inside linear element editor [#5564](https://github.com/excalidraw/excalidraw/pull/5564) - Show a mid point for linear elements [#5534](https://github.com/excalidraw/excalidraw/pull/5534) - Lock angle when editing linear elements with shift pressed [#5527](https://github.com/excalidraw/excalidraw/pull/5527) - Redesign linear elements 🎉 [#5501](https://github.com/excalidraw/excalidraw/pull/5501) - Cursor alignment when creating linear elements with shift pressed [#5518](https://github.com/excalidraw/excalidraw/pull/5518) - Shift-clamp when creating multi-point lines/arrows [#5500](https://github.com/excalidraw/excalidraw/pull/5500) - Cursor alignment when creating generic elements [#5516](https://github.com/excalidraw/excalidraw/pull/5516) - Make context menu scrollable [#4030](https://github.com/excalidraw/excalidraw/pull/4030) ### Fixes - Ungroup short cut key [#5779](https://github.com/excalidraw/excalidraw/pull/5779) - Replaced KeyboardEvent.code with KeyboardEvent.key for all letters [#5523](https://github.com/excalidraw/excalidraw/pull/5523) - Free draw flip not scaling correctly [#5752](https://github.com/excalidraw/excalidraw/pull/5752) - Wait for window focus until prompting for library install [#5751](https://github.com/excalidraw/excalidraw/pull/5751) - Update perfect freehand library to fix extra dot [#5727](https://github.com/excalidraw/excalidraw/pull/5727) - RestoreElementWithProperties drops "parent" property [#5742](https://github.com/excalidraw/excalidraw/pull/5742) - Horizontal text alignment for bound text when resizing [#5721](https://github.com/excalidraw/excalidraw/pull/5721) - Set the dimensions of bound text correctly [#5710](https://github.com/excalidraw/excalidraw/pull/5710) - Image-mirroring in export preview and in exported svg [#5700](https://github.com/excalidraw/excalidraw/pull/5700) - Double state update incorrectly resetting state [#5704](https://github.com/excalidraw/excalidraw/pull/5704) - Remove no longer used code related to collab room loading [#5699](https://github.com/excalidraw/excalidraw/pull/5699) - Revert webpack deduping to fix `@next` runtime [#5695](https://github.com/excalidraw/excalidraw/pull/5695) - Move to release notes for v0.9.0 and after [#5686](https://github.com/excalidraw/excalidraw/pull/5686) - Zen-mode exit button not working [#5682](https://github.com/excalidraw/excalidraw/pull/5682) - Buttons jump around on the mobile menu [#5658](https://github.com/excalidraw/excalidraw/pull/5658) - #5622 - prevent session theme reset during collaboration [#5640](https://github.com/excalidraw/excalidraw/pull/5640) - Library actions inside the sidebar [#5638](https://github.com/excalidraw/excalidraw/pull/5638) - Don't render library menu twice for mobile [#5636](https://github.com/excalidraw/excalidraw/pull/5636) - Reintroduce help dialog button [#5631](https://github.com/excalidraw/excalidraw/pull/5631) - Add display name to components so it doesn't show as anonymous [#5616](https://github.com/excalidraw/excalidraw/pull/5616) - Improve solveQuadratic when a = 0 [#5618](https://github.com/excalidraw/excalidraw/pull/5618) - Add random tiny offsets to avoid linear elements from being clipped [#5615](https://github.com/excalidraw/excalidraw/pull/5615) - Crash when adding a new point in the line editor #5602 [#5606](https://github.com/excalidraw/excalidraw/pull/5606) - Allow box selection of points when inside editor [#5594](https://github.com/excalidraw/excalidraw/pull/5594) - Remove unnecessary conditions in pointerup for linear elements [#5575](https://github.com/excalidraw/excalidraw/pull/5575) - Check if hitting link in handleSelectionOnPointerDown [#5589](https://github.com/excalidraw/excalidraw/pull/5589) - Points not being normalized on single-elem resize [#5581](https://github.com/excalidraw/excalidraw/pull/5581) - Deselect linear element when clicked inside bounding box outside editor [#5579](https://github.com/excalidraw/excalidraw/pull/5579) - Resize multiple elements from center [#5560](https://github.com/excalidraw/excalidraw/pull/5560) - Call static methods via class instead of instance in linearElementEditor [#5561](https://github.com/excalidraw/excalidraw/pull/5561) - Show bounding box for 3 or more linear point elements [#5554](https://github.com/excalidraw/excalidraw/pull/5554) - Cleanup the condition for dragging elements [#5555](https://github.com/excalidraw/excalidraw/pull/5555) - Shareable links being merged with current scene data [#5547](https://github.com/excalidraw/excalidraw/pull/5547) - Scene lookup failing when looking up by id [#5542](https://github.com/excalidraw/excalidraw/pull/5542) - Remove rounding to fix jitter when shift-editing [#5543](https://github.com/excalidraw/excalidraw/pull/5543) - Line deselected when shift-dragging point outside editor [#5540](https://github.com/excalidraw/excalidraw/pull/5540) - Flip linear elements after redesign [#5538](https://github.com/excalidraw/excalidraw/pull/5538) - Disable locking aspect ratio for box-selection [#5525](https://github.com/excalidraw/excalidraw/pull/5525) - Add `title` attribute to the modal close button [#5521](https://github.com/excalidraw/excalidraw/pull/5521) - Context menu positioning when component has offsets [#5520](https://github.com/excalidraw/excalidraw/pull/5520) - Resolve paths in prebuild.js script [#5498](https://github.com/excalidraw/excalidraw/pull/5498) - Use flushSync when moving line editor since we need to read previous value after setting state [#5508](https://github.com/excalidraw/excalidraw/pull/5508) - UseLayout effect cleanup in dev mode for charts [#5505](https://github.com/excalidraw/excalidraw/pull/5505) - Revert browser toast for high/low zoom [#5495](https://github.com/excalidraw/excalidraw/pull/5495) - Fixing push to DockerHub [#5468](https://github.com/excalidraw/excalidraw/pull/5468) - Incorrectly rendering freedraw elements [#5481](https://github.com/excalidraw/excalidraw/pull/5481) - Generate types when building example [#5480](https://github.com/excalidraw/excalidraw/pull/5480) - Use React.FC as react-dom is not able to infer types of Modal [#5479](https://github.com/excalidraw/excalidraw/pull/5479) - Missing translation for "Scale" to Export Dialog [#5456](https://github.com/excalidraw/excalidraw/pull/5456) - Add display name for Excalidraw component so it doesn't show as anonymous [#5464](https://github.com/excalidraw/excalidraw/pull/5464) - Account for safe area for floating buttons on mobile [#5420](https://github.com/excalidraw/excalidraw/pull/5420) - Attribute warnings in comment svg example [#5465](https://github.com/excalidraw/excalidraw/pull/5465) - Check for ctrl key when wheel event triggered to only disable zooming [#5459](https://github.com/excalidraw/excalidraw/pull/5459) - Disable render throttling by default & during resize [#5451](https://github.com/excalidraw/excalidraw/pull/5451) - Attach wheel event to exscalidraw container only [#5443](https://github.com/excalidraw/excalidraw/pull/5443) - Show toast when browser zoom is not 100% [#5304](https://github.com/excalidraw/excalidraw/pull/5304) - Prevent browser zoom inside Excalidraw [#5426](https://github.com/excalidraw/excalidraw/pull/5426) - Typo in changelog [#5425](https://github.com/excalidraw/excalidraw/pull/5425) ### Refactor - Create a util to compute container dimensions for bound text container [#5708](https://github.com/excalidraw/excalidraw/pull/5708) - Reuse common ui dialogs and message for mobile and LayerUI [#5611](https://github.com/excalidraw/excalidraw/pull/5611) - Stats component [#5610](https://github.com/excalidraw/excalidraw/pull/5610) - Move footer to its own component [#5609](https://github.com/excalidraw/excalidraw/pull/5609) - Remove unused attribute hasHitElementInside from pointerDownState [#5591](https://github.com/excalidraw/excalidraw/pull/5591) - Cleanup renderScene [#5573](https://github.com/excalidraw/excalidraw/pull/5573) - Rename docs to dev-docs [#5487](https://github.com/excalidraw/excalidraw/pull/5487) - Remove unnecessary if condition for linear element onKeyDown [#5486](https://github.com/excalidraw/excalidraw/pull/5486) - Improve typing & check [#5415](https://github.com/excalidraw/excalidraw/pull/5415) - Don't pass zenModeEnable, viewModeEnabled and toggleZenMode props to LayerUI [#5444](https://github.com/excalidraw/excalidraw/pull/5444) ### Build - Add missing dependencies: pica, lodash [#5656](https://github.com/excalidraw/excalidraw/pull/5656) - Move dotenv to dev deps [#5472](https://github.com/excalidraw/excalidraw/pull/5472) --- ## 0.12.0 (2022-07-07) Check out the [release notes](https://github.com/excalidraw/excalidraw/releases/tag/v0.12.0) ) **_This section lists the updates made to the excalidraw library and will not affect the integration._** ## 0.11.0 (2022-02-17) Check out the [release notes](https://github.com/excalidraw/excalidraw/releases/tag/v0.11.0) ## 0.10.0 (2021-10-13) Check out the [release notes](https://github.com/excalidraw/excalidraw/releases/tag/v0.10.0) ## 0.9.0 (2021-07-10) Check out the [release notes](https://github.com/excalidraw/excalidraw/releases/tag/v0.9.0) ## 0.8.0 (2021-05-15) ## Excalidraw API **_These section lists the updates which may affect your integration, so it is recommended to go through this when upgrading the version._** ### Features - Support updating any `appState` properties in [`updateScene`](https://github.com/excalidraw/excalidraw/blob/master/src/components/App.tsx#L282) API. Earlier only `appState.viewBackgroundColor` was supported, now any attribute can be updated with this API. - Expose [`serializeAsJSON`](https://github.com/excalidraw/excalidraw/blob/master/src/packages/excalidraw/README.md#serializeAsJSON) helper that we use when saving Excalidraw scene to a file [#3538](https://github.com/excalidraw/excalidraw/pull/3538). - Add support to render custom UI in the top right corner via [`renderTopRightUI`](https://github.com/excalidraw/excalidraw/blob/master/src/packages/excalidraw/README.md#renderTopRightUI) prop [#3539](https://github.com/excalidraw/excalidraw/pull/3539), [#3572](https://github.com/excalidraw/excalidraw/pull/3572) . This also removes the GitHub icon, keeping it local to the https://excalidraw.com app. ### Fixes - The encryption shield icon is now removed from excalidraw package as it was specific to excalidraw app and is now rendered via [`renderFooter`](https://github.com/excalidraw/excalidraw/blob/master/src/packages/excalidraw/README.md#renderFooter) prop. In case you were hiding this icon earlier, you need not do that anymore [#3577](https://github.com/excalidraw/excalidraw/pull/3577). Now `appState` is also passed to [`renderFooter`](https://github.com/excalidraw/excalidraw/blob/master/src/packages/excalidraw/README.md#renderFooter) prop. ## Excalidraw Library **_These section lists the updates made to the excalidraw library and will not affect the integration._** ### Features - Shortcut key for nerd stats [#3552](https://github.com/excalidraw/excalidraw/pull/3552). - Better rendering of curved rectangles [#3562](https://github.com/excalidraw/excalidraw/pull/3562). - Improved freedraw [#3512](https://github.com/excalidraw/excalidraw/pull/3512). - Add shortcut for dark mode [#3543](https://github.com/excalidraw/excalidraw/pull/3543). - Adds rounded icons, joins and caps.[#3521](https://github.com/excalidraw/excalidraw/pull/3521). ### Fixes - Exporting freedraw with color to svg [#3565](https://github.com/excalidraw/excalidraw/pull/3565). - Handle render errors [#3557](https://github.com/excalidraw/excalidraw/pull/3557). - Restore on paste or lib import [#3558](https://github.com/excalidraw/excalidraw/pull/3558). - Improve mobile user experience [#3508](https://github.com/excalidraw/excalidraw/pull/3508). - Prevent selecting `.visually-hidden` elements [#3501](https://github.com/excalidraw/excalidraw/pull/3501). ### Perf - Reduce SVG export size by more than half by reducing precision to 2 decimal places [#3567](https://github.com/excalidraw/excalidraw/pull/3567). - Remove `backdrop-filter` to improve perf [#3506](https://github.com/excalidraw/excalidraw/pull/3506) --- ## 0.7.0 (2021-04-26) ## Excalidraw API ### Features - [`scrollToContent`](https://github.com/excalidraw/excalidraw/blob/master/src/components/App.tsx#L265) API now supports passing just a single Excalidraw element, or none at all (which will default to current elements on the scene) [#3482](https://github.com/excalidraw/excalidraw/pull/3482). #### BREAKING CHANGE - Renamed `setScrollToContent` to [`scrollToContent`](https://github.com/excalidraw/excalidraw/blob/master/src/components/App.tsx#L265). - Make library local to given excalidraw instance (previously, all instances on the same page shared one global library) [#3451](https://github.com/excalidraw/excalidraw/pull/3451). - Added prop [onLibraryChange](https://github.com/excalidraw/excalidraw/blob/master/src/packages/excalidraw/README.md#onLibraryChange) which if supplied will be called when library is updated. - Added attribute `libraryItems` to prop [initialData](https://github.com/excalidraw/excalidraw/blob/master/src/packages/excalidraw/README.md#initialdata) which can be used to load excalidraw with existing library items. - Assign a [unique id](https://github.com/excalidraw/excalidraw/blob/master/src/packages/excalidraw/README.md#Id) to the excalidraw component. The id can be accessed via [`ref`](https://github.com/excalidraw/excalidraw/blob/master/src/components/App.tsx#L298). #### BREAKING CHANGE - From now on the host application is responsible for [persisting the library](https://github.com/excalidraw/excalidraw/blob/master/src/packages/excalidraw/README.md#onLibraryChange) to LocalStorage (or elsewhere), and [importing it on mount](https://github.com/excalidraw/excalidraw/blob/master/src/packages/excalidraw/README.md#initialdata). - Bind the keyboard events to component and added a prop [`handleKeyboardGlobally`](https://github.com/excalidraw/excalidraw/blob/master/src/packages/excalidraw/README.md#handleKeyboardGlobally) which if set to true will bind the keyboard events to document [#3430](https://github.com/excalidraw/excalidraw/pull/3430). #### BREAKING CHANGE - Earlier keyboard events were bind to document but now its bind to Excalidraw component by default. So you will need to set [`handleKeyboardGlobally`](https://github.com/excalidraw/excalidraw/blob/master/src/packages/excalidraw/README.md#handleKeyboardGlobally) to true if you want the previous behaviour (bind the keyboard events to document). - Recompute offsets on `scroll` of the nearest scrollable container [#3408](https://github.com/excalidraw/excalidraw/pull/3408). This can be disabled by setting [`detectScroll`](https://github.com/excalidraw/excalidraw/blob/master/src/packages/excalidraw/README.md#detectScroll) to `false`. - Add `onPaste` prop to handle custom clipboard behaviours [#3420](https://github.com/excalidraw/excalidraw/pull/3420). ### Fixes - Changing z-index of elements (sorting them below/above other elements) now updates their `version` and `versionNonce` (only applies to the selected elements). This fix will allow you account for z-index changes if you're syncing just the elements that changed (and not the whole scene) [#3483](https://github.com/excalidraw/excalidraw/pull/3483). - Only handle cut/paste events inside excalidraw [#3484](https://github.com/excalidraw/excalidraw/pull/3484). - Make history local to a given Excalidraw instance. This fixes a case where history was getting shared when you have multiple Excalidraw components on the same page [#3481](https://github.com/excalidraw/excalidraw/pull/3481). - Use active Excalidraw component when editing tex