* fix: Always bind to container selected by user
* Don't bind to container when using text tool
* adjust z-index for bound text
* fix
* Add spec
* Add test
* Allow double click on transparent container and add spec
* fix spec
* adjust z-index only when binding
* update index
* fix
* add index check
* Update src/scene/Scene.ts
Co-authored-by: dwelle <luzar.david@gmail.com>
* fix: stop font `loadingdone` loop when rendering element SVGs
* update snaps
* stop updating scene elements array if no change was made
* always re-render if invalidating element shape
* tests: fix failing tests
* fix selection.test.tsx
* fix excalidraw.test.tsx and don't show image export when SaveAsImage is false in UIOptions.canvasActions
* more fixes
* require fake index db in setUp test to fix the tests
* fix regression
* Placed eraser into shape switcher (top toolbar).
Redesigned top toolbar.
* Redesigned zoom and undo-redo buttons.
* Started redesigning left toolbar.
* Redesigned help dialog.
* Colour picker now somewhat in line with new design
* [WIP] Changed a bunch of icons.
TODO: organise new icons.
* [WIP] Organised a bunch of icons. Still some to do
* [WIP] Started working on hamburger menu.
* Fixed some bugs with hamburger menu.
* Menu and left toolbar positioning.
* Added some more items to hamburger menu.
* Changed some icons.
* Modal/dialog styling & bunch of fixes.
* Some more dialog improvements & fixes.
* Mobile menu changes.
* Menu can now be closed with outside click.
* Collab avatars and button changes.
* Icon sizing. Left toolbar positioning.
* Implemented welcome screen rendering logic.
* [WIP] Welcome screen content + design.
* Some more welcome screen content and design.
* Merge fixes.
* Tweaked icon set.
* Welcome screen darkmode fix.
* Content updates.
* Various small fixes & adjustments.
Moved language selection into menu.
Fixed some problematic icons.
Slightly moved encryption icon.
* Sidebar header redesign.
* Libraries content rendering logic + some styling.
* Somem more library sidebar styling.
* Publish library dialog styling.
* scroll-back-to-content btn styling
* ColorPicker positioning.
* Library button styling.
* ColorPicker positioning "fix".
* Misc adjustments.
* PenMode button changes.
* Trying to make mobile somewhat usable.
* Added a couple of icons.
* Added some shortcuts.
* Prevent welcome screen flickering.
Fix issue with welcome screen interactivity.
Don't show sidebar button when docked.
* Icon sizing on smaller screens.
* Sidebar styling changes.
* Alignment button... well... alignments.
* Fix inconsistent padding in left toolbar.
* HintViewer changes.
* Hamburger menu changes.
* Move encryption badge back to its original pos.
* Arrowhead changes.
Active state, colours + stronger shadow.
* Added new custom font.
* Fixed bug with library button not rendering.
* Fixed issue with lang selection colours.
* Add tooltips for undo, redo.
* Address some dark mode contrast issues.
* (Re)introduce counter for selectedItems in sidebar
* [WIP] Tweaked bounding box colour & padding.
* Dashed bounding box for remote clients.
* Some more bounding box tweaks.
* Removed docking animation for now...
* Address some RTL issues.
* Welcome screen responsiveness.
* use lighter selection color in dark mode & align naming
* use rounded corners for transform handles
* use lighter gray for welcomeScreen text in dark mode
* disable selection on dialog buttons
* change selection button icon
* fix library item width being flexible
* library: visually align spinner with first section heading
* lint
* fix scrollbar color in dark mode & make thinner
* adapt properties panel max-height
* add shrotcut label to save-to-current-file
* fix unrelated `useOutsideClick` firing for active modal
* add promo color to e+ menu item
* fix type
* lowered button size
* fix transform handles raidus not accounting for zoom
* attempt fix for excal logo on safari
* final fix for excal logo on safari
* fixing fhd resolution button sized
* remove TODO shortcut
* Collab related styling changes.
Expanding avatar list no longer offsets top toolbar.
Added active state & collaborator count badge for collab button.
* Tweaked collab button active colours.
* Added active style to collab btn in hamburger menu
* Remove unnecessary comment.
* Added back promo link for non (signed in) E+ users
* Go to E+ button added for signed in E+ users.
* Close menu & dropdown on modal close.
* tweak icons & fix rendering on smaller sizes [part one]
* align welcomeScreen icons with other UI
* switch icon resize mq to `device-width`
* disable welcomeScreen items `:hover` when selecting on canvas
* change selection box color and style
* reduce selection padding and fix group selection styling
* improve collab cursor styling
- make name borders round
- hide status when "active"
- remove black/gray colors
* add Twitter to hamburger menu
* align collab button
* add shortcut for image export dialog
* revert yarn.lock
* fix more tabler icons
* slightly better-looking penMode button
* change penMode button & tooltip
* revert hamburger menu icon
* align padding on lang picker & canvas bg
* updated robot txt to allow twitter bot and fb bot
* added new OG and tweaked the OG state
* add tooltip to collab button
* align style for scroll-to-content button
* fix pointer-events around toolbar
* fix decor arrow positioning and RTL
* fix welcomeScreen-item active state in dark mode
* change `load` button copy
* prevent shadow anim when opening a docked sidebar
* update E+ links ga params
* show redirect-to-eplus welcomeScreen subheading for signed-in users
* make more generic
* add ga for eplus redirect button
* change copy and icons for hamburger export buttons
* update snaps
* trim the username to account for trailing spaces
* tweaks around decor breakpoints
* fix linear element editor test
* remove .env change
* remove `it.only`
Co-authored-by: dwelle <luzar.david@gmail.com>
Co-authored-by: Maielo <maielo.mv@gmail.com>
Co-authored-by: Aakansha Doshi <aakansha1216@gmail.com>
* feat: support segment midpoints in line editor
* fix tests
* midpoints working in bezier curve
* midpoint working with non zero roughness
* calculate beizer curve control points for points >2
* unnecessary rerender
* don't show phantom points inside editor for short segments
* don't show phantom points for small curves
* improve the algo for plotting midpoints on bezier curve by taking arc lengths and doing binary search
* fix tests finally
* fix naming
* cache editor midpoints
* clear midpoint cache when undo
* fix caching
* calculate index properly when not all segments have midpoints
* make sure correct element version is fetched from cache
* chore
* fix
* direct comparison for equal points
* create arePointsEqual util
* upate name
* don't update cache except inside getter
* don't compute midpoints outside editor unless 2pointer lines
* update cache to object and burst when Zoom updated as well
* early return if midpoints not present outside editor
* don't early return
* cleanup
* Add specs
* fix
* feat: Introduce ExcalidrawData provider so that app state and elements need not be passed to children
* fix
* fix zen mode
* Separate providers for data and elements
* pass appState and elements to layerUI
* pass appState and elements to selectedShapeActions
* pass appState and elements to MobileMenu
* pass appState to librarymenu
* rename
* rename to ExcalidrawAppState
* feat: Add a mid point for linear elements
* fix tests
* show mid point only on hover
* hacky fix :(
* don't add mid points if present and only add outside editor
* improve styling and always show phantom point instead of just on hover
* fix tests
* fix
* only add polyfill for test
* add hover state for phantom point
* fix tests
* fix
* Add Array.at polyfill
* reuse `centerPoint()` helper
* reuse `distance2d`
* use `Point` type
Co-authored-by: dwelle <luzar.david@gmail.com>
* fix: show bounding box for 3+ linear point elements
* refactor
* show bounding box for 3 points as well
* fix dragging bounding box for linear elements
* Increase margin/padding for linear elements
* fix cursor and keep bounding box same but offset resize handles
* introduce slight padding for selection border
* better
* add constant for spacing
* feat: redesign arrows and lines
* set selectedLinearElement on pointerup
* fix tests
* fix lint
* set selectionLinearElement to null when element is not selected
* fix
* don't set selectedElementIds to empty object when linear element selected
* don't move arrows when clicked on bounding box
* don't consider bounding box when linear element selected
* better hitbox
* show pointer when over the points in linear elements
* highlight points when hovered
* tweak design whene editing linear element points
* tweak
* fix test
* fix multi point editing
* cleanup
* fix
* fix
* remove stroke when hovered
* account for zoom when hover
* review fix
* set selectedLinearElement to null when selectedElementIds doesn't contain the linear element
* remove hover affect when moved away from linear element
* don't set selectedLinearAElement if already set
* fix selection
* render reduced in test :p
* fix box selection for single linear element
* set selectedLinearElement when deselecting selected elements and linear element is selected
* don't show linear element handles when element locked
* selected linear element when only linear present and selected with selectAll
* don't set selectedLinearElement if already set
* store selectedLinearElement in browser to persist
* remove redundant checks
* test fix
* select linear element handles when user has finished multipoint editing
* fix snap
* add comments
* show bounding box for locked linear elements
* add stroke param to fillCircle and remove stroke when linear element point hovered
* set selectedLinearElement when thats the only element left when deselcting others
* skip tests instead of removing for rotation
* (un)bind on pointerUp when moving linear element points outside editor
* render bounding box for linear elements as a fallback on state mismatch
* simplify and remove type assertion
Co-authored-by: dwelle <luzar.david@gmail.com>
* feat: cursor alignment when creating linear elements
* feat: apply cursor alignment to multi-point linear elements
* refactor: rename size helper function