* 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
* 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: enable midpoint inside linear element editor
* fix
* fix
* hack to set pointerDownState.hit.hasHitElementInside when mid point added
* remove hacks as not needed :)
* remove newline
* fix
* add doc
* 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:Integrate docusaraus for docs
* Update docs for Excalidraw
Co-authored-by: David Luzar <luzar.david@gmail.com>
* remove blogs
* remove blog authors
* get started docs
* typo
* add static assets
* change port number
* Add script to build docs only if docs updated
* dummy
* update script to be compatible with ignoreBuild in vercel
* remove script and dummy log
Co-authored-by: David Luzar <luzar.david@gmail.com>
* feat: update toast api to account for duration and closable
* fix
* update snaps
* update docs
* male toast nullable
* fix snaps
* remove clearToast from App.tsx and replace clearToast prop in Toast comp with onClose
* fix: show toast when browser zoom is not 100%
* update threshold for detecting zoom
* Make toast permanent for browser zoom
* check if browser zoomed on mount
* retrieve toast params from function getToastParams
* Revert "retrieve toast params from function getToastParams"
This reverts commit cfca580d74.
* feat: make toast closable and allow custom duration
* use Infinity to keep prevent auto close
* rename to DEFAULT_TOAST_TIMEOUT and move to toast.tsx
* fix
* set closable as false by default and fix design
* tweak css
* reuse variables
Co-authored-by: dwelle <luzar.david@gmail.com>
* build: use next and preview tags instead of separate packages for next and preview release
* add tag
* dummy diff
* revert dummy tweak
* don't use readme_next
* add note for latest release readme
* Add warning emoji for note
* move note to top
* remove readme next
* fix
* dummy change for release
* remove double note
* Revert "dummy change for release"
This reverts commit d3655cdee4.
* fix: copy arrow head when using copy styles
* remove mutations & check against `arrow` type
* fix lint
Co-authored-by: dwelle <luzar.david@gmail.com>
* feat: support custom elements in @excalidraw/excalidraw
* revert
* fix css
* fix offsets
* fix overflow of custom elements in example
* fix overflow in comments input
* make sure comment input never overflows the viewport
* remove offsetschange
* expose setActiveTool
* rename to onPointerDown
* update docs
* fix
* feat: support avatarURLfor collaborators
* fix
* better avatars :)
* use position fixed for tooltips so it renders correctly when offsets updated
* update docs
* Update src/excalidraw-app/collab/CollabWrapper.tsx
* rename avatarUrl to src
* feat: export copyToClipboard from package
* use promise constructor for better browser supprt
* add type to exportToClipboard
* update docs
* use json instead of text and use selected element in actionCopy
* pass `files` in example `exportToClipboard`
* fix bad access
Co-authored-by: dwelle <luzar.david@gmail.com>
* fix: use excalidraw asset path in fonts when exporting
* fix
* fix
* introduce env variables and determine asset path correctly
* fix snaps
* use env vars to determine pkg name and version
* update docs
* quotes
* fix: boundElementIds when arrows bound to elements are deleted
* fix type checks and updating unrelated elements
Co-authored-by: dwelle <luzar.david@gmail.com>
* feat: Support binding text to closest container
* Bind text to selected container
* show bind action in canvas and selected container after binding
* allow binding if container has no bound text
* fix
* move logic to show/hide bind actions to contextMenuPredicate
* don't show bind action when clicking on bounding box and not elemnts