You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
success/packages/excalidraw
Ryan Di 971b4d4ae6
feat: text wrapping (#7999)
* 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>
10 months ago
..
actions feat: text wrapping (#7999) 10 months ago
components feat: text wrapping (#7999) 10 months ago
context build: enable consistent type imports eslint rule (#7992) 10 months ago
css feat: tweak a few icons & add line editor button to side panel (#7990) 10 months ago
data feat: text wrapping (#7999) 10 months ago
element feat: text wrapping (#7999) 10 months ago
hooks build: enable consistent type imports eslint rule (#7992) 10 months ago
locales feat: text wrapping (#7999) 10 months ago
renderer build: enable consistent type imports eslint rule (#7992) 10 months ago
scene fix: correctly resolve the package version (#8016) 10 months ago
tests feat: text wrapping (#7999) 10 months ago
.gitignore docs: add next js with app router example (#7552) 1 year ago
.size-limit.json build: decouple package deps and introduce yarn workspaces (#7415) 1 year ago
CHANGELOG.md feat: expose `StoreAction` in relation to multiplayer history (#7898) 10 months ago
README.md build: decouple package deps and introduce yarn workspaces (#7415) 1 year ago
align.ts build: enable consistent type imports eslint rule (#7992) 10 months ago
analytics.ts fix: command palette tweaks and fixes (#7876) 11 months ago
animated-trail.ts build: enable consistent type imports eslint rule (#7992) 10 months ago
animation-frame-handler.ts feat: add eraser tool trail (#7511) 1 year ago
appState.ts build: enable consistent type imports eslint rule (#7992) 10 months ago
change.ts build: enable consistent type imports eslint rule (#7992) 10 months ago
charts.test.ts build: enable consistent type imports eslint rule (#7992) 10 months ago
charts.ts build: enable consistent type imports eslint rule (#7992) 10 months ago
clients.ts build: enable consistent type imports eslint rule (#7992) 10 months ago
clipboard.test.ts build: decouple package deps and introduce yarn workspaces (#7415) 1 year ago
clipboard.ts build: enable consistent type imports eslint rule (#7992) 10 months ago
colors.ts build: enable consistent type imports eslint rule (#7992) 10 months ago
constants.ts build: enable consistent type imports eslint rule (#7992) 10 months ago
css.d.ts build: decouple package deps and introduce yarn workspaces (#7415) 1 year ago
cursor.ts build: enable consistent type imports eslint rule (#7992) 10 months ago
deburr.ts feat: command palette (#7804) 11 months ago
distribute.ts fix: make getBoundTextElement and related helpers pure (#7601) 1 year ago
emitter.ts build: enable consistent type imports eslint rule (#7992) 10 months ago
env.cjs build: Welcome ESM and Bye Bye UMD (#7441) 1 year ago
errors.ts feat: fractional indexing (#7359) 11 months ago
fractionalIndex.ts build: enable consistent type imports eslint rule (#7992) 10 months ago
frame.test.tsx build: enable consistent type imports eslint rule (#7992) 10 months ago
frame.ts build: enable consistent type imports eslint rule (#7992) 10 months ago
ga.ts build: decouple package deps and introduce yarn workspaces (#7415) 1 year ago
gadirections.ts build: enable consistent type imports eslint rule (#7992) 10 months ago
galines.ts build: enable consistent type imports eslint rule (#7992) 10 months ago
gapoints.ts build: enable consistent type imports eslint rule (#7992) 10 months ago
gatransforms.ts build: enable consistent type imports eslint rule (#7992) 10 months ago
gesture.ts build: enable consistent type imports eslint rule (#7992) 10 months ago
global.d.ts build: enable consistent type imports eslint rule (#7992) 10 months ago
groups.ts build: enable consistent type imports eslint rule (#7992) 10 months ago
history.ts build: enable consistent type imports eslint rule (#7992) 10 months ago
i18n.ts build: enable consistent type imports eslint rule (#7992) 10 months ago
index-node.ts build: decouple package deps and introduce yarn workspaces (#7415) 1 year ago
index.tsx build: enable consistent type imports eslint rule (#7992) 10 months ago
jotai.ts build: enable consistent type imports eslint rule (#7992) 10 months ago
keys.ts feat: command palette (#7804) 11 months ago
laser-trails.ts build: enable consistent type imports eslint rule (#7992) 10 months ago
math.test.ts build: decouple package deps and introduce yarn workspaces (#7415) 1 year ago
math.ts build: enable consistent type imports eslint rule (#7992) 10 months ago
package.json feat: fractional indexing (#7359) 11 months ago
points.ts build: enable consistent type imports eslint rule (#7992) 10 months ago
polyfill.ts build: decouple package deps and introduce yarn workspaces (#7415) 1 year ago
pwacompat.d.ts build: decouple package deps and introduce yarn workspaces (#7415) 1 year ago
queue.test.ts feat: store library to IndexedDB & support storage adapters (#7655) 12 months ago
queue.ts build: enable consistent type imports eslint rule (#7992) 10 months ago
random.ts build: decouple package deps and introduce yarn workspaces (#7415) 1 year ago
react-app-env.d.ts build: decouple package deps and introduce yarn workspaces (#7415) 1 year ago
reactUtils.ts fix: decouple react and react-dom imports from utils and make it treeshakeable (#7527) 1 year ago
shapes.tsx build: decouple package deps and introduce yarn workspaces (#7415) 1 year ago
snapping.ts build: enable consistent type imports eslint rule (#7992) 10 months ago
store.ts build: enable consistent type imports eslint rule (#7992) 10 months ago
tsconfig.json docs: add next js with app router example (#7552) 1 year ago
types.ts build: enable consistent type imports eslint rule (#7992) 10 months ago
utility-types.ts feat: store library to IndexedDB & support storage adapters (#7655) 12 months ago
utils.ts build: enable consistent type imports eslint rule (#7992) 10 months ago
vite-env.d.ts build: decouple package deps and introduce yarn workspaces (#7415) 1 year ago
zindex.ts build: enable consistent type imports eslint rule (#7992) 10 months ago

README.md

Excalidraw

Excalidraw is exported as a component to directly embed in your projects.

Installation

You can use npm

npm install react react-dom @excalidraw/excalidraw

or via yarn

yarn add react react-dom @excalidraw/excalidraw

After installation you will see a folder excalidraw-assets and excalidraw-assets-dev in dist directory which contains the assets needed for this app in prod and dev mode respectively.

Move the folder excalidraw-assets and excalidraw-assets-dev to the path where your assets are served.

By default it will try to load the files from https://unpkg.com/@excalidraw/excalidraw/dist/

If you want to load assets from a different path you can set a variable window.EXCALIDRAW_ASSET_PATH depending on environment (for example if you have different URL's for dev and prod) to the url from where you want to load the assets.

Note

If you don't want to wait for the next stable release and try out the unreleased changes you can use @excalidraw/excalidraw@next.

Dimensions of Excalidraw

Excalidraw takes 100% of width and height of the containing block so make sure the container in which you render Excalidraw has non zero dimensions.

Demo

Try here.

Integration

Head over to the docs

API

Head over to the docs

Contributing

Head over to the docs