* feat(editor): allow laser pointing in view mode
* feat: allow switching between laser/hand in view mode
* fix lint
* factor out to utils
* fix: only handle primary clicks with the selection/laser tools
* refactor device to editor interface and derive styles panel
* allow host app to control form factor and ui mode
* add editor interface event listener
* put new props inside UIOptions
* refactor: move related apis into one file
* expose getFormFactor
* privatize the setting of desktop mode and fix snapshots
* refactor and fix test
* remove unimplemented code
* export getFormFactor()
* replace `getFormFactor` with `getEditorInterface`
* remove dead & useless
* comment
* fix ts
---------
Co-authored-by: dwelle <5153846+dwelle@users.noreply.github.com>
* remove legacy openMenu=shape state and unused actions
* close menus/popups in applicable cases when opening a different one
* split ui z-indexes to account prefer different overlap
* make top canvas area clickable on mobile
* make mobile main menu closable by clicking outside and reduce width
* offset picker popups from viewport border on mobile
* reduce items gap in mobile main menu
* show top picks for canvas bg colors in all ui modes
* fix menu separator visibility on mobile
* fix command palette items not being filtered
* compact bottom toolbar
* put menu trigger to top left
* add popup to switch between grouped tool types
* add a dedicated mobile toolbar
* update position for mobile
* fix active tool type
* add mobile mode as well
* mobile actions
* remove refactored popups
* excali logo mobile
* include mobile
* update mobile menu layout
* move selection and deletion back to right
* do not fill eraser
* fix styling
* fix active styling
* bigger buttons, smaller gaps
* fix other tools not opened
* fix: Style panel persistence and restore
Signed-off-by: Mark Tolmacs <mark@lazycat.hu>
* move hidden action btns to extra popover
* fix dropdown overlapping with welcome screen
* replace custom popup with popover
* improve button styles
* swapping redo and delete
* always show undo & redo and improve styling
* change background
* toolbar styles
* no any
* persist perferred selection tool and align tablet as well
* add a renderTopLeftUI to props
* tweak border and bg
* show combined properties only when using suitable tools
* fix preferred tool
* new stroke icon
* hide color picker hot keys
* init preferred tool based on device
* fix main menu sizing
* fix welcome screen offset
* put text before image
* disable call highlight on buttons
* fix renderTopLeftUI
---------
Signed-off-by: Mark Tolmacs <mark@lazycat.hu>
Co-authored-by: Mark Tolmacs <mark@lazycat.hu>
Co-authored-by: dwelle <5153846+dwelle@users.noreply.github.com>
* feat: allow the hiding of top picks
* feat: allow the hiding of default fonts
* refactor: rename to compactMode
* feat: introduce layout (incomplete)
* tweak icons
* do not show border
* lint
* add isTouchMobile to device
* add isTouchMobile to device
* refactor to use showCompactSidebar instead
* hide library label in compact
* fix icon color in dark theme
* fix library and share btns getting hidden in smaller tablet widths
* update tests
* use a smaller gap between shapes
* proper fix of range
* quicker switching between different popovers
* to not show properties panel at all when editing text
* fix switching between different popovers for texts
* fix popover not closable and font search auto focus
* change properties for a new or editing text
* change icon for more style settings
* use bolt icon for extra actions
* fix breakpoints
* use rem for icon sizes
* fix tests
* improve switching between triggers (incomplete)
* improve trigger switching (complete)
* clean up code
* put compact into app state
* fix button size
* remove redundant PanelComponentProps["compactMode"]
* move fontSize UI on top
* mobile detection (breakpoints incomplete)
* tweak compact mode detection
* rename appState prop & values
* update snapshots
---------
Co-authored-by: dwelle <5153846+dwelle@users.noreply.github.com>
* feat: drag, resize, and rotate after selecting in lasso
* alternative ux: drag with lasso right away
* fix: lasso dragging should snap too
* fix: alt+cmd getting stuck
* test: snapshots
* alternatvie: keep lasso drag to only mobile
* alternative: drag after selection on PCs
* improve mobile dection
* add mobile lasso icon
* add default selection tool
* render according to default selection tool
* return to default selection tool after deletion
* reset to default tool after clearing out the canvas
* return to default tool after eraser toggle
* if default lasso, close lasso toggle
* finalize to default selection tool
* toggle between laser and default selection
* return to default selection tool after creation
* double click to add text when using default selection tool
* set to default selection tool after unlocking tool
* paste to center on touch screen
* switch to default selection tool after pasting
* lint
* fix tests
* show welcome screen when using default selection tool
* fix tests
* fix snapshots
* fix context menu not opening
* prevent potential displacement issue
* prevent element jumping during lasso selection
* fix dragging on mobile
* use same selection icon
* fix alt+cmd lasso getting cut off
* fix: shortcut handling
* lint
---------
Co-authored-by: dwelle <5153846+dwelle@users.noreply.github.com>
* fix: awkward point adding and removing on touch device
* feat: move finalize to next to last point
* feat: on touch screen, click would create a default line/arrow
* fix: make default adaptive to zoom
* fix: increase padding to avoid cutoffs
* refactor: simplify
* fix: only use bigger padding when needed
* center arrow horizontally on pointer
* increase min drag distance before we start 2-point-arrow-drag-creating
* do not render 0-width arrow while creating
* dead code
* fix tests
* fix: remove redundant code
* do not enter line editor on creation
---------
Co-authored-by: dwelle <5153846+dwelle@users.noreply.github.com>
* 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>
* box select frame & children
* avoid selecting children twice to avoid double their moving
* do not show ele stats if frame and children selected together
* do not update frame membership if selected together
* do not group frame and its children
* comment and refactor code
* hide align altogether
* include frame children when selecting all
* simplify
---------
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