* lasso without 'real' shape detection
* select a single linear el
* improve ux
* feed segments to worker
* simplify path threshold adaptive to zoom
* add a tiny threshold for checks
* refactor code
* lasso tests
* fix: ts
* do not capture lasso tool
* try worker-loader in next config
* update config
* refactor
* lint
* feat: show active tool when using "more tools"
* keep lasso if selected from toolbar
* fix incorrect checks for resetting to selection
* shift for additive selection
* bound text related fixes
* lint
* keep alt toggled lasso selection if shift pressed
* fix regression
* fix 'dead' lassos
* lint
* use workerpool and polyfill
* fix worker bundled with window related code
* refactor
* add file extension for worker constructor error
* another attempt at constructor error
* attempt at build issue
* attempt with dynamic import
* test not importing from math
* narrow down imports
* Reusing existing workers infrastructure (fallback to the main thread, type-safety)
* Points on curve inside the shared chunk
* Give up on experimental code splitting
* Remove potentially unnecessary optimisation
* Removing workers as the complexit is much worse, while perf. does not seem to be much better
* fix selecting text containers and containing frames together
* render fill directly from animated trail
* do not re-render static when setting selected element ids in lasso
* remove unnecessary property
* tweak trail animation
* slice points to remove notch
* always start alt-lasso from initial point
* revert build & worker changes (unused)
* remove `lasso` from `hasStrokeColor`
* label change
* remove unused props
* remove unsafe optimization
* snaps
---------
Co-authored-by: dwelle <5153846+dwelle@users.noreply.github.com>
Co-authored-by: Marcel Mraz <marcel@excalidraw.com>
* Flipping action now properly mirrors selections with elbow arrows
* Flipping action now re-centers the selection to the original center to avoid "walking" selections on repeated flipping
* resize single elements from the side
* fix lint
* do not resize texts from the sides (for we want to wrap/unwrap)
* omit side handles for frames too
* upgrade types
* enable resizing from the sides for multiple elements as well
* fix lint
* maintain aspect ratio when elements are not of the same angle
* lint
* always resize proportionally for multiple elements
* increase side resizing padding
* code cleanup
* adaptive handles
* do not resize for linear elements with only two points
* prioritize point dragging over edge resizing
* lint
* allow free resizing for multiple elements at degree 0
* always resize from the sides
* reduce hit threshold
* make small multiple elements movable
* lint
* show side handles on touch screen and mobile devices
* differentiate touchscreens
* keep proportional with text in multi-element resizing
* update snapshot
* update multi elements resizing logic
* lint
* reduce side resizing padding
* bound texts do not scale in normal cases
* lint
* test sides for texts
* wrap text
* do not update text size when changing its alignment
* keep text wrapped/unwrapped when editing
* change wrapped size to auto size from context menu
* fix test
* lint
* increase min width for wrapped texts
* wrap wrapped text in container
* unwrap when binding text to container
* rename `wrapped` to `autoResize`
* fix lint
* revert: use `center` align when wrapping text in container
* update snaps
* fix lint
* simplify logic on autoResize
* lint and test
* snapshots
* remove unnecessary code
* snapshots
* fix: defaults not set correctly
* tests for wrapping texts when resized
* tests for text wrapping when edited
* fix autoResize refactor
* include autoResize flag check
* refactor
* feat: rename action label & change contextmenu position
* fix: update version on `autoResize` action
* fix infinite loop when editing text in a container
* simplify
* always maintain `width` if `!autoResize`
* maintain `x` if `!autoResize`
* maintain `y` pos after fontSize change if `!autoResize`
* refactor
* when editing, do not wrap text in textWysiwyg
* simplify text editor
* make test more readable
* comment
* rename action to match file name
* revert function signature change
* only update in app
---------
Co-authored-by: dwelle <5153846+dwelle@users.noreply.github.com>
* build: enable consistent type imports eslint rule
* change to warn
* fix the warning in example and excalidraw-app
* fix packages
* enable type annotations and throw error for the rule
* Introducing fractional indices as part of `element.index`
* Ensuring invalid fractional indices are always synchronized with the array order
* Simplifying reconciliation based on the fractional indices
* Moving reconciliation inside the `@excalidraw/excalidraw` package
---------
Co-authored-by: Marcel Mraz <marcel@excalidraw.com>
Co-authored-by: dwelle <5153846+dwelle@users.noreply.github.com>
* fix: remove scene from getElementAbsoluteCoords and dependent functions and use elementsMap
* lint
* fix
* use non deleted elements where possible
* use non deleted elements map in actions
* pass elementsMap instead of array to elementOverlapsWithFrame
* lint
* fix
* pass elementsMap to getElementsCorners
* pass elementsMap to getEligibleElementsForBinding
* pass elementsMap in bindOrUnbindSelectedElements and unbindLinearElements
* pass elementsMap in elementsAreInFrameBounds,elementOverlapsWithFrame,isCursorInFrame,getElementsInResizingFrame
* pass elementsMap in getElementsWithinSelection, getElementsCompletelyInFrame, isElementContainingFrame, getElementsInNewFrame
* pass elementsMap to getElementWithTransformHandleType
* pass elementsMap to getVisibleGaps, getMaximumGroups,getReferenceSnapPoints,snapDraggedElements
* lint
* pass elementsMap to bindTextToShapeAfterDuplication,bindLinearElementToElement,getTextBindableContainerAtPosition
* revert changes for bindTextToShapeAfterDuplication