excalidraw/packages/excalidraw
Ryan Di 6fc85022ae
Some checks failed
Tests / test (push) Successful in 7m13s
Auto release excalidraw next / Auto-release-excalidraw-next (push) Failing after 1m45s
Build Docker image / build-docker (push) Failing after 6s
Cancel previous runs / cancel (push) Failing after 1s
Publish Docker / publish-docker (push) Failing after 20s
New Sentry production release / sentry (push) Failing after 2m5s
fix: lasso selection issues (#9353)
* revert stroke slicing hack for knot

* fix incorrect closing of path

* nonzero enclosure

* lint
2025-04-08 00:50:52 +10:00
..
actions feat: lasso selection (#9169) 2025-04-07 16:44:25 +10:00
components fix: deselected hit element being duplicated + incorrect re-seeding (#9333) 2025-04-07 10:41:31 +02:00
context refactor: auto ordered imports (#9163) 2025-03-12 15:23:31 +01:00
css feat: tweak color swatch, and button bgs (#9330) 2025-04-02 14:36:13 +02:00
data feat: lasso selection (#9169) 2025-04-07 16:44:25 +10:00
fonts refactor: separate elements logic into a standalone package (#9285) 2025-03-26 15:24:59 +01:00
hooks refactor: separate elements logic into a standalone package (#9285) 2025-03-26 15:24:59 +01:00
lasso fix: lasso selection issues (#9353) 2025-04-08 00:50:52 +10:00
locales feat: lasso selection (#9169) 2025-04-07 16:44:25 +10:00
renderer refactor: separate elements logic into a standalone package (#9285) 2025-03-26 15:24:59 +01:00
scene refactor: separate elements logic into a standalone package (#9285) 2025-03-26 15:24:59 +01:00
subset refactor: separate elements logic into a standalone package (#9285) 2025-03-26 15:24:59 +01:00
tests fix: deselected hit element being duplicated + incorrect re-seeding (#9333) 2025-04-07 10:41:31 +02:00
wysiwyg refactor: separate elements logic into a standalone package (#9285) 2025-03-26 15:24:59 +01:00
.gitignore docs: add next js with app router example (#7552) 2024-01-24 17:07:54 +05:30
.size-limit.json build: decouple package deps and introduce yarn workspaces (#7415) 2023-12-12 11:32:51 +05:30
analytics.ts refactor: separate elements logic into a standalone package (#9285) 2025-03-26 15:24:59 +01:00
animated-trail.ts fix: lasso selection issues (#9353) 2025-04-08 00:50:52 +10:00
animation-frame-handler.ts feat: add eraser tool trail (#7511) 2024-01-11 16:10:15 +00:00
appState.ts feat: lasso selection (#9169) 2025-04-07 16:44:25 +10:00
change.ts refactor: separate elements logic into a standalone package (#9285) 2025-03-26 15:24:59 +01:00
CHANGELOG.md docs: CHANGELOG typos 🙏 (#9250) 2025-03-11 23:18:15 +01:00
charts.test.ts refactor: auto ordered imports (#9163) 2025-03-12 15:23:31 +01:00
charts.ts refactor: separate elements logic into a standalone package (#9285) 2025-03-26 15:24:59 +01:00
clients.ts refactor: separate elements logic into a standalone package (#9285) 2025-03-26 15:24:59 +01:00
clipboard.test.ts build: decouple package deps and introduce yarn workspaces (#7415) 2023-12-12 11:32:51 +05:30
clipboard.ts refactor: separate elements logic into a standalone package (#9285) 2025-03-26 15:24:59 +01:00
css.d.ts build: decouple package deps and introduce yarn workspaces (#7415) 2023-12-12 11:32:51 +05:30
cursor.ts refactor: separate elements logic into a standalone package (#9285) 2025-03-26 15:24:59 +01:00
deburr.ts feat: command palette (#7804) 2024-03-28 16:16:32 +00:00
editor-jotai.ts feat: update jotai (#9015) 2025-01-16 16:59:11 +01:00
emitter.ts build: enable consistent type imports eslint rule (#7992) 2024-05-08 14:21:50 +05:30
env.cjs chore: post publish docs & examples changes (#9217) 2025-03-11 13:02:59 +01:00
errors.ts refactor: separate elements logic into a standalone package (#9285) 2025-03-26 15:24:59 +01:00
gesture.ts build: enable consistent type imports eslint rule (#7992) 2024-05-08 14:21:50 +05:30
global.d.ts refactor: separate elements logic into a standalone package (#9285) 2025-03-26 15:24:59 +01:00
history.ts refactor: separate elements logic into a standalone package (#9285) 2025-03-26 15:24:59 +01:00
i18n.ts refactor: separate elements logic into a standalone package (#9285) 2025-03-26 15:24:59 +01:00
index-node.ts refactor: auto ordered imports (#9163) 2025-03-12 15:23:31 +01:00
index.tsx refactor: separate elements logic into a standalone package (#9285) 2025-03-26 15:24:59 +01:00
laser-trails.ts refactor: separate elements logic into a standalone package (#9285) 2025-03-26 15:24:59 +01:00
mermaid.test.ts feat: improve mermaid detection on paste (#8287) 2024-07-27 12:36:54 +02:00
mermaid.ts feat: improve mermaid detection on paste (#8287) 2024-07-27 12:36:54 +02:00
package.json chore: bump @radix-ui/react-tabs version to 1.1.3 (#9329) 2025-04-02 16:23:15 +02:00
polyfill.ts build: decouple package deps and introduce yarn workspaces (#7415) 2023-12-12 11:32:51 +05:30
pwacompat.d.ts build: decouple package deps and introduce yarn workspaces (#7415) 2023-12-12 11:32:51 +05:30
react-app-env.d.ts build: decouple package deps and introduce yarn workspaces (#7415) 2023-12-12 11:32:51 +05:30
reactUtils.ts refactor: separate elements logic into a standalone package (#9285) 2025-03-26 15:24:59 +01:00
README.md chore: post publish docs & examples changes (#9217) 2025-03-11 13:02:59 +01:00
snapping.ts refactor: separate elements logic into a standalone package (#9285) 2025-03-26 15:24:59 +01:00
store.ts refactor: separate elements logic into a standalone package (#9285) 2025-03-26 15:24:59 +01:00
tsconfig.json fix: incorrect type imports (#9308) 2025-03-27 12:00:12 +01:00
types.ts feat: lasso selection (#9169) 2025-04-07 16:44:25 +10:00
visualdebug.ts refactor: separate elements logic into a standalone package (#9285) 2025-03-26 15:24:59 +01:00
vite-env.d.ts refactor: separate elements logic into a standalone package (#9285) 2025-03-26 15:24:59 +01:00
workers.ts refactor: separate elements logic into a standalone package (#9285) 2025-03-26 15:24:59 +01:00

Excalidraw

Excalidraw is exported as a component to be directly embedded in your project.

Installation

Use npm or yarn to install the package.

npm install react react-dom @excalidraw/excalidraw
# or
yarn add react react-dom @excalidraw/excalidraw

Note

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

Self-hosting fonts

By default, Excalidraw will try to download all the used fonts from the CDN.

For self-hosting purposes, you'll have to copy the content of the folder node_modules/@excalidraw/excalidraw/dist/prod/fonts to the path where your assets should be served from (i.e. public/ directory in your project). In that case, you should also set window.EXCALIDRAW_ASSET_PATH to the very same path, i.e. / in case it's in the root:

<script>window.EXCALIDRAW_ASSET_PATH = "/";</script>

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

Go to CodeSandbox example.

Integration

Head over to the docs.

API

Head over to the docs.

Contributing

Head over to the docs.