* 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
* feat: update eraser cursor
* fix dark theme
* check before adding active class
* use custom cursor instead of DOM manipulation
* cache canvas and redraw only when theme changes
* use oc colors
* remove
* cache preview data url
* increase linwidth
* update coords for cursor
* add white 2px outline
* improvements
* use 1px line width 6px radius for outer
* improve
* feat: Add Eraser 🎉
* Eraser working
* remove unused state
* fix
* toggle eraser
* Support deselect with Alt/Option
* rename actionDelete -> actionErase
* Add util isEraserActive
* show eraser in mobile
* render eraser conditionally in mobile
* use selection if eraser in local storage state
* Add sampling to erase accurately
* use pointerDownState
* set eraser to false in AllowedExcalidrawElementTypes
* rename/reword fixes
* don't use updateScene
* handle bound text when erasing
* fix hover state in mobile
* consider all hitElements instead of a single
* code improvements
* revert to select if eraser active and elements selected
* show eraser in zenmode
* erase element when clicked on element while eraser active
* set groupIds to empty when eraser active
* fix test
* remove dragged distance
* feat: support vertical text align for bound containers
* update icons
* use const
* fix lint
* rename to and show when text editor active
* don't update vertical align if not center
* fix svgs
* fix y coords when vertical align bottm
Co-authored-by: dwelle <luzar.david@gmail.com>
* feat: support custom colors 🎉
* remove canvasBackground
* fix tests
* Remove custom color when elements deleted
* persist custom color across sessions
* Choose 5 latest custom colors when populating from elements
* fix tests
* styling
* don't use up/down arrow for custom colors
* Always push latest color to the begining
* don't check if valid in custom color
* calculate custom colors on color picker open
* revert unnecessary changes
* remove newlines
* simplify state
* tweak label
* fix custom color shortcuts throwing if color not exists
* fix
* early return
Co-authored-by: dwelle <luzar.david@gmail.com>
* feat: Scale font size when bound text containers resized with shift pressed
* revert fontsize once shift pressed/released after resize
* make slightly more typesafe
Co-authored-by: dwelle <luzar.david@gmail.com>
* fix: restore cursor position after bound text container value updated
* only restore cursor when the cursor is not at the end of the line
* compute diff before setting the cursor
* chore: Add tracking for hyperlinks
* update
* fix
* remove
* tweak
* disable ga logging in dev again
* add logging for hyperlink `edit` & support for tracking in manager
* event label tweaks
* fix tests & make more typesafe
Co-authored-by: dwelle <luzar.david@gmail.com>
* fix: fallback to primary color if --color-primary-chubb not present
* rename to --color-primary-contrast-offset
* use contarst-offset
Co-authored-by: David Luzar <luzar.david@gmail.com>
* Update src/packages/excalidraw/README_NEXT.md
* remove
* Update src/packages/excalidraw/README_NEXT.md
Co-authored-by: David Luzar <luzar.david@gmail.com>
Co-authored-by: David Luzar <luzar.david@gmail.com>