599 Commits

Author SHA1 Message Date
Arnošt Pleskot
53a88d4c7a
Merge branch 'master' of github.com:excalidraw/excalidraw into arnost/scroll-in-read-only-links 2023-09-07 13:52:29 +02:00
Arnošt Pleskot
10900f39ee
fix: allow to scroll on one axis when other is fully in view 2023-09-05 17:32:51 +02:00
Arnošt Pleskot
ebbd72e792
feat: use single overscrollAllowance for both axis 2023-09-04 11:55:14 +02:00
Arnošt Pleskot
f8ba862774
feat: set initial zoom to viewportZoomFactor when lockZoom is false 2023-09-03 23:47:48 +02:00
Arnošt Pleskot
806b1e9705
fix: prevent viewport jumping when panning by mouse wheel 2023-09-03 16:54:04 +02:00
David Luzar
8101a351db
fix: resetting deleted elements on duplication (#6906) 2023-08-18 00:28:26 +02:00
zsviczian
1bd416002c
fix: scope --color-selection retrieval to given instance (#6886)
Co-authored-by: dwelle <luzar.david@gmail.com>
2023-08-16 21:59:37 +00:00
Rahul
c29f19a88b
perf: Limiting the suggested binding to fix performance issue (#6877) 2023-08-14 13:11:08 +02:00
Marcel Mraz
a376bd9495
feat: partition main canvas vertically (#6759)
Co-authored-by: Marcel Mraz <marcel.mraz@adacta-fintech.com>
Co-authored-by: dwelle <luzar.david@gmail.com>
2023-08-12 22:56:59 +02:00
Aakansha Doshi
3ea07076ad
feat: support creating containers, linear elements, text containers, labelled arrows and arrow bindings programatically (#6546)
* feat: support creating text containers programatically

* fix

* fix

* fix

* fix

* update api to use label

* fix api and support individual shapes and text element

* update test case in package example

* support creating arrows and line

* support labelled arrows

* add in package example

* fix alignment

* better types

* fix

* keep element as is unless we support prog api

* fix tests

* fix lint

* ignore

* support arrow bindings via start and end in api

* fix lint

* fix coords

* support id as well for elements

* preserve bindings if present and fix testcases

* preserve bindings for labelled arrows

* support ids, clean up code and move the api related stuff to transform.ts

* allow multiple arrows to bind to single element

* fix singular elements

* fix single text element, unique id and tests

* fix lint

* fix

* support binding arrow to text element

* fix creation of regular text

* use same stroke color as parent for text containers and height 0 for linear element by default

* fix types

* fix

* remove more ts ignore

* remove ts ignore

* remove

* Add coverage script

* Add tests

* fix tests

* make type optional when id present

* remove type when id provided in tests

* Add more tests

* tweak

* let host call convertToExcalidrawElements when using programmatic API

* remove convertToExcalidrawElements call from restore

* lint

* update snaps

* Add new type excalidraw-api/clipboard for programmatic api

* cleanup

* rename tweak

* tweak

* make image attributes optional and better ts check

* support image via programmatic API

* fix lint

* more types

* make fileId mandatory for image and export convertToExcalidrawElements

* fix

* small tweaks

* update snaps

* fix

* use Object.assign instead of mutateElement

* lint

* preserve z-index by pushing all elements first and then add bindings

* instantiate instead of closure for storing elements

* use element API to create regular text, diamond, ellipse and rectangle

* fix snaps

* udpdate api

* ts fixes

* make `convertToExcalidrawElements` more typesafe

* update snaps

* refactor the approach so that order of elements doesn't matter

* Revert "update snaps"

This reverts commit 621dfadccfea975a1f77223f506dce9d260f91fd.

* review fixes

* rename ExcalidrawProgrammaticElement -> ExcalidrawELementSkeleton

* Add tests

* give preference to first element when duplicate ids found

* use console.error

---------

Co-authored-by: dwelle <luzar.david@gmail.com>
2023-08-09 16:41:15 +05:30
David Luzar
083bcf802c
fix: remove embeddable from generic elements (#6853) 2023-08-04 15:16:55 +02:00
dwelle
b0cdd00c2a [debug] 2023-08-02 17:54:04 +02:00
Alex Kim
bb985eba3a
fix: resizing arrow labels (#6789)
* fix arrow labels resizing

- min arrow labels width based on font size
- labels width and padding in % of container's width
- resize labels simply multiplying by scale

* remove no longer needed getContainerDims

* fix arrow labels font size not updated on change font size action

* fix bound arrows not updated right after resize

* fix test

* fix 3+ point arrow label resizing with shift

* fix bound text not scaling when resizing with shift & n or s handle

* fix arrow labels width not updating when moving a 2-point arrow point with shift

---------

Co-authored-by: Aakansha Doshi <aakansha1216@gmail.com>
2023-08-02 15:34:21 +05:30
Arnošt Pleskot
4469c02191
chore: move this.scene.getElementsIncludingDeleted() result into const 2023-08-01 16:52:59 +02:00
Arnošt Pleskot
04e23e1d29
fix: do not animate empty scene 2023-08-01 16:30:45 +02:00
Arnošt Pleskot
d24a032dbb
feat: set scroll constraints on initial scene state 2023-07-31 18:33:39 +02:00
Arnošt Pleskot
76d3930983
fix: typo 2023-07-31 09:50:47 +02:00
Arnost Pleskot
af6e64ffc2
Merge branch 'master' into arnost/scroll-in-read-only-links 2023-07-31 09:26:14 +02:00
Benjamin André-Micolon
9ca27c62c7
feat: add support for simplePDF in Web-Embeds (#6810) 2023-07-29 10:02:15 +02:00
Aakansha Doshi
48924688c7
build: migrate to Vite 🚀 (#6818)
* init

* add: vite dev build working

* fix: href serving from public

* feat: add ejs plugin

* feat: migrated env files and ejs templating

* chore: add types related to envs

* chore: add vite-env types

* feat: support vite pwa

* chore: upgrade vite pwa

* chore: pin node version to 16.18.1

* chore: preserve use of nodejs 14

* refactor: preserve REACT_APP as env prefix

* chore: support esm environment variables

* fix ts config

* use VITE prefix and remove vite-plugin-env-compatible

* introduce import-meta-loader for building pacakge as webpack isn't compatible with import.meta syntax

* lint

* remove import.meta.env in main.js

* set debug flag to false

* migrate to vitest and use jest-canvas-mock 2.4.0 so its comp
atible with vite

* integrate vitest-ui

* fix most of teh test

* snaps

* Add script for testing with vite ui

* fix all tests related to mocking

* fix more test

* fix more

* fix flip.test.tsx

* fix contentxmenu snaps

* fix regression snaps

* fix excalidraw.test.tsx and this makes all tests finally pass :)

* use node 16

* specify node version

* use node 16 in lint as well

* fix mobile.test.tsx

* use node 16

* add style-loader

* upgrade to node 18

* fix lint package.json

* support eslint with vite

* fix lint

* fix lint

* fix ts

* remove pwa/sw stuff

* use env vars in EJS the vite way

* fix lint

* move remainig jest mock/spy to vite

* don't cache locales

* fix regex

* add fonts cache

* tweak

* add custom service worker

* upgrade vite and create font cache again

* cache fonts.css and locales

* tweak

* use manifestTransforms for filtering locales

* use assets js pattern for locales

* add font.css to globIgnore so its pushed to fonts cache

* create a separate chunk for locales with rollup

* remove manifestTransforms and fix glob pattern for locales to filter from workbox pre-cache

* push sourcemaps in production

* add comments in config

* lint

* use node 18

* disable pwa in dev

* fix

* fix

* increase limit of bundle

* upgrade vite-pwa to latest

* remove public/workbox so workbox assets are not precached

* fon't club en.json and percentages.json with manual locales chunk to fix first load+offline mode

* tweak regex

* remove happy-dom as its not used

* add comment

* use any instead of ts-ignore

* cleanup

* remove jest-canvas-mock resolution as vite-canvas-mock was patched locking deps at 2.4.0

* use same theme color present in entry point

* remove vite-plugin-eslint as it improves DX significantly

* integrate vite-plugin-checker for ts errors

* add nabla/vite-plugin-eslint

* use eslint from checker only

* add env variable VITE_APP_COLLAPSE_OVERLAY for collapsing the checker overlay

* tweak vite checker overlay badge position

* Enable eslint behind flag as its not working well with windows with non WSL

* make port configurable

* open the browser when server ready

* enable eslint by default

---------

Co-authored-by: Weslley Braga <weslley@bambee.com>
Co-authored-by: dwelle <luzar.david@gmail.com>
2023-07-27 23:50:11 +05:30
David Luzar
8af9ea3cf3
fix: adding to selection via shift box-select (#6815) 2023-07-27 12:50:08 +02:00
Aakansha Doshi
8104068bd5
revert: "build: Migrate to Vite 🚀" (#6814)
Revert "build: Migrate to Vite 🚀 (#6713)"

This reverts commit e93bbc577613a6de6bb43c40c3b57286b4994ca5.
2023-07-26 22:34:06 +05:30
Aakansha Doshi
e93bbc5776
build: Migrate to Vite 🚀 (#6713)
* init

* add: vite dev build working

* fix: href serving from public

* feat: add ejs plugin

* feat: migrated env files and ejs templating

* chore: add types related to envs

* chore: add vite-env types

* feat: support vite pwa

* chore: upgrade vite pwa

* chore: pin node version to 16.18.1

* chore: preserve use of nodejs 14

* refactor: preserve REACT_APP as env prefix

* chore: support esm environment variables

* fix ts config

* use VITE prefix and remove vite-plugin-env-compatible

* introduce import-meta-loader for building pacakge as webpack isn't compatible with import.meta syntax

* lint

* remove import.meta.env in main.js

* set debug flag to false

* migrate to vitest and use jest-canvas-mock 2.4.0 so its comp
atible with vite

* integrate vitest-ui

* fix most of teh test

* snaps

* Add script for testing with vite ui

* fix all tests related to mocking

* fix more test

* fix more

* fix flip.test.tsx

* fix contentxmenu snaps

* fix regression snaps

* fix excalidraw.test.tsx and this makes all tests finally pass :)

* use node 16

* specify node version

* use node 16 in lint as well

* fix mobile.test.tsx

* use node 16

* add style-loader

* upgrade to node 18

* fix lint package.json

* support eslint with vite

* fix lint

* fix lint

* fix ts

* remove pwa/sw stuff

* use env vars in EJS the vite way

* fix lint

* move remainig jest mock/spy to vite

* don't cache locales

* fix regex

* add fonts cache

* tweak

* add custom service worker

* upgrade vite and create font cache again

* cache fonts.css and locales

* tweak

* use manifestTransforms for filtering locales

* use assets js pattern for locales

* add font.css to globIgnore so its pushed to fonts cache

* create a separate chunk for locales with rollup

* remove manifestTransforms and fix glob pattern for locales to filter from workbox pre-cache

* push sourcemaps in production

* add comments in config

* lint

* use node 18

* disable pwa in dev

* fix

* fix

* increase limit of bundle

* upgrade vite-pwa to latest

* remove public/workbox so workbox assets are not precached

* fon't club en.json and percentages.json with manual locales chunk to fix first load+offline mode

* tweak regex

* remove happy-dom as its not used

* add comment

* use any instead of ts-ignore

* cleanup

* remove jest-canvas-mock resolution as vite-canvas-mock was patched locking deps at 2.4.0

* use same theme color present in entry point

---------

Co-authored-by: Weslley Braga <weslley@bambee.com>
Co-authored-by: dwelle <luzar.david@gmail.com>
2023-07-26 15:55:20 +05:30
zsviczian
b57b3b573d
feat: introducing Web-Embeds (alias iframe element) (#6691)
Co-authored-by: dwelle <luzar.david@gmail.com>
2023-07-24 16:51:53 +02:00
David Luzar
9f76f8677b
feat: cache most of element selection (#6747) 2023-07-17 01:09:44 +02:00
Arnošt Pleskot
4e9039e850
feat: simplify memoization logic 2023-07-15 12:44:34 +02:00
Arnošt Pleskot
132750f753
feat: splitting logic, memoization 2023-07-15 12:44:33 +02:00
Arnošt Pleskot
6d165971fc
feat: set view mode when constrains set via props 2023-07-15 12:44:31 +02:00
Arnošt Pleskot
9562e4309f
feat: add zoom lock and viewportZoomFactor 2023-07-15 12:44:30 +02:00
Arnošt Pleskot
e8e391e465
refactor: split constrainScroll into smaller functions 2023-07-15 12:44:29 +02:00
Arnošt Pleskot
92be92071a
feat: disable animation on zooming 2023-07-15 12:44:28 +02:00
Arnošt Pleskot
71918e57a8
feat: cleanup 2023-07-15 12:44:27 +02:00
Arnošt Pleskot
c0bd9027cb
feat: animate the scroll to constrained area 2023-07-15 12:44:26 +02:00
Arnošt Pleskot
7fb6c23715
fix: remove forgotten console.log 2023-07-15 12:44:24 +02:00
Arnošt Pleskot
82014fe670
chore: comments and variable renaming 2023-07-15 12:44:23 +02:00
Arnošt Pleskot
bc44c3f947
feat: add overscroll when constrained area is smaller than viewport 2023-07-15 12:44:21 +02:00
Arnošt Pleskot
19ba107041
feat: pass scrollConstraints via props 2023-07-15 12:44:18 +02:00
Arnošt Pleskot
381ef93956
feat: remove zoom limit 2023-07-15 12:42:46 +02:00
Arnošt Pleskot
f82363aae9
feat: enforce constrains on setting constrains 2023-07-15 12:42:45 +02:00
Arnošt Pleskot
485c57fd59
chore: remove console.log 2023-07-15 12:42:44 +02:00
Arnošt Pleskot
35b43c14d8
feat: allow scroll over constraints while mouse down 2023-07-15 12:42:43 +02:00
Arnošt Pleskot
f7e8056abe
feat: update constraints on window resize 2023-07-15 12:42:42 +02:00
Arnošt Pleskot
2998573e79
feat: limit scroll in componentDidUpdate 2023-07-15 12:42:40 +02:00
Arnošt Pleskot
209934c90a
feat: center constrained area on zoom out 2023-07-15 12:42:39 +02:00
Arnošt Pleskot
a8158691b7
feat: limit zoom by translateCanvas 2023-07-15 12:42:38 +02:00
Arnošt Pleskot
75f8e904cc
feat: add possibility to limit scroll area 2023-07-15 12:42:37 +02:00
David Luzar
2e46e27490
fix: use actual dock state to not close docked library on insert (#6766) 2023-07-14 20:21:02 +02:00
David Luzar
cf0413338e
feat: support customizing what parts of frames are rendered (#6752) 2023-07-10 17:13:44 +02:00
David Luzar
49e4289878
feat: make appState.selectedElementIds more stable (#6745) 2023-07-08 23:33:34 +02:00
Barnabás Molnár
29a5e982c3
feat: support scrollToContent opts.fitToViewport (#6581)
Co-authored-by: dwelle <luzar.david@gmail.com>
Co-authored-by: Arnošt Pleskot <arnostpleskot@gmail.com>
2023-06-29 12:36:38 +02:00