diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b3a5c325..509908e5 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,63 +1,3 @@ # Contributing -## Setup - -### Option 1 - Manual - -1. Fork and clone the repo -1. Run `yarn` to install dependencies -1. Create a branch for your PR with `git checkout -b your-branch-name` - -> To keep `master` branch pointing to remote repository and make pull requests from branches on your fork. To do this, run: -> -> ```sh -> git remote add upstream https://github.com/excalidraw/excalidraw.git -> git fetch upstream -> git branch --set-upstream-to=upstream/master master -> ``` - -### Option 2 - CodeSandbox - -1. Go to https://codesandbox.io/s/github/excalidraw/excalidraw -1. Connect your GitHub account -1. Go to Git tab on left side -1. Tap on `Fork Sandbox` -1. Write your code -1. Commit and PR automatically - -## Pull Request Guidelines - -Don't worry if you get any of the below wrong, or if you don't know how. We'll gladly help out. - -### Title - -Make sure the title starts with a semantic prefix: - -- **feat**: A new feature -- **fix**: A bug fix -- **docs**: Documentation only changes -- **style**: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc) -- **refactor**: A code change that neither fixes a bug nor adds a feature -- **perf**: A code change that improves performance -- **test**: Adding missing tests or correcting existing tests -- **build**: Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm) -- **ci**: Changes to our CI configuration files and scripts (example scopes: Travis, Circle, BrowserStack, SauceLabs) -- **chore**: Other changes that don't modify src or test files -- **revert**: Reverts a previous commit - -### Changelog - -Add a brief description of your pull request to the changelog located here: [`src/packages/excalidraw/CHANGELOG.md`](src/packages/excalidraw/CHANGELOG.md) - -Notes: - -- Make sure to prepend to the section corresponding with the semantic prefix you selected in the title -- Link to your pull request - this will require updating the CHANGELOG _after_ creating the pull request - -### Testing - -Once you submit your pull request it will automatically be tested. Be sure to check the results of the test and fix any issues that arise. - -It's also a good idea to consider if your change should include additional tests. This is highly recommended for new features or bug-fixes. For example, it's good practice to create a test for each bug you fix which ensures that we don't regress the code in the future. - -Finally - always manually test your changes using the convenient staging environment deployed for each pull request. As much as local development attempts to replicate production, there can still be subtle differences in behavior. For larger features consider testing your change in multiple browsers as well. +Head over to the [docs](https://docs.excalidraw.com/docs/introduction/contributing) diff --git a/README.md b/README.md index 45fec41b..21e2716d 100644 --- a/README.md +++ b/README.md @@ -1,30 +1,31 @@ -
+
- Excalidraw logo: Sketch handrawn like diagrams. + Excalidraw logo: Sketch handrawn like diagrams. -

Virtual whiteboard for sketching hand-drawn like diagrams.
Collaborative and end-to-end encrypted.

+

Virtual whiteboard for sketching hand-drawn like diagrams.
Collaborative and end-to-end encrypted.

- - Follow Excalidraw on Twitter + + Follow Excalidraw on Twitter - - + + Chat with us on Discord

-

Ask questions or hang out on our discord.gg/UexuTaE.

-## Try it now +## Try now -Go to [excalidraw.com](https://excalidraw.com) to start sketching. +Visit [excalidraw.com](https://excalidraw.com) to start sketching. -Read the latest news and updates on our [blog](https://blog.excalidraw.com). A good start is to see all the updates of [One Year of Excalidraw](https://blog.excalidraw.com/one-year-of-excalidraw/). +## Community + +For latest updates, follow us on [twitter](https://twitter.com/excalidraw). If you need help or want to chat, join us on [Discord](https://discord.gg/UexuTaE). For releases and deep dives, check out our [blog](https://blog.excalidraw.com). Report bugs on [GitHub](https://github.com/excalidraw/excalidraw/issues). ## Supporting Excalidraw If you like the project, you can become a sponsor at [Open Collective](https://opencollective.com/excalidraw). -[](https://opencollective.com/excalidraw/tiers/sponsors/0/website) [](https://opencollective.com/excalidraw/tiers/sponsors/1/website) [](https://opencollective.com/excalidraw/tiers/sponsors/2/website) [](https://opencollective.com/excalidraw/tiers/sponsors/3/website) [](https://opencollective.com/excalidraw/tiers/sponsors/4/website) [](https://opencollective.com/excalidraw/tiers/sponsors/5/website) [](https://opencollective.com/excalidraw/tiers/sponsors/6/website) [](https://opencollective.com/excalidraw/tiers/sponsors/7/website) [](https://opencollective.com/excalidraw/tiers/sponsors/8/website) [](https://opencollective.com/excalidraw/tiers/sponsors/9/website) [](https://opencollective.com/excalidraw/tiers/sponsors/10/website) +[](https://opencollective.com/excalidraw/tiers/sponsors/0/website) [](https://opencollective.com/excalidraw/tiers/sponsors/1/website) [](https://opencollective.com/excalidraw/tiers/sponsors/2/website) [](https://opencollective.com/excalidraw/tiers/sponsors/3/website) [](https://opencollective.com/excalidraw/tiers/sponsors/4/website) [](https://opencollective.com/excalidraw/tiers/sponsors/5/website) [](https://opencollective.com/excalidraw/tiers/sponsors/6/website) [](https://opencollective.com/excalidraw/tiers/sponsors/7/website) [](https://opencollective.com/excalidraw/tiers/sponsors/8/website) [](https://opencollective.com/excalidraw/tiers/sponsors/9/website) [](https://opencollective.com/excalidraw/tiers/sponsors/10/website) @@ -32,170 +33,12 @@ Last but not least, we're thankful to these companies for offering their service [![Vercel](./.github/assets/vercel.svg)](https://vercel.com) [![Sentry](./.github/assets/sentry.svg)](https://sentry.io) [![Crowdin](./.github/assets/crowdin.svg)](https://crowdin.com) -## Who's integrating Excalidraw - -[Google Cloud](https://googlecloudcheatsheet.withgoogle.com/architecture) • [Meta](https://meta.com/) • [CodeSandbox](https://codesandbox.io/) • [Obsidian Excalidraw](https://github.com/zsviczian/obsidian-excalidraw-plugin) • [Replit](https://replit.com/) • [Slite](https://slite.com/) • [Notion](https://notion.so/) • [HackerRank](https://www.hackerrank.com/) • - -## Documentation - -### Shortcuts - -You can almost do anything with shortcuts. Click on the help icon on the bottom right corner to see them all. - -### Curved lines and arrows - -Choose line or arrow and click click click instead of drag. - -### Charts - -You can easily create charts by copy pasting data from Excel or just plain comma separated text. - -### Translating - -To translate Excalidraw into other languages, please visit [our Crowdin page](https://crowdin.com/project/excalidraw). To add a new language, [open an issue](https://github.com/excalidraw/excalidraw/issues/new) so we can get things set up on our end first. - -Translations will be available on the app if they exceed a certain threshold of completion (currently 85%). - -### Create a collaboration session manually - -In order to create a session manually, you just need to generate a link of this form: - -``` -https://excalidraw.com/#room=[0-9a-f]{20},[a-zA-Z0-9_-]{22} -``` - -#### Example - -``` -https://excalidraw.com/#room=91bd46ae3aa84dff9d20,pfLqgEoY1c2ioq8LmGwsFA -``` - -The first set of digits is the room. This is visible from the server that’s going to dispatch messages to everyone that knows this number. - -The second set of digits is the encryption key. The Excalidraw server doesn’t know about it. This is what all the participants use to encrypt/decrypt the messages. - -> Note: Please ensure that the encryption key is 22 characters long. - -## Shape libraries - -Find a growing list of libraries containing assets for your drawings at [libraries.excalidraw.com](https://libraries.excalidraw.com). - -## Embedding Excalidraw in your App? - -Try out [`@excalidraw/excalidraw`](https://www.npmjs.com/package/@excalidraw/excalidraw). This package allows you to easily embed Excalidraw as a React component into your apps. - -## Development - -### Code Sandbox - -- Go to https://codesandbox.io/p/github/excalidraw/excalidraw - - You may need to sign in with GitHub and reload the page -- You can start coding instantly, and even send PRs from there! - -### Local Installation - -These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. - -#### Requirements - -- [Node.js](https://nodejs.org/en/) -- [Yarn](https://yarnpkg.com/getting-started/install) (v1 or v2.4.2+) -- [Git](https://git-scm.com/downloads) - -#### Clone the repo +## Developers -```bash -git clone https://github.com/excalidraw/excalidraw.git -``` +You can integrate Excalidraw into your app by installing our [npm component](https://npmjs.com/package/@excalidraw/excalidraw). -#### Install the dependencies +Visit our documentation on [https://docs.excalidraw.com](https://docs.excalidraw.com). -```bash -yarn -``` - -#### Start the server - -```bash -yarn start -``` - -Now you can open [http://localhost:3000](http://localhost:3000) and start coding in your favorite code editor. - -#### Collaboration - -For collaboration, you will need to set up [collab server](https://github.com/excalidraw/excalidraw-room) in local. - -#### Commands - -##### Install the dependencies - -``` -yarn -``` - -##### Run the project - -``` -yarn start -``` - -##### Reformat all files with Prettier - -``` -yarn fix -``` - -##### Run tests - -``` -yarn test -``` - -##### Update test snapshots - -``` -yarn test:update -``` - -##### Test for formatting with Prettier - -``` -yarn test:code -``` - -#### Docker Compose - -You can use docker-compose to work on Excalidraw locally if you don't want to setup a Node.js env. - -```sh -docker-compose up --build -d -``` - -### Self-hosting - -We publish a Docker image with the Excalidraw client at [excalidraw/excalidraw](https://hub.docker.com/r/excalidraw/excalidraw). You can use it to self-host your own client under your own domain, on Kubernetes, AWS ECS, etc. - -```sh -docker build -t excalidraw/excalidraw . -docker run --rm -dit --name excalidraw -p 5000:80 excalidraw/excalidraw:latest -``` - -The Docker image is free of analytics and other tracking libraries. - -**At the moment, self-hosting your own instance doesn't support sharing or collaboration features.** - -We are working towards providing a full-fledged solution for self-hosting your own Excalidraw. - -## Contributing - -Pull requests are welcome. For major changes, please [open an issue](https://github.com/excalidraw/excalidraw/issues/new) first to discuss what you would like to change. - -## Notable used tools - -- [Create React App](https://github.com/facebook/create-react-app) -- [Rough.js](https://roughjs.com) -- [TypeScript](https://www.typescriptlang.org) -- [Vercel](https://vercel.com) +## Who's integrating Excalidraw -And the main source of inspiration for starting the project is the awesome [Zwibbler](https://zwibbler.com/demo/) app. +[Google Cloud](https://googlecloudcheatsheet.withgoogle.com/architecture) • [Meta](https://meta.com/) • [CodeSandbox](https://codesandbox.io/) • [Obsidian Excalidraw](https://github.com/zsviczian/obsidian-excalidraw-plugin) • [Replit](https://replit.com/) • [Slite](https://slite.com/) • [Notion](https://notion.so/) • [HackerRank](https://www.hackerrank.com/) diff --git a/dev-docs/docs/@excalidraw/excalidraw/api/api-intro.mdx b/dev-docs/docs/@excalidraw/excalidraw/api/api-intro.mdx new file mode 100644 index 00000000..aee7f3bf --- /dev/null +++ b/dev-docs/docs/@excalidraw/excalidraw/api/api-intro.mdx @@ -0,0 +1,11 @@ +--- +slug: /@excalidraw/excalidraw/api +--- + +# API + +Currently the **API** is divided into 3 broad categories 👇 + +- [Props](/docs/@excalidraw/excalidraw/api/props) - The `props` you can pass to the `Excalidraw` component. +- [Children components](/docs/@excalidraw/excalidraw/api/children-components) - Official components you can use to customize the UI. +- [Utils](/docs/@excalidraw/excalidraw/api/utils) - Utilities and helpers you can use to export, restore and more. diff --git a/dev-docs/docs/@excalidraw/excalidraw/api/children-components/children-components-intro.mdx b/dev-docs/docs/@excalidraw/excalidraw/api/children-components/children-components-intro.mdx new file mode 100644 index 00000000..706adb59 --- /dev/null +++ b/dev-docs/docs/@excalidraw/excalidraw/api/children-components/children-components-intro.mdx @@ -0,0 +1,21 @@ +--- +sidebar_label: Children Components +slug: /@excalidraw/excalidraw/api/children-components +--- + +# `` children + +We expose several components you can render as children of the `` component to customize the UI. + +:::info + +We have only recently started migrating to this type of component API. Some UI components are still using render props, and some UI customization isn't supported yet (such as the toolbar or the element properties panel). Stay tuned for more updates! + +::: + +Below are the currently supported components: + +- [MainMenu](/docs/@excalidraw/excalidraw/api/children-components/main-menu) +- [WelcomeScreen](/docs/@excalidraw/excalidraw/api/children-components/welcome-screen) +- [Footer](/docs/@excalidraw/excalidraw/api/children-components/footer) +- [LiveCollaborationTrigger](/docs/@excalidraw/excalidraw/api/children-components/live-collaboration-trigger) diff --git a/dev-docs/docs/@excalidraw/excalidraw/api/children-components/footer.mdx b/dev-docs/docs/@excalidraw/excalidraw/api/children-components/footer.mdx new file mode 100644 index 00000000..26268189 --- /dev/null +++ b/dev-docs/docs/@excalidraw/excalidraw/api/children-components/footer.mdx @@ -0,0 +1,69 @@ +# Footer + +Earlier we were using `renderFooter` prop to render custom footer which was removed in [#5970](https://github.com/excalidraw/excalidraw/pull/5970). Now you can pass a `Footer` component instead to render the custom UI for footer. + +You will need to import the `Footer` component from the package and wrap your component with the Footer component. The `Footer` should a valid React Node. + +**Usage** + +```jsx live +function App() { + return ( +
+ +
+ +
+
+
+ ); +} +``` + +This will only for `Desktop` devices. + +For `mobile` you will need to render it inside the [MainMenu](#mainmenu). You can use the [`useDevice`](#useDevice) hook to check the type of device, this will be available only inside the `children` of `Excalidraw` component. + +Open the `Menu` in the below playground and you will see the `custom footer` rendered. + +```jsx live noInline +const MobileFooter = ({}) => { + const device = useDevice(); + if (device.isMobile) { + return ( +
+ +
+ ); + } + return null; +}; + +const App = () => ( +
+ + + Item1 + Item 2 + + + +
+); + +// Need to render when code is span across multiple components +// in Live Code blocks editor +render(); +``` \ No newline at end of file diff --git a/dev-docs/docs/@excalidraw/excalidraw/api/children-components/live-collaboration-trigger.mdx b/dev-docs/docs/@excalidraw/excalidraw/api/children-components/live-collaboration-trigger.mdx new file mode 100644 index 00000000..ef74d0e6 --- /dev/null +++ b/dev-docs/docs/@excalidraw/excalidraw/api/children-components/live-collaboration-trigger.mdx @@ -0,0 +1,62 @@ +# LiveCollaborationTrigger + +If you implement live collaboration support and want to expose the same UI button as on [excalidraw.com](https://excalidraw.com), you can render the `` component using the [renderTopRightUI](/docs/@excalidraw/excalidraw/api/props#rendertoprightui) prop. + +You'll need to supply `onSelect()` to handle opening of your collaboration dialog, but the button will display `appState.collaborators` count provided you have supplied it. + +| Prop | Type | Required | Default | Description | +| --- | --- | --- | --- | --- | +| `onSelect` | `function` | Yes | | Handler called when the user clicks on the button | +| `isCollaborating` | `boolean` | Yes | false | Whether live collaboration session is in effect. Modifies button style. | + +```tsx live +function App() { + const [excalidrawAPI, setExcalidrawAPI] = useState(null); + const [isCollaborating, setIsCollaborating] = useState(false); + return ( +
+

+ Selecting the checkbox to see the collaborator count +

+ + setExcalidrawAPI(api)} + renderTopRightUI={() => ( + { + window.alert("You clicked on collab button"); + setIsCollaborating(true); + }} + /> + )} + > +
+ ); +} +``` diff --git a/dev-docs/docs/@excalidraw/excalidraw/api/children-components/main-menu.mdx b/dev-docs/docs/@excalidraw/excalidraw/api/children-components/main-menu.mdx new file mode 100644 index 00000000..8fbf228d --- /dev/null +++ b/dev-docs/docs/@excalidraw/excalidraw/api/children-components/main-menu.mdx @@ -0,0 +1,169 @@ +# MainMenu + +By default Excalidraw will render the `MainMenu` with default options. If you want to customise the `MainMenu`, you can pass the `MainMenu` component with the list options. + +**Usage** + +```jsx live +function App() { + return ( +
+ + + window.alert("Item1")}> + Item1 + + window.alert("Item2")}> + {" "} + Item 2{" "} + + + +
+ ); +} +``` + +### `` + +This is the `MainMenu` component. If you render it, you will need to populate the menu with your own items as we will not render any ourselves at that point. + +| Prop | Type | Required | Default | Description | +| --- | --- | :-: | :-: | --- | +| `onSelect` | `function` | No | - | Triggered when any item is selected (via mouse). Calling `event.preventDefault()` will stop menu from closing. | + +### MainMenu.Item + +To render an item, its recommended to use `MainMenu.Item`. + +| Prop | Type | Required | Default | Description | +| --- | --- | :-: | :-: | --- | +| `onSelect` | `function` | Yes | - | Triggered when selected (via mouse). Calling `event.preventDefault()` will stop menu from closing. | +| `children` | `React.ReactNode` | Yes | - | The content of the menu item | +| `icon` | `JSX.Element` | No | - | The icon used in the menu item | +| `shortcut` | `string` | No | - | The shortcut to be shown for the menu item | + +### MainMenu.ItemLink + +To render an item as a link, its recommended to use `MainMenu.ItemLink`. + +**Usage** + +```jsx live +function App() { + return ( +
+ + + + Google + + + Excalidraw + + + +
+ ); +} +``` + +| Prop | Type | Required | Default | Description | +| --- | --- | :-: | :-: | --- | +| `onSelect` | `function` | No | - | Triggered when selected (via mouse). Calling `event.preventDefault()` will stop menu from closing. | +| `href` | `string` | Yes | - | The `href` attribute to be added to the `anchor` element. | +| `children` | `React.ReactNode` | Yes | - | The content of the menu item | +| `icon` | `JSX.Element` | No | - | The icon used in the menu item | +| `shortcut` | `string` | No | - | The shortcut to be shown for the menu item | + +### MainMenu.ItemCustom + +To render a custom item, you can use `MainMenu.ItemCustom`. + +**Usage** + +```jsx live +function App() { + return ( +
+ + + + + + + +
+ ); +} +``` + +| Prop | Type | Required | Default | Description | +| --- | --- | :-: | :-: | --- | +| `children` | `React.ReactNode` | Yes | - | The content of the menu item | + +### MainMenu.DefaultItems + +For the items which are shown in the menu in [excalidraw.com](https://excalidraw.com), you can use `MainMenu.DefaultItems` + +```jsx live +function App() { + return ( +
+ + + + + window.alert("Item1")}> + Item1 + + window.alert("Item2")}> + Item 2 + + + +
+ ); +} +``` + +Here is a [complete list](https://github.com/excalidraw/excalidraw/blob/master/src/components/mainMenu/DefaultItems.tsx) of the default items. + +### MainMenu.Group + +To Group item in the main menu, you can use `MainMenu.Group` + +```jsx live +function App() { + return ( +
+ + + + + + + + window.alert("Item1")}> + Item1 + + window.alert("Item2")}> + Item 2 + + + + +
+ ); +} +``` + +| Prop | Type | Required | Default | Description | +| --- | --- | :-: | :-: | --- | +| `children ` | `React.ReactNode` | Yes | - | The content of the `Menu Group` | diff --git a/dev-docs/docs/@excalidraw/excalidraw/api/children-components/welcome-screen.mdx b/dev-docs/docs/@excalidraw/excalidraw/api/children-components/welcome-screen.mdx new file mode 100644 index 00000000..8150508b --- /dev/null +++ b/dev-docs/docs/@excalidraw/excalidraw/api/children-components/welcome-screen.mdx @@ -0,0 +1,140 @@ +# WelcomeScreen + +When the canvas is empty, Excalidraw can show a welcome _splash_ screen with a logo, a few quick action items, and hints explaining what some of the UI buttons do. Once the user picks a tool, or has created an element on the canvas, the welcome screen will disappear. + +You can enable this behavior by rendering a `WelcomeScreen` component like this: + +```jsx live +function App() { + return ( +
+ + + +
+ ); +} +``` + +You can also customize the welcome screen by passing children to the `WelcomeScreen` component. See below. + +## + +This is the main component. If you render it without any children, we will render the default welcome screen. + +You can customize which welcome screen subcomponents are rendered by passing them as children. + +The welcome screen consists of two main groups of subcomponents: + +1. [WelcomeScreen.Center](#welcomescreencenterlogo). +2. [WeelcomeScreen.Hints](#welcomescreenhints). + +Excalidraw logo: Sketch handrawn like diagrams. + +### Center + +`` subcomponent is the center piece of the welcome screen, containing the `logo`, `heading`, and `menu`. All three subcomponents are optional, and you can render whatever you wish into the center component. + +```jsx live +function App() { + return ( +
+ + + + + + Welcome Screen Heading! + + + + Excalidraw GitHub + + + + + + +
+ ); +} +``` + +#### Logo + +Use the `` to render a logo. By default it renders the Excalidraw logo and name. Supply `children` to customize. + +#### Heading + +Use the `` to render a heading below the logo. Supply `children` to change the default message. + +#### Menu + +`` is a wrapper component for the menu items. You can build your menu using the `` and `` components, render your own, or render one of the default menu items. + +The default menu items are: + +- `` - opens the help dialog. + +- `` - open the load file dialog. + +- `` - intended to open the live collaboration dialog. Works similarly to [``](/docs/@excalidraw/excalidraw/api/children-components/live-collaboration-trigger) and you must supply `onSelect()` handler to integrate with your collaboration implementation. + +#### MenuItem + +The `` component can be used to render a menu item. + +| Prop | Type | Required | Default | Description | +| --- | --- | --- | --- | --- | +| `onSelect` | `function` | Yes | | The handler is triggered when the item is selected. | +| `children` | `React.ReactNode` | Yes | | The content of the menu item | +| `icon` | `JSX.Element` | No | | The icon used in the menu item | +| `shortcut` | `string` | No | | The keyboard shortcut (label-only, does not affect behavior) | + +**WelcomeScreen.Center.MenuItemLink** + +To render an external link in a menu item, you can use this component. + +| Prop | Type | Required | Default | Description | +| --- | --- | --- | --- | --- | +| `href` | `string` | Yes | | The `href` attribute to be added to the `anchor` element. | +| `children` | `React.ReactNode` | Yes | | The content of the menu item | +| `icon` | `JSX.Element` | No | | The icon used in the menu item | +| `shortcut` | `string` | No | | The keyboard shortcut (label-only, does not affect behavior) | + +### Hints + +These `` subcomponents render the UI hints. Text of each hint can be customized by supplying `children`. + +```jsx live +function App() { + return ( +
+ + + +

ToolBar Hints

+
+ + +
+
+
+ ); +} +``` + +#### MenuHint + +`` hint subcomponent for the main menu. Supply `children` to customize the hint text. + +#### ToolbarHint + +`` hint subcomponent for the toolbar. Supply `children` to customize the hint text. + +#### Help + +`` hint subcomponent for the help dialog. Supply `children` to customize the hint text. diff --git a/dev-docs/docs/@excalidraw/excalidraw/api/constants.mdx b/dev-docs/docs/@excalidraw/excalidraw/api/constants.mdx new file mode 100644 index 00000000..a6c95ab2 --- /dev/null +++ b/dev-docs/docs/@excalidraw/excalidraw/api/constants.mdx @@ -0,0 +1,46 @@ +# Constants + +### FONT_FAMILY + +**How to use** + +```js +import { FONT_FAMILY } from "@excalidraw/excalidraw"; +``` + +`FONT_FAMILY` contains all the font families used in `Excalidraw` as explained below + +| Font Family | Description | +| ----------- | ---------------------- | +| `Virgil` | The `handwritten` font | +| `Helvetica` | The `Normal` Font | +| `Cascadia` | The `Code` Font | + +Defaults to `FONT_FAMILY.Virgil` unless passed in `initialData.appState.currentItemFontFamily`. + +### THEME + +**How to use** + +```js +import { THEME } from "@excalidraw/excalidraw"; +``` + +`THEME` contains all the themes supported by `Excalidraw` as explained below + +| Theme | Description | +| ------- | ----------------- | +| `LIGHT` | The `light` theme | +| `DARK` | The `Dark` theme | + +Defaults to `THEME.LIGHT` unless passed in `initialData.appState.theme` + +### MIME_TYPES + +[`MIME_TYPES`](https://github.com/excalidraw/excalidraw/blob/master/src/constants.ts#L101) contains all the mime types supported by `Excalidraw`. + +**How to use ** + +```js +import { MIME_TYPES } from "@excalidraw/excalidraw"; +``` diff --git a/dev-docs/docs/@excalidraw/excalidraw/api/props/initialdata.mdx b/dev-docs/docs/@excalidraw/excalidraw/api/props/initialdata.mdx new file mode 100644 index 00000000..7d79128f --- /dev/null +++ b/dev-docs/docs/@excalidraw/excalidraw/api/props/initialdata.mdx @@ -0,0 +1,55 @@ +# initialData + +
+{ elements?: ExcalidrawElement[], appState?: AppState }
+
+ +This helps to load Excalidraw with `initialData`. It must be an object or a [promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/Promise) which resolves to an object containing the below optional fields. + +| Name | Type | Description | +| --- | --- | --- | +| `elements` | [ExcalidrawElement[]](https://github.com/excalidraw/excalidraw/blob/master/src/element/types.ts#L114) | The `elements` with which `Excalidraw` should be mounted. | +| `appState` | [AppState](https://github.com/excalidraw/excalidraw/blob/master/src/types.ts#L95) | The `AppState` with which `Excalidraw` should be mounted. | +| `scrollToContent` | `boolean` | This attribute indicates whether to `scroll` to the nearest element to center once `Excalidraw` is mounted. By default, it will not scroll the nearest element to the center. Make sure you pass `initialData.appState.scrollX` and `initialData.appState.scrollY` when `scrollToContent` is false so that scroll positions are retained | +| `libraryItems` | [LibraryItems](https://github.com/excalidraw/excalidraw/blob/master/src/types.ts#L247) | Promise<[LibraryItems](https://github.com/excalidraw/excalidraw/blob/master/src/types.ts#L200)> | This library items with which `Excalidraw` should be mounted. | +| `files` | [BinaryFiles](https://github.com/excalidraw/excalidraw/blob/master/src/types.ts#L82) | The `files` added to the scene. | + +You might want to use this when you want to load excalidraw with some initial elements and app state. + +```jsx live +function App() { + return ( +
+ +
+ ); +} +``` diff --git a/dev-docs/docs/@excalidraw/excalidraw/api/props/props.mdx b/dev-docs/docs/@excalidraw/excalidraw/api/props/props.mdx new file mode 100644 index 00000000..a871874c --- /dev/null +++ b/dev-docs/docs/@excalidraw/excalidraw/api/props/props.mdx @@ -0,0 +1,230 @@ +# Props + +All `props` are *optional*. + +| Name | Type | Default | Description | +| --- | --- | --- | --- | +| [`initialData`](/docs/@excalidraw/excalidraw/api/props/initialdata) | `object` | `null` | Promise | `null` | The initial data with which app loads. | +| [`ref`](/docs/@excalidraw/excalidraw/api/props/ref) | `object` | _ | `Ref` to be passed to Excalidraw | +| [`isCollaborating`](#iscollaborating) | `boolean` | _ | This indicates if the app is in `collaboration` mode | +| [`onChange`](#onchange) | `function` | _ | This callback is triggered whenever the component updates due to any change. This callback will receive the excalidraw `elements` and the current `app state`. | +| [`onPointerUpdate`](#onpointerupdate) | `function` | _ | Callback triggered when mouse pointer is updated. | +| [`onPointerDown`](#onpointerdown) | `function` | _ | This prop if passed gets triggered on pointer down evenets | +| [`onScrollChange`](#onscrollchange) | `function` | _ | This prop if passed gets triggered when scrolling the canvas. | +| [`onPaste`](#onpaste) | `function` | _ | Callback to be triggered if passed when the something is pasted in to the scene | +| [`onLibraryChange`](#onlibrarychange) | `function` | _ | The callback if supplied is triggered when the library is updated and receives the library items. | +| [`onLinkOpen`](#onlinkopen) | `function` | _ | The callback if supplied is triggered when any link is opened. | +| [`langCode`](#langcode) | `string` | `en` | Language code string to be used in Excalidraw | +| [`renderTopRightUI`](/docs/@excalidraw/excalidraw/api/props/render-props#rendertoprightui) | `function` | _ | Render function that renders custom UI in top right corner | +| [`renderCustomStats`](/docs/@excalidraw/excalidraw/api/props/render-props#rendercustomstats) | `function` | _ | Render function that can be used to render custom stats on the stats dialog. | +| [`renderSidebar`](/docs/@excalidraw/excalidraw/api/props/render-props#rendersidebar) | `function` | _ | Render function that renders custom sidebar. | +| [`viewModeEnabled`](#viewmodeenabled) | `boolean` | _ | This indicates if the app is in `view` mode. | +| [`zenModeEnabled`](#zenmodeenabled) | `boolean` | _ | This indicates if the `zen` mode is enabled | +| [`gridModeEnabled`](#gridmodeenabled) | `boolean` | _ | This indicates if the `grid` mode is enabled | +| [`libraryReturnUrl`](#libraryreturnurl) | `string` | _ | What URL should [libraries.excalidraw.com](https://libraries.excalidraw.com) be installed to | +| [`theme`](#theme) | `"light"` | `"dark"` | `"light"` | The theme of the Excalidraw component | +| [`name`](#name) | `string` | | Name of the drawing | +| [`UIOptions`](/docs/@excalidraw/excalidraw/api/props/ui-options) | `object` | [DEFAULT UI OPTIONS](https://github.com/excalidraw/excalidraw/blob/master/src/constants.ts#L151) | To customise UI options. Currently we support customising [`canvas actions`](#canvasactions) | +| [`detectScroll`](#detectscroll) | `boolean` | `true` | Indicates whether to update the offsets when nearest ancestor is scrolled. | +| [`handleKeyboardGlobally`](#handlekeyboardglobally) | `boolean` | `false` | Indicates whether to bind the keyboard events to document. | +| [`autoFocus`](#autofocus) | `boolean` | `false` | indicates whether to focus the Excalidraw component on page load | +| [`generateIdForFile`](#generateidforfile) | `function` | _ | Allows you to override `id` generation for files added on canvas | + +### Storing custom data on Excalidraw elements + +Beyond attributes that Excalidraw elements already support, you can store `custom` data on each `element` in a `customData` object. The type of the attribute is [`Record`](https://github.com/excalidraw/excalidraw/blob/master/src/element/types.ts#L66) and is optional. + +You can use this to add any extra information you need to keep track of. + +You can add `customData` to elements when passing them as [`initialData`](/docs/@excalidraw/excalidraw/api/props/initialdata), or using [`updateScene`](/docs/@excalidraw/excalidraw/api/props/ref#updatescene) / [`updateLibrary`](/docs/@excalidraw/excalidraw/api/props/ref#updatelibrary) afterwards. + +```js showLineNumbers +{ + type: "rectangle", + id: "oDVXy8D6rom3H1-LLH2-f", + customData: {customId: '162'}, +} +``` + +### isCollaborating + +This prop indicates if the app is in `collaboration` mode. + +### onChange + +Every time component updates, this callback if passed will get triggered and has the below signature. + +```js +(excalidrawElements, appState, files) => void; +``` + +1. `excalidrawElements`: Array of [excalidrawElements](https://github.com/excalidraw/excalidraw/blob/master/src/element/types.ts#L114) in the scene. + +2. `appState`: [AppState](https://github.com/excalidraw/excalidraw/blob/master/src/types.ts#L95) of the scene. + +3. `files`: The [BinaryFiles](https://github.com/excalidraw/excalidraw/blob/master/src/types.ts#L64) which are added to the scene. + +Here you can try saving the data to your backend or local storage for example. + +### onPointerUpdate + +This callback is triggered when mouse pointer is updated. + +```js +({ x, y }, button, pointersMap}) => void; +``` + +1.`{x, y}`: Pointer coordinates + +2.`button`: The position of the button. This will be one of `["down", "up"]` + +3.`pointersMap`: [`pointers`](https://github.com/excalidraw/excalidraw/blob/master/src/types.ts#L131) map of the scene + +```js +(exportedElements, appState, canvas) => void +``` + +1. `exportedElements`: An array of [non deleted elements](https://github.com/excalidraw/excalidraw/blob/master/src/element/types.ts#L87) which needs to be exported. +2. `appState`: [AppState](https://github.com/excalidraw/excalidraw/blob/master/src/types.ts#L95) of the scene. +3. `canvas`: The `HTMLCanvasElement` of the scene. + +### onPointerDown + +This prop if passed will be triggered on pointer down events and has the below signature. + +
+(activeTool:  AppState["activeTool"], pointerDownState: PointerDownState) => void
+
+ +### onScrollChange + +This prop if passed will be triggered when canvas is scrolled and has the below signature. + +```ts +(scrollX: number, scrollY: number) => void +``` + +### onPaste + +This callback is triggered if passed when something is pasted into the scene. You can use this callback in case you want to do something additional when the paste event occurs. + +
+(data: ClipboardData, event: ClipboardEvent | null) => boolean
+
+ +This callback must return a `boolean` value or a [promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/Promise) which resolves to a boolean value. + +In case you want to prevent the excalidraw paste action you must return `false`, it will stop the native excalidraw clipboard management flow (nothing will be pasted into the scene). + +### onLibraryChange + +This callback if supplied will get triggered when the library is updated and has the below signature. + +
+  (items:{" "}
+  
+    LibraryItems
+  
+  ) => void | Promise<any>
+
+ +It is invoked with empty items when user clears the library. You can use this callback when you want to do something additional when library is updated for example persisting it to local storage. + +### onLinkOpen + +This prop if passed will be triggered when clicked on `link`. To handle the redirect yourself (such as when using your own router for internal links), you must call `event.preventDefault()`. + +
+(element: ExcalidrawElement, 
+ event: CustomEvent<{ nativeEvent: MouseEvent }>) => void
+
+ +Example: + +```js showLineNumbers +const history = useHistory(); + +// open internal links using the app's router, but opens external links in +// a new tab/window +const onLinkOpen: ExcalidrawProps["onLinkOpen"] = useCallback( + (element, event) => { + const link = element.link; + const { nativeEvent } = event.detail; + const isNewTab = nativeEvent.ctrlKey || nativeEvent.metaKey; + const isNewWindow = nativeEvent.shiftKey; + const isInternalLink = + link.startsWith("/") || link.includes(window.location.origin); + if (isInternalLink && !isNewTab && !isNewWindow) { + history.push(link.replace(window.location.origin, "")); + // signal that we're handling the redirect ourselves + event.preventDefault(); + } + }, + [history], +); +``` + +### langCode + +Determines the `language` of the UI. It should be one of the [available language codes](https://github.com/excalidraw/excalidraw/blob/master/src/i18n.ts#L14). Defaults to `en` (English). We also export default language and supported languages which you can import as shown below. + +```js +import { defaultLang, languages } from "@excalidraw/excalidraw"; +``` + +| name | type | +| --- | --- | +| `defaultLang` | `string` | +| `languages` | [`Language[]`](https://github.com/excalidraw/excalidraw/blob/master/src/i18n.ts#L15) | + +### viewModeEnabled + +This prop indicates whether the app is in `view mode`. When supplied, the value takes precedence over *intialData.appState.viewModeEnabled*, the `view mode` will be fully controlled by the host app, and users won't be able to toggle it from within the app. + +### zenModeEnabled + +This prop indicates whether the app is in `zen mode`. When supplied, the value takes precedence over *intialData.appState.zenModeEnabled*, the `zen mode` will be fully controlled by the host app, and users won't be able to toggle it from within the app. + +### gridModeEnabled + +This prop indicates whether the shows the grid. When supplied, the value takes precedence over *intialData.appState.gridModeEnabled*, the grid will be fully controlled by the host app, and users won't be able to toggle it from within the app. + +### libraryReturnUrl + +If supplied, this URL will be used when user tries to install a library from [libraries.excalidraw.com](https://libraries.excalidraw.com). +Defaults to *window.location.origin + window.location.pathname*. To install the libraries in the same tab from which it was opened, you need to set `window.name` (to any alphanumeric string) — if it's not set it will open in a new tab. + +### theme + +This prop controls Excalidraw's theme. When supplied, the value takes precedence over *intialData.appState.theme*, the theme will be fully controlled by the host app, and users won't be able to toggle it from within the app unless *UIOptions.canvasActions.toggleTheme* is set to `true`, in which case the `theme` prop will control Excalidraw's default theme with ability to allow theme switching (you must take care of updating the `theme` prop when you detect a change to `appState.theme` from the [onChange](#onchange) callback). + +You can use [`THEME`](/docs/@excalidraw/excalidraw/api/utils#theme) to specify the theme. + +### name + +This prop sets the `name` of the drawing which will be used when exporting the drawing. When supplied, the value takes precedence over *intialData.appState.name*, the `name` will be fully controlled by host app and the users won't be able to edit from within Excalidraw. + + +### detectScroll + +Indicates whether Excalidraw should listen for `scroll` event on the nearest scrollable container in the DOM tree and recompute the coordinates (e.g. to correctly handle the cursor) when the component's position changes. You can disable this when you either know this doesn't affect your app or you want to take care of it yourself (calling the [`refresh()`](#ref) method). + +### handleKeyboardGlobally + +Indicates whether to bind keyboard events to `document`. Disabled by default, meaning the keyboard events are bound to the Excalidraw component. This allows for multiple Excalidraw components to live on the same page, and ensures that Excalidraw keyboard handling doesn't collide with your app's (or the browser) when the component isn't focused. + +Enable this if you want Excalidraw to handle keyboard even if the component isn't focused (e.g. a user is interacting with the navbar, sidebar, or similar). + + +### autoFocus + +This prop indicates whether to `focus` the Excalidraw component on page load. Defaults to false. + +### generateIdForFile + +Allows you to override `id` generation for files added on canvas (images). By default, an SHA-1 digest of the file is used. + +```tsx +(file: File) => string | Promise +``` + diff --git a/dev-docs/docs/@excalidraw/excalidraw/api/props/ref.mdx b/dev-docs/docs/@excalidraw/excalidraw/api/props/ref.mdx new file mode 100644 index 00000000..a37843c7 --- /dev/null +++ b/dev-docs/docs/@excalidraw/excalidraw/api/props/ref.mdx @@ -0,0 +1,391 @@ +# ref +
+createRef | useRef | callbackRef | 
{ current: { readyPromise: resolvablePromise } } +
+ +You can pass a `ref` when you want to access some excalidraw APIs. We expose the below APIs: + +| API | Signature | Usage | +| --- | --- | --- | +| ready | `boolean` | This is set to true once Excalidraw is rendered | +| [readyPromise](#readypromise) | `function` | This promise will be resolved with the api once excalidraw has rendered. This will be helpful when you want do some action on the host app once this promise resolves. For this to work you will have to pass ref as shown [here](#readypromise) | +| [updateScene](#updatescene) | `function` | updates the scene with the sceneData | +| [updateLibrary](#updatelibrary) | `function` | updates the scene with the sceneData | +| [addFiles](#addfiles) | `function` | add files data to the appState | +| [resetScene](#resetscene) | `function` | Resets the scene. If `resetLoadingState` is passed as true then it will also force set the loading state to false. | +| [getSceneElementsIncludingDeleted](#getsceneelementsincludingdeleted) | `function` | Returns all the elements including the deleted in the scene | +| [getSceneElements](#getsceneelements) | `function` | Returns all the elements excluding the deleted in the scene | +| [getAppState](#getappstate) | `function` | Returns current appState | +| [history](#history) | `object` | This is the history API. `history.clear()` will clear the history | +| [scrollToContent](#scrolltocontent) | `function` | Scroll the nearest element out of the elements supplied to the center. Defaults to the elements on the scene. | +| [refresh](#refresh) | `function` | Updates the offsets for the Excalidraw component so that the coordinates are computed correctly (for example the cursor position). | +| [setToast](#settoast) | `function` | This API can be used to show the toast with custom message. | +| [id](#id) | `string` | Unique ID for the excalidraw component. | +| [getFiles](#getfiles) | `function` | This API can be used to get the files present in the scene. | +| [setActiveTool](#setactivetool) | `function` | This API can be used to set the active tool | +| [setCursor](#setcursor) | `function` | This API can be used to set customise the mouse cursor on the canvas | +| [resetCursor](#resetcursor) | `function` | This API can be used to reset to default mouse cursor on the canvas | +| [toggleMenu](#togglemenu) | `function` | Toggles specific menus on/off | + +## readyPromise + +
+  const excalidrawRef = { current:{ readyPromise:
+  
+     resolvablePromise
+  
+   } }
+
+ +Since plain object is passed as a `ref`, the `readyPromise` is resolved as soon as the component is mounted. Most of the time you will not need this unless you have a specific use case where you can't pass the `ref` in the react way and want to do some action on the host when this promise resolves. + +```jsx showLineNumbers +const resolvablePromise = () => { + let resolve; + let reject; + const promise = new Promise((_resolve, _reject) => { + resolve = _resolve; + reject = _reject; + }); + promise.resolve = resolve; + promise.reject = reject; + return promise; +}; + +const App = () => { + const excalidrawRef = useMemo( + () => ({ + current: { + readyPromise: resolvablePromise(), + }, + }), + [], + ); + + useEffect(() => { + excalidrawRef.current.readyPromise.then((api) => { + console.log("loaded", api); + }); + }, [excalidrawRef]); + return ( +
+ +
+ ); +}; +``` + +## updateScene + +
+  (scene:{" "}
+  
+    sceneData
+  
+  ) => void
+
+ +You can use this function to update the scene with the sceneData. It accepts the below attributes. + +| Name | Type | Description | +| --- | --- | --- | +| `elements` | [`ImportedDataState["elements"]`](https://github.com/excalidraw/excalidraw/blob/master/src/data/types.ts#L38) | The `elements` to be updated in the scene | +| `appState` | [`ImportedDataState["appState"]`](https://github.com/excalidraw/excalidraw/blob/master/src/data/types.ts#L39) | The `appState` to be updated in the scene. | +| `collaborators` | MapCollaborator> | The list of collaborators to be updated in the scene. | +| `commitToHistory` | `boolean` | Implies if the `history (undo/redo)` should be recorded. Defaults to `false`. | + +```jsx live +function App() { + const updateScene = () => { + const sceneData = { + elements: [ + { + type: "rectangle", + version: 141, + versionNonce: 361174001, + isDeleted: false, + id: "oDVXy8D6rom3H1-LLH2-f", + fillStyle: "hachure", + strokeWidth: 1, + strokeStyle: "solid", + roughness: 1, + opacity: 100, + angle: 0, + x: 100.50390625, + y: 93.67578125, + strokeColor: "#c92a2a", + backgroundColor: "transparent", + width: 186.47265625, + height: 141.9765625, + seed: 1968410350, + groupIds: [], + boundElements: null, + locked: false, + link: null, + updated: 1, + roundness: { + type: 3, + value: 32, + }, + }, + ], + appState: { + viewBackgroundColor: "#edf2ff", + }, + }; + excalidrawAPI.updateScene(sceneData); + }; + const [excalidrawAPI, setExcalidrawAPI] = useState(null); + return ( +
+

Click to update the scene

+ + setExcalidrawAPI(api)} /> +
+ ); +} +``` + +### updateLibrary + +
+  (opts: { 
libraryItems:{" "} + + LibraryItemsSource + + ;
merge?: boolean;
prompt?: boolean; +
openLibraryMenu?: boolean; +
defaultStatus?: "unpublished" | "published";
}) => Promise< + + LibraryItems + + > +
+ +You can use this function to update the library. It accepts the below attributes. + +| Name | Type | Default | Description | +| --- | --- | --- | --- | +| `libraryItems` | [LibraryItemsSource](https://github.com/excalidraw/excalidraw/blob/master/src/types.ts#L249) | \_ | The `libraryItems` to be replaced/merged with current library | +| `merge` | boolean | `false` | Whether to merge with existing library items. | +| `prompt` | boolean | `false` | Whether to prompt user for confirmation. | +| `openLibraryMenu` | boolean | `false` | Keep the library menu open after library is updated. | +| `defaultStatus` | "unpublished" | "published" | `"unpublished"` | Default library item's `status` if not present. | + +```tsx live +function App() { + const [excalidrawAPI, setExcalidrawAPI] = useState(null); + + useEffect(() => { + if (!excalidrawAPI) { + return; + } + // to open the library sidebar + excalidrawAPI.updateScene({ appState: { openSidebar: "library" } }); + }, [excalidrawAPI]); + + return ( +
+

Click to update the library items

+ + setExcalidrawAPI(api)} + // initial data retrieved from https://github.com/excalidraw/excalidraw/blob/master/dev-docs/src/initialData.js + initialData={{ + libraryItems: initialData.libraryItems, + appState: { openSidebar: "library" }, + }} + /> +
+ ); +} +``` + +### addFiles + +
+  (files:{" "}
+  
+    BinaryFileData
+  
+  ) => void
+
+ +Adds supplied files data to the `appState.files` cache on top of existing files present in the cache. + +## resetScene + +```tsx +(opts?: { resetLoadingState: boolean }) => void +``` + +Resets the scene. If `resetLoadingState` is passed as true then it will also force set the loading state to false. + +## getSceneElementsIncludingDeleted + +
+  () =>{" "}
+  
+    ExcalidrawElement[]
+  
+
+ +Returns all the elements including the deleted in the scene. + +## getSceneElements + +
+  () => NonDeleted<
+  
+    ExcalidrawElement
+  
+  []>
+
+ +Returns all the elements excluding the deleted in the scene + +## getAppState + +
+  () =>{" "}
+  
+    AppState
+  
+
+ +Returns current appState. + +## history + +```tsx +{ + clear: () => void +} +``` + +This is the history API. history.clear() will clear the history. + +## scrollToContent + +
+  (target?:{" "}
+  
+    ExcalidrawElement
+  {" "}
+  |{" "}
+  
+    ExcalidrawElement
+  
+  []) => void
+
+ +Scroll the nearest element out of the elements supplied to the center. Defaults to the elements on the scene. + +## refresh + +```tsx +() => void +``` + +Updates the `offsets` for the `Excalidraw` component so that the coordinates are computed correctly (for example the cursor position). + +You don't have to call this when the position is changed on page scroll or when the excalidraw container resizes (we handle that ourselves). + +For any other cases if the position of excalidraw is updated (example due to scroll on parent container and not page scroll) you should call this API. + +## setToast + +This API can be used to show the toast with custom message. + +```tsx +({ message: string, closable?:boolean,duration?:number + } | null) => void +``` + +| Attribute | type | Description | +| --- | --- | --- | +| message | string | The message to be shown on the toast. | +| closable | boolean | Indicates whether to show the closable button on toast to dismiss the toast. | +| duration | number | Determines the duration after which the toast should auto dismiss. To prevent autodimiss you can pass `Infinity`. | + +To dismiss an existing toast you can simple pass `null` + +```js +setToast(null); +``` + +## id + +The unique id of the excalidraw component. This can be used to identify the excalidraw component, for example importing the library items to the excalidraw component from where it was initiated when you have multiple excalidraw components rendered on the same page as shown in [multiple excalidraw demo](https://codesandbox.io/s/multiple-excalidraw-k1xx5). + +## getFiles + +
+  () =>{" "}
+  
+    files
+  
+
+ +This API can be used to get the files present in the scene. It may contain files that aren't referenced by any element, so if you're persisting the files to a storage, you should compare them against stored elements. + +## setActiveTool + +This API has the below signature. It sets the `tool` passed in param as the active tool. + + +
+(tool: 
{ type: SHAPES[number]["value"]| "eraser" } |
{ type: "custom"; customType: string }) => void +
+ +## setCursor + +This API can be used to customise the mouse cursor on the canvas and has the below signature. +It sets the mouse cursor to the cursor passed in param. + +```tsx +(cursor: string) => void +``` + +## toggleMenu + +```tsx +(type: "library" | "customSidebar", force?: boolean) => boolean; +``` + +This API can be used to toggle a specific menu (currently only the sidebars), and returns whether the menu was toggled on or off. If the `force` flag passed, it will force the menu to be toggled either on/off based on the `boolean` passed. + +This API is especially useful when you render a custom sidebar using [`renderSidebar`](#rendersidebar) prop, and you want to toggle it from your app based on a user action. + +## resetCursor + +```tsx +() => void +``` + +This API can be used to reset to default mouse cursor. diff --git a/dev-docs/docs/@excalidraw/excalidraw/api/props/render-props.mdx b/dev-docs/docs/@excalidraw/excalidraw/api/props/render-props.mdx new file mode 100644 index 00000000..ca329e3e --- /dev/null +++ b/dev-docs/docs/@excalidraw/excalidraw/api/props/render-props.mdx @@ -0,0 +1,126 @@ +# Render Props + +## renderTopRightUI + +
+  (isMobile: boolean, appState:{" "}
+  
+    AppState
+  
+  ) => JSX | null
+
+ +A function returning `JSX` to render `custom` UI in the top right corner of the app. + +```jsx live +function App() { + return ( +
+ { + return ( + + ); + }} + /> +
+ ); +} +``` + +## renderCustomStats + +A function that can be used to render custom stats (returns JSX) in the `nerd stats` dialog. + +![Nerd Stats](../../../../assets/nerd-stats.png) + +For example you can use this prop to render the size of the elements in the storage as do in [excalidraw.com](https://excalidraw.com). + +```jsx live +function App() { + return ( +
+ ( +

+ {" "} + Dummy stats will be shown here{" "} +

+ )} + /> +
+ ); +} +``` + +## renderSidebar + +```tsx +() => JSX | null; +``` + +You can render `custom sidebar` using this prop. This sidebar is the same that the library menu sidebar is using, and can be used for any purposes your app needs. + +You need to import the `Sidebar` component from `excalidraw` package and pass your content as its `children`. The function `renderSidebar` should return the `Sidebar` instance. + +### Sidebar +The `` component takes these props (all are optional except `children`): + +| Prop | Type | Description | +| --- | --- | --- | +| `children` | `React.ReactNode` | Content you want to render inside the `sidebar`. | +| `onClose` | `function` | Invoked when the component is closed (by user, or the editor). No need to act on this event, as the editor manages the sidebar open state on its own. | +| `onDock` | `function` | Invoked when the user toggles the `dock` button. The callback recieves a `boolean` parameter `isDocked` which indicates whether the sidebar is `docked` | +| `docked` | `boolean` | Indicates whether the sidebar is`docked`. By default, the sidebar is `undocked`. If passed, the docking becomes controlled, and you are responsible for updating the `docked` state by listening on `onDock` callback. To decide the breakpoint for docking you can use [UIOptions.dockedSidebarBreakpoint](/docs/@excalidraw/excalidraw/api/props/ui-options#dockedsidebarbreakpoint) for more info on docking. | +| `dockable` | `boolean` | Indicates whether to show the `dock` button so that user can `dock` the sidebar. If `false`, you can still dock programmatically by passing `docked` as `true`. | + +The sidebar will always include a header with `close / dock` buttons (when applicable). +You can also add custom content to the header, by rendering `` as a child of the `` component. Note that the custom header will still include the default buttons. + + +### Sidebar.Header + +| name | type | description | +| --- | --- | --- | +| children | `React.ReactNode` | Content you want to render inside the sidebar header as a sibling of `close` / `dock` buttons. | + +To control the visibility of the sidebar you can use [`toggleMenu("customSidebar")`](/docs/@excalidraw/excalidraw/api/props/ref#togglemenu) api available via `ref`. + +```tsx live +function App() { + const [excalidrawAPI, setExcalidrawAPI] = useState(null); + + return ( +
+ + setExcalidrawAPI(api)} + renderSidebar={() => { + return ( + + Custom Sidebar Header +

custom Sidebar Content

+
+ ); + }} + /> +
+ ); +} +``` diff --git a/dev-docs/docs/@excalidraw/excalidraw/api/props/ui-options.mdx b/dev-docs/docs/@excalidraw/excalidraw/api/props/ui-options.mdx new file mode 100644 index 00000000..d7551e36 --- /dev/null +++ b/dev-docs/docs/@excalidraw/excalidraw/api/props/ui-options.mdx @@ -0,0 +1,72 @@ +# UIOptions + +This prop can be used to customise UI of Excalidraw. Currently we support customising [`canvasActions`](#canvasactions), [`dockedSidebarBreakpoint`](#dockedsidebarbreakpoint) and [`welcomeScreen`](#welcmescreen). + +
+  {
+  
canvasActions?: + CanvasActions + ,
dockedSidebarBreakpoint?: number,
welcomeScreen?: boolean
+ + } +
+ +## canvasActions + +This `prop` controls the visibility of the canvas actions inside the `menu`. + +| Prop | Type | Default | Description | +| --- | --- | --- | --- | +| `changeViewBackgroundColor` | `boolean` | `true` | Indicates whether to show `Background color picker`. | +| `clearCanvas` | `boolean` | `true` | Indicates whether to show `Clear canvas` button. | +| `export` | `false` | [`exportOpts`](#exportopts) | `object` | This prop allows to customize the UI inside the export dialog. By default it shows the `save file to disk`. For more details visit [`exportOpts`](#exportopts). | +| `loadScene` | `boolean` | `true` | Indicates whether to show `Load` button. | +| `saveToActiveFile` | `boolean` | `true` | Indicates whether to show `Save` button to save to current file. | +| `toggleTheme` | `boolean` | `null` | `null` | Indicates whether to show `Theme toggle`. When defined as `boolean`, takes precedence over [`props.theme`](/docs/@excalidraw/excalidraw/api/props#theme) to show `Theme toggle`. | +| `saveAsImage` | `boolean` | `true` | Indicates whether to show `Save as image` button. | + +```tsx live +function App() { + const UIOptions = { + canvasActions: { + changeViewBackgroundColor: false, + clearCanvas: false, + loadScene: false, + }, + }; + return ( +
+ +
+ ); +} +``` + +### exportOpts + +The below attributes can be set in `UIOptions.canvasActions.export` to customize the export dialog. +If `UIOptions.canvasActions.export` is `false` the export button will not be rendered. + +| Prop | Type | Default | Description | +| --- | --- | --- | --- | +| `saveFileToDisk` | `boolean` | `true` | Indicates whether `save file to disk` button should be shown | +| `onExportToBackend` | `object` | \_ | This callback is triggered when the shareable-link button is clicked in the export dialog. The link button will only be shown if this callback is passed. | +| `renderCustomUI` | `object` | \_ | This callback should be supplied if you want to render custom UI in the export dialog. | + +## dockedSidebarBreakpoint + +This prop indicates at what point should we break to a docked, permanent sidebar. If not passed it defaults to [`MQ_RIGHT_SIDEBAR_MAX_WIDTH_PORTRAIT`](https://github.com/excalidraw/excalidraw/blob/master/src/constants.ts#L161). +If the _width_ of the _excalidraw_ container exceeds _dockedSidebarBreakpoint_, the sidebar will be `dockable` and the button to `dock` the sidebar will be shown +If user choses to `dock` the sidebar, it will push the right part of the UI towards the left, making space for the sidebar as shown below. + +![image](https://user-images.githubusercontent.com/11256141/174664866-c698c3fa-197b-43ff-956c-d79852c7b326.png) + +```tsx live +function App() { + return ( +
+ +
+ ); +} +``` diff --git a/dev-docs/docs/@excalidraw/excalidraw/api/utils/export.mdx b/dev-docs/docs/@excalidraw/excalidraw/api/utils/export.mdx new file mode 100644 index 00000000..f5469f01 --- /dev/null +++ b/dev-docs/docs/@excalidraw/excalidraw/api/utils/export.mdx @@ -0,0 +1,196 @@ +--- +title: Export Utilities +id: "export" +--- + +:::info + +We're working on much improved export utilities. Stay tuned! + +::: + +### exportToCanvas + +**_Signature_** + +
+exportToCanvas({
  + elements,
  + appState
  + getDimensions,
  + files,
  + exportPadding?: number;
+}: ExportOpts +
+ +| Name | Type | Default | Description | +| --- | --- | --- | --- | +| `elements` | [Excalidraw Element []](https://github.com/excalidraw/excalidraw/blob/master/src/element/types.ts#L114) | | The elements to be exported to canvas. | +| `appState` | [AppState](https://github.com/excalidraw/excalidraw/blob/master/src/packages/utils.ts#L23) | [Default App State](https://github.com/excalidraw/excalidraw/blob/master/src/appState.ts#L17) | The app state of the scene. | +| [`getDimensions`](#getdimensions) | `function` | _ | A function which returns the `width`, `height`, and optionally `scale` (defaults to `1`), with which canvas is to be exported. | +| `maxWidthOrHeight` | `number` | _ | The maximum `width` or `height` of the exported image. If provided, `getDimensions` is ignored. | +| `files` | [BinaryFiles](https://github.com/excalidraw/excalidraw/blob/master/src/types.ts#L59) | _ | The files added to the scene. | +| `exportPadding` | `number` | `10` | The `padding` to be added on canvas. | + + +#### getDimensions + +```tsx +(width: number, height: number) => { + width: number, + height: number, + scale?: number +} +``` +A function which returns the `width`, `height`, and optionally `scale` (defaults to `1`), with which canvas is to be exported. + +**How to use** + +```js +import { exportToCanvas } from "@excalidraw/excalidraw"; +``` + +This function returns the canvas with the exported elements, appState and dimensions. + +```jsx live +function App() { + const [canvasUrl, setCanvasUrl] = useState(""); + const [excalidrawAPI, setExcalidrawAPI] = useState(null); + + return ( + <> + +
+ +
+
+ setExcalidrawAPI(api)} +/> +
+ + ) +} +``` + + +### exportToBlob + +**_Signature_** + +
+exportToBlob(
  + opts: ExportOpts & {
  + mimeType?: string,
  + quality?: number,
  + exportPadding?: number;
+}) +
+ +| Name | Type | Default | Description | +| --- | --- | --- | --- | +| `opts` | `object` | _ | This param is passed to `exportToCanvas`. You can refer to [`exportToCanvas`](#exporttocanvas) | +| `mimeType` | `string` | `image/png` | Indicates the image format. | +| `quality` | `number` | `0.92` | A value between `0` and `1` indicating the [image quality](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob#parameters). Applies only to `image/jpeg`/`image/webp` MIME types. | +| `exportPadding` | `number` | `10` | The padding to be added on canvas. | + +**How to use** + +```js +import { exportToBlob } from "@excalidraw/excalidraw"; +``` + +Returns a promise which resolves with a [blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob). It internally uses [canvas.ToBlob](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob). + +### exportToSvg + +**_Signature_** + +
+exportToSvg({
  + elements:  + + ExcalidrawElement[] + ,
  + appState: + AppState + ,
  + exportPadding: number,
  + metadata: string,
  + files:  + + BinaryFiles + ,
+}); +
+ +| Name | Type | Default | Description | +| --- | --- | --- | --- | +| elements | [Excalidraw Element []](https://github.com/excalidraw/excalidraw/blob/master/src/element/types.ts#L114) | | The elements to exported as `svg `| +| appState | [AppState](https://github.com/excalidraw/excalidraw/blob/master/src/types.ts#L95) | [defaultAppState](https://github.com/excalidraw/excalidraw/blob/master/src/appState.ts#L11) | The `appState` of the scene | +| exportPadding | number | 10 | The `padding` to be added on canvas | +| files | [BinaryFiles](https://github.com/excalidraw/excalidraw/blob/master/src/types.ts#L64) | undefined | The `files` added to the scene. | + +This function returns a promise which resolves to `svg` of the exported drawing. + +### exportToClipboard + +**_Signature_** + +
+exportToClipboard(
  + opts: ExportOpts & {
  + mimeType?: string,
  + quality?: number;
  + type: 'png' | 'svg' |'json'
+}) +
+ +| Name | Type | Default | Description | +| --- | --- | --- | --- | +| `opts` | | | This param is same as the params passed to `exportToCanvas`. You can refer to [`exportToCanvas`](#exporttocanvas). | +| `mimeType` | `string` | `image/png` | Indicates the image format, this will be used when exporting as `png`. | +| `quality` | `number` | `0.92` | A value between `0` and `1` indicating the [image quality](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob#parameters). Applies only to `image/jpeg` / `image/webp` MIME types. This will be used when exporting as `png`. | +| `type` | 'png' | 'svg' | 'json' | _ | This determines the format to which the scene data should be `exported`. | + +**How to use** + +```js +import { exportToClipboard } from "@excalidraw/excalidraw"; +``` + +Copies the scene data in the specified format (determined by `type`) to clipboard. + +### Additional attributes of appState for export\* APIs + +| Name | Type | Default | Description | +| --- | --- | --- | --- | +| `exportBackground` | `boolean` | `true` | Indicates whether `background` should be exported | +| `viewBackgroundColor` | `string` | `#fff` | The default background color | +| `exportWithDarkMode` | `boolean` | `false` | Indicates whether to export with `dark` mode | +| `exportEmbedScene` | `boolean` | `false` | Indicates whether scene data should be embedded in `svg/png`. This will increase the image size. | diff --git a/dev-docs/docs/@excalidraw/excalidraw/api/utils/restore.mdx b/dev-docs/docs/@excalidraw/excalidraw/api/utils/restore.mdx new file mode 100644 index 00000000..809c15a1 --- /dev/null +++ b/dev-docs/docs/@excalidraw/excalidraw/api/utils/restore.mdx @@ -0,0 +1,90 @@ +--- +title: Restore Utilities +id: "restore" +--- + +### restoreAppState + +**_Signature_** + +
+restoreAppState(appState: ImportedDataState["appState"],
  localAppState: Partial<AppState> | null): AppState +
+ +**_How to use_** + +```js +import { restoreAppState } from "@excalidraw/excalidraw"; +``` + +This function will make sure all the `keys` have appropriate `values` in [appState](https://github.com/excalidraw/excalidraw/blob/master/src/types.ts#L95) and if any key is missing, it will be set to its `default` value. + +When `localAppState` is supplied, it's used in place of values that are missing (`undefined`) in `appState` instead of the defaults. +Use this as a way to not override user's defaults if you persist them. +You can pass `null` / `undefined` if not applicable. + +### restoreElements + +**_Signature_** + +
+restoreElements(
+  elements: ImportedDataState["elements"],
  + localElements: ExcalidrawElement[] | null | undefined): ExcalidrawElement[],
  + refreshDimensions?: boolean
+) +
+ +**_How to use_** + +```js +import { restoreElements } from "@excalidraw/excalidraw"; +``` + +This function will make sure all properties of element is correctly set and if any attribute is missing, it will be set to its default value. + +When `localElements` are supplied, they are used to ensure that existing restored elements reuse `version` (and increment it), and regenerate `versionNonce`. +Use this when you import elements which may already be present in the scene to ensure that you do not disregard the newly imported elements if you're using element version to detect the updates. + +Parameter `refreshDimensions` indicates whether we should also `recalculate` text element dimensions. Defaults to `false`. Since this is a potentially costly operation, you may want to disable it if you restore elements in tight loops, such as during collaboration. + +### restore + +**_Signature_** + +
+restoreElements(
+  data: ImportedDataState,
  + localAppState: Partial<AppState> | null | undefined,
  + localElements: ExcalidrawElement[] | null | undefined
): DataState +) +
+ +See [`restoreAppState()`](https://github.com/excalidraw/excalidraw/blob/master/src/packages/excalidraw/README.md#restoreAppState) about `localAppState`, and [`restoreElements()`](https://github.com/excalidraw/excalidraw/blob/master/src/packages/excalidraw/README.md#restoreElements) about `localElements`. + +**_How to use_** + +```js +import { restore } from "@excalidraw/excalidraw"; +``` + +This function makes sure elements and state is set to appropriate values and set to default value if not present. It is a combination of [restoreElements](#restoreelements) and [restoreAppState](#restoreappstate). + +### restoreLibraryItems + +**_Signature_** + +
+restoreLibraryItems(libraryItems: ImportedDataState["libraryItems"],
  +defaultStatus: "published" | "unpublished") +
+ +**_How to use_** + +```js +import { restoreLibraryItems } from "@excalidraw/excalidraw"; + +restoreLibraryItems(libraryItems, "unpublished"); +``` + +This function normalizes library items elements, adding missing values when needed. diff --git a/dev-docs/docs/@excalidraw/excalidraw/api/utils/utils-intro.md b/dev-docs/docs/@excalidraw/excalidraw/api/utils/utils-intro.md new file mode 100644 index 00000000..c2159238 --- /dev/null +++ b/dev-docs/docs/@excalidraw/excalidraw/api/utils/utils-intro.md @@ -0,0 +1,341 @@ +--- +slug: /@excalidraw/excalidraw/api/utils +--- + +# Utils + +These are pure Javascript functions exported from the @excalidraw/excalidraw [`@excalidraw/excalidraw`](https://npmjs.com/@excalidraw/excalidraw). If you want to export your drawings in different formats eg `png`, `svg` and more you can check out [Export Utilities](/docs/@excalidraw/excalidraw/API/utils/export). If you want to restore your drawings you can check out [Restore Utilities](/docs/@excalidraw/excalidraw/API/utils/restore). + +### serializeAsJSON + +Takes the scene elements and state and returns a JSON string. `Deleted` elements as well as most properties from `AppState` are removed from the resulting JSON. (see [`serializeAsJSON()`](https://github.com/excalidraw/excalidraw/blob/master/src/data/json.ts#L42) source for details). + +If you want to overwrite the `source` field in the `JSON` string, you can set `window.EXCALIDRAW_EXPORT_SOURCE` to the desired value. + +**_Signature_** + +
+serializeAsJSON({
  + elements: ExcalidrawElement[],
  + appState: AppState,
+}): string +
+ +**How to use** + +```js +import { serializeAsJSON } from "@excalidraw/excalidraw"; +``` + +### serializeLibraryAsJSON + +Takes the `library` items and returns a `JSON` string. + +If you want to overwrite the source field in the JSON string, you can set `window.EXCALIDRAW_EXPORT_SOURCE` to the desired value. + +**_Signature_** + +
+serializeLibraryAsJSON(
+  libraryItems: LibraryItems[])
+
+ +**How to use** + +```js +import { serializeLibraryAsJSON } from "@excalidraw/excalidraw"; +``` + +#### isInvisiblySmallElement + +Returns `true` if element is invisibly small (e.g. width & height are zero). + +**_Signature_** + +
+isInvisiblySmallElement(element:  ExcalidrawElement): boolean
+
+ +**How to use** + +```js +import { isInvisiblySmallElement } from "@excalidraw/excalidraw"; +``` + +### loadFromBlob + +This function loads the scene data from the blob (or file). If you pass `localAppState`, `localAppState` value will be preferred over the `appState` derived from `blob`. Throws if blob doesn't contain valid scene data. + +**How to use** + +```js +import { loadFromBlob } from "@excalidraw/excalidraw"; + +const scene = await loadFromBlob(file, null, null); +excalidrawAPI.updateScene(scene); +``` + +**Signature** + +
+loadFromBlob(
  + blob: Blob,
  + localAppState: AppState | null,
  + localElements: ExcalidrawElement[] | null,
  + fileHandle?: FileSystemHandle | null
+) => Promise<RestoredDataState> +
+ +### loadLibraryFromBlob + +This function loads the library from the blob. Additonally takes `defaultStatus` param which sets the default status for library item if not present, defaults to `unpublished`. + +**How to use ** + +```js +import { loadLibraryFromBlob } from "@excalidraw/excalidraw"; +``` + +**_Signature_** + +
+loadLibraryFromBlob(blob: Blob, defaultStatus: "published" | "unpublished")
+
+ +### loadSceneOrLibraryFromBlob + +This function loads either scene or library data from the supplied blob. If the blob contains scene data, and you pass `localAppState`, `localAppState` value will be preferred over the `appState` derived from `blob`. + +:::caution + +Throws if blob doesn't contain valid `scene` data or `library` data. + +::: + +**How to use** + +```js showLineNumbers +import { loadSceneOrLibraryFromBlob, MIME_TYPES } from "@excalidraw/excalidraw"; + +const contents = await loadSceneOrLibraryFromBlob(file, null, null); +if (contents.type === MIME_TYPES.excalidraw) { + excalidrawAPI.updateScene(contents.data); +} else if (contents.type === MIME_TYPES.excalidrawlib) { + excalidrawAPI.updateLibrary(contents.data); +} +``` + +**_Signature_** + +
+loadSceneOrLibraryFromBlob(
  + blob: Blob, + localAppState: AppState | null,
  + localElements: ExcalidrawElement[] | null,
  + fileHandle?: FileSystemHandle | null
+) => Promise<{ type: string, data: RestoredDataState | ImportedLibraryState}> +
+ +### getFreeDrawSvgPath + +This function returns the `free draw` svg path for the element. + +**How to use** + +```js +import { getFreeDrawSvgPath } from "@excalidraw/excalidraw"; +``` + +**Signature** + +
+getFreeDrawSvgPath(element: ExcalidrawFreeDrawElement)
+
+ +### isLinearElement + +This function returns true if the element is `linear` type (`arrow` |`line`) else returns `false`. + +**How to use** + +```js +import { isLinearElement } from "@excalidraw/excalidraw"; +``` + +**Signature** + +```tsx +isLinearElement(elementType?: ExcalidrawElement): boolean +``` + +### getNonDeletedElements + +This function returns an array of `deleted` elements. + +**How to use** + +```js +import { getNonDeletedElements } from "@excalidraw/excalidraw"; +``` + +**Signature** + +
+getNonDeletedElements(elements: readonly ExcalidrawElement[]): as readonly NonDeletedExcalidrawElement[]
+
+ +### mergeLibraryItems + +This function merges two `LibraryItems` arrays, where unique items from `otherItems` are sorted first in the returned array. + +```js +import { mergeLibraryItems } from "@excalidraw/excalidraw"; +``` + +**_Signature_** + +
+mergeLibraryItems(localItems: LibraryItems,
  + otherItems: LibraryItems) => LibraryItems +
+ +### parseLibraryTokensFromUrl + +Parses library parameters from URL if present (expects the `#addLibrary` hash key), and returns an object with the `libraryUrl` and `idToken`. Returns `null` if `#addLibrary` hash key not found. + +**How to use** + +```js +import { parseLibraryTokensFromUrl } from "@excalidraw/excalidraw"; +``` + +**Signature** + +```tsx +parseLibraryTokensFromUrl(): { + libraryUrl: string; + idToken: string | null; +} | null +``` + +### useHandleLibrary + +A hook that automatically imports library from url if `#addLibrary` hash key exists on initial load, or when it changes during the editing session (e.g. when a user installs a new library), and handles initial library load if `getInitialLibraryItems` getter is supplied. + +**How to use** + +```js +import { useHandleLibrary } from "@excalidraw/excalidraw"; + +export const App = () => { + // ... + useHandleLibrary({ excalidrawAPI }); +}; +``` + +**Signature** + +
+useHandleLibrary(opts: {
  + excalidrawAPI: ExcalidrawAPI,
  + getInitialLibraryItems?: () => LibraryItemsSource
+}); +
+ +In the future, we will be adding support for handling `library` persistence to `browser storage` (or elsewhere). + +### getSceneVersion + +This function returns the current `scene` version. + +**_Signature_** + +
+getSceneVersion(elements:  ExcalidrawElement[])
+
+ +**How to use** + +```js +import { getSceneVersion } from "@excalidraw/excalidraw"; +``` + +### sceneCoordsToViewportCoords + +This function returns equivalent `viewport` coords for the provided `scene` coords in params. + +```js +import { sceneCoordsToViewportCoords } from "@excalidraw/excalidraw"; +``` + +**_Signature_** + +
+sceneCoordsToViewportCoords({ sceneX: number, sceneY: number },
  + appState: AppState
): { x: number, y: number } +
+ +### viewportCoordsToSceneCoords + +This function returns equivalent `scene` coords for the provided `viewport` coords in params. + +```js +import { viewportCoordsToSceneCoords } from "@excalidraw/excalidraw"; +``` + +**_Signature_** + +
+viewportCoordsToSceneCoords({ clientX: number, clientY: number },
  + appState: AppState
): {x: number, y: number} +
+ +### useDevice + +This hook can be used to check the type of device which is being used. It can only be used inside the `children` of `Excalidraw` component. + +Open the `main menu` in the below example to view the footer. + +```jsx live noInline +const MobileFooter = ({}) => { + const device = useDevice(); + if (device.isMobile) { + return ( +
+ +
+ ); + } + return null; +}; +const App = () => ( +
+ + + Item1 + Item 2 + + + +
+); + +// Need to render when code is span across multiple components +// in Live Code blocks editor +render(); +``` + +The `device` has the following `attributes` + +| Name | Type | Description | +| --- | --- | --- | +| `isSmScreen` | `boolean` | Set to `true` when the device small screen is small (Width < `640px` ) | +| `isMobile` | `boolean` | Set to `true` when the device is `mobile` | +| `isTouchScreen` | `boolean` | Set to `true` for `touch` devices | +| `canDeviceFitSidebar` | `boolean` | Implies whether there is enough space to fit the `sidebar` | diff --git a/dev-docs/docs/@excalidraw/excalidraw/customizing-styles.mdx b/dev-docs/docs/@excalidraw/excalidraw/customizing-styles.mdx new file mode 100644 index 00000000..7a1d423f --- /dev/null +++ b/dev-docs/docs/@excalidraw/excalidraw/customizing-styles.mdx @@ -0,0 +1,49 @@ +# Customizing Styles + +Excalidraw is using CSS variables to style certain components. To override them, you should set your own on the `.excalidraw` and `.excalidraw.theme--dark` (for dark mode variables) selectors. + +Make sure the selector has higher specificity, e.g. by prefixing it with your app's selector: + +```css +.your-app .excalidraw { + --color-primary: red; +} +.your-app .excalidraw.theme--dark { + --color-primary: pink; +} +``` + +Most notably, you can customize the primary colors, by overriding these variables: + +- `--color-primary` +- `--color-primary-darker` +- `--color-primary-darkest` +- `--color-primary-light` +- `--color-primary-contrast-offset` — a slightly darker (in light mode), or lighter (in dark mode) `--color-primary` color to fix contrast issues (see [Chubb illusion](https://en.wikipedia.org/wiki/Chubb_illusion)). It will fall back to `--color-primary` if not present. + +For a complete list of variables, check [theme.scss](https://github.com/excalidraw/excalidraw/blob/master/src/css/theme.scss), though most of them will not make sense to override. + +```css showLineNumbers +.custom-styles .excalidraw { + --color-primary: #fcc6d9; + --color-primary-darker: #f783ac; + --color-primary-darkest: #e64980; + --color-primary-light: #f2a9c4; +} + +.custom-styles .excalidraw.theme--dark { + --color-primary: #d494aa; + --color-primary-darker: #d64c7e; + --color-primary-darkest: #e86e99; + --color-primary-light: #dcbec9; +} +``` +```tsx live +function App() { + return ( +
+ +
+ ); +} +``` diff --git a/dev-docs/docs/@excalidraw/excalidraw/development.mdx b/dev-docs/docs/@excalidraw/excalidraw/development.mdx new file mode 100644 index 00000000..066e0a24 --- /dev/null +++ b/dev-docs/docs/@excalidraw/excalidraw/development.mdx @@ -0,0 +1,59 @@ +--- +pagination_prev: "@excalidraw/excalidraw/installation" +--- + +# Development + +This page relates to developing the `@excalidraw/excalidraw` package itself. + +## Example app + +To start the example app using the `@excalidraw/excalidraw` package, follow the below steps: + +1. Install the dependencies + + ```bash + cd src/packages/excalidraw && yarn + ``` + +2. Start the example app + + ```bash + yarn start + ``` + + [http://localhost:3001](http://localhost:3001) will open in your default browser. + + The example is same as the [codesandbox example](https://ehlz3.csb.app/) + +## Releasing + +### Create a test release + +You can create a test release by posting the below comment in your pull request: + +```bash +@excalibot trigger release +``` + +Once the version is released `@excalibot` will post a comment with the release version. + +### Creating a production release + +To release the next stable version follow the below steps: + +```bash +yarn prerelease version +``` + +You need to pass the `version` for which you want to create the release. This will make the changes needed before making the release like updating `package.json`, `changelog` and more. + +The next step is to run the `release` script: + +```bash +yarn release +``` + +This will publish the package. + +Right now there are two steps to create a production release but once this works fine these scripts will be combined and more automation will be done. diff --git a/dev-docs/docs/@excalidraw/excalidraw/faq.mdx b/dev-docs/docs/@excalidraw/excalidraw/faq.mdx new file mode 100644 index 00000000..6f0fd30a --- /dev/null +++ b/dev-docs/docs/@excalidraw/excalidraw/faq.mdx @@ -0,0 +1,9 @@ +# FAQ + +### Does this package support collaboration ? + +No, Excalidraw package doesn't come with collaboration built in, since the implementation is specific to each host app. We expose APIs which you can use to communicate with Excalidraw which you can use to implement it. You can check our own implementation [here](https://github.com/excalidraw/excalidraw/blob/master/src/excalidraw-app/index.tsx). Here is a [detailed answer](https://github.com/excalidraw/excalidraw/discussions/3879#discussioncomment-1110524) on how you can achieve the same. + +## Need help? + +Check out the existing [Q&A](https://github.com/excalidraw/excalidraw/discussions?discussions_q=label%3Apackage%3Aexcalidraw). If you have any queries or need help, ask us [here](https://github.com/excalidraw/excalidraw/discussions?discussions_q=label%3Apackage%3Aexcalidraw). diff --git a/dev-docs/docs/@excalidraw/excalidraw/installation.mdx b/dev-docs/docs/@excalidraw/excalidraw/installation.mdx new file mode 100644 index 00000000..d8ddd59c --- /dev/null +++ b/dev-docs/docs/@excalidraw/excalidraw/installation.mdx @@ -0,0 +1,43 @@ +# Installation + +**Excalidraw** is published to npm as a component you can directly embed in your projects. + +Using `npm`: + +```bash +npm install react react-dom @excalidraw/excalidraw +``` + +or `yarn`: + +```bash +yarn add react react-dom @excalidraw/excalidraw +``` + +:::tip + +**If you don't want to wait for the next stable release and try out the unreleased changes you can use `@excalidraw/excalidraw@next`.** + +::: + +### Static assets + +Excalidraw depends on assets such as localization files (if you opt to use them), fonts, and others. + +By default these assets are loaded from a public CDN [`https://unpkg.com/@excalidraw/excalidraw/dist/`](https://unpkg.com/@excalidraw/excalidraw/dist), so you don't need to do anything on your end. + +However, if you want to host these files yourself, you can find them in your `node_modules/@excalidraw/excalidraw/dist` directory, in folders `excalidraw-assets` (for production) and `excalidraw-assets-dev` (for development). + +Copy these folders to your static assets directory, and add a `window.EXCALIDRAW_ASSET_PATH` variable in your `index.html` or `index.js` entry file pointing to your public assets path (relative). For example, if you serve your assets from the root of your hostname, you would do: + +```js +window.EXCALIDRAW_ASSET_PATH = "/"; +``` + +### 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](https://codesandbox.io/s/excalidraw-ehlz3). diff --git a/dev-docs/docs/@excalidraw/excalidraw/integration.mdx b/dev-docs/docs/@excalidraw/excalidraw/integration.mdx new file mode 100644 index 00000000..1fdcb8d8 --- /dev/null +++ b/dev-docs/docs/@excalidraw/excalidraw/integration.mdx @@ -0,0 +1,129 @@ +# Integration + +## Module bundler + +If you are using a module bundler (for instance, Webpack), you can import it as an ES6 module as shown below + +```js +import { Excalidraw } from "@excalidraw/excalidraw"; +``` + +:::info + +Throughout the documentation we use live, editable Excalidraw examples like the one shown below. + +While we aim for the examples to closely reflect what you'd get if you rendered it yourself, we actually initialize it with some props behind the scenes. +For example, we're passing a `theme` prop to it based on the current color theme of the docs you're just reading. + +::: + +```jsx live +function App() { + return ( + <> +

Excalidraw Example

+
+ +
+ + ); +} +``` + +### Rendering Excalidraw only on client + +Since _Excalidraw_ doesn't support server side rendering, you should render the component once the host is `mounted`. + +```jsx showLineNumbers +import { useState, useEffect } from "react"; +export default function App() { + const [Comp, setComp] = useState(null); + useEffect(() => { + import("@excalidraw/excalidraw").then((comp) => setComp(comp.default)); + }, []); + return <>{Comp && }; +} +``` + +The `types` are available at `@excalidraw/excalidraw/types`, you can view [example for typescript](https://codesandbox.io/s/excalidraw-types-9h2dm) + +## Browser + +To use it in a browser directly: + +For development use :point_down: + +```js + +``` + +For production use :point_down: + +```js + +``` + +You will need to make sure `react`, `react-dom` is available as shown in the below example. For prod please use the production versions of `react`, `react-dom`. + +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; + + + + +```html + + + + Excalidraw in browser + + + + + + + + +
+

Excalidraw Embed Example

+
+
+ + + +``` + +
+ + +```js showLineNumbers +const App = () => { + return React.createElement( + React.Fragment, + null, + React.createElement( + "div", + { + style: { height: "500px" }, + }, + React.createElement(ExcalidrawLib.Excalidraw), + ), + ); +}; + +const excalidrawWrapper = document.getElementById("app"); +const root = ReactDOM.createRoot(excalidrawWrapper); +root.render(React.createElement(App)); +``` + + +
diff --git a/dev-docs/docs/assets/nerd-stats.png b/dev-docs/docs/assets/nerd-stats.png new file mode 100644 index 0000000000000000000000000000000000000000..0c1a525e4ed716a50b591109f8ce384bd4822a0a GIT binary patch literal 84676 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 To keep `master` branch pointing to remote repository and make pull requests from branches on your fork. To do this, run: +> +> ```bash +> git remote add upstream https://github.com/excalidraw/excalidraw.git +> git fetch upstream +> git branch --set-upstream-to=upstream/master master +> ``` + +### Option 2 - CodeSandbox + +1. Go to https://codesandbox.io/s/github/excalidraw/excalidraw +1. Connect your GitHub account +1. Go to Git tab on left side +1. Tap on `Fork Sandbox` +1. Write your code +1. Commit and PR automatically + +## Pull Request Guidelines + +Don't worry if you get any of the below wrong, or if you don't know how. We'll gladly help out. + +### Title + +Make sure the title starts with a semantic prefix: + +- **feat**: A new feature +- **fix**: A bug fix +- **docs**: Documentation only changes +- **style**: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc) +- **refactor**: A code change that neither fixes a bug nor adds a feature +- **perf**: A code change that improves performance +- **test**: Adding missing tests or correcting existing tests +- **build**: Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm) +- **ci**: Changes to our CI configuration files and scripts (example scopes: Travis, Circle, BrowserStack, SauceLabs) +- **chore**: Other changes that don't modify src or test files +- **revert**: Reverts a previous commit + +### Changelog + +Add a brief description of your pull request to the changelog located here: [changelog](https://github.com/excalidraw/excalidraw/blob/master/CHANGELOG.md) + +Notes: + +- Make sure to prepend to the section corresponding with the semantic prefix you selected in the title +- Link to your pull request - this will require updating the CHANGELOG _after_ creating the pull request + +### Testing + +Once you submit your pull request it will automatically be tested. Be sure to check the results of the test and fix any issues that arise. + +It's also a good idea to consider if your change should include additional tests. This is highly recommended for new features or bug-fixes. For example, it's good practice to create a test for each bug you fix which ensures that we don't regress the code in the future. + +Finally - always manually test your changes using the convenient staging environment deployed for each pull request. As much as local development attempts to replicate production, there can still be subtle differences in behavior. For larger features consider testing your change in multiple browsers as well. + + +## Translating + +To translate Excalidraw into other languages, please visit [our Crowdin page](https://crowdin.com/project/excalidraw). To add a new language, [open an issue](https://github.com/excalidraw/excalidraw/issues/new) so we can get things set up on our end first. + +Translations will be available on the app if they exceed a certain threshold of completion (currently **85%**). diff --git a/dev-docs/docs/introduction/development.mdx b/dev-docs/docs/introduction/development.mdx new file mode 100644 index 00000000..63c1875e --- /dev/null +++ b/dev-docs/docs/introduction/development.mdx @@ -0,0 +1,102 @@ +# Development + +## Code Sandbox + +- Go to https://codesandbox.io/p/github/excalidraw/excalidraw + - You may need to sign in with GitHub and reload the page +- You can start coding instantly, and even send PRs from there! + +## Local Installation + +These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. + +### Requirements + +- [Node.js](https://nodejs.org/en/) +- [Yarn](https://yarnpkg.com/getting-started/install) (v1 or v2.4.2+) +- [Git](https://git-scm.com/downloads) + +### Clone the repo + +```bash +git clone https://github.com/excalidraw/excalidraw.git +``` + +### Install the dependencies + +```bash +yarn +``` + +### Start the server + +```bash +yarn start +``` + +Now you can open [http://localhost:3000](http://localhost:3000) and start coding in your favorite code editor. + +## Collaboration + +For collaboration, you will need to set up [collab server](https://github.com/excalidraw/excalidraw-room) in local. + +## Commands + +### Install the dependencies + +```bash +yarn +``` + +### Run the project + +```bash +yarn start +``` + +### Reformat all files with Prettier + +```bash +yarn fix +``` + +### Run tests + +```bash +yarn test +``` + +### Update test snapshots + +```bash +yarn test:update +``` + +### Test for formatting with Prettier + +```bash +yarn test:code +``` + +### Docker Compose + +You can use docker-compose to work on Excalidraw locally if you don't want to setup a Node.js env. + +```bash +docker-compose up --build -d +``` + +## Self-hosting + +We publish a Docker image with the Excalidraw client at [excalidraw/excalidraw](https://hub.docker.com/r/excalidraw/excalidraw). You can use it to self-host your own client under your own domain, on Kubernetes, AWS ECS, etc. + +```bash +docker build -t excalidraw/excalidraw . +docker run --rm -dit --name excalidraw -p 5000:80 excalidraw/excalidraw:latest +``` + +The Docker image is free of analytics and other tracking libraries. + +**At the moment, self-hosting your own instance doesn't support sharing or collaboration features.** + +We are working towards providing a full-fledged solution for self-hosting your own Excalidraw. diff --git a/dev-docs/docs/introduction/get-started.mdx b/dev-docs/docs/introduction/get-started.mdx new file mode 100644 index 00000000..f122c9a7 --- /dev/null +++ b/dev-docs/docs/introduction/get-started.mdx @@ -0,0 +1,16 @@ +--- +title: Introduction +slug: ../ +--- + +## Try now + +Go to [excalidraw.com](https://excalidraw.com) to start sketching. + +## How are these docs structured + +These docs are focused on developers, and structured in the following way: + +- [Introduction](/docs/) — development setup and introduction. +- [@excalidraw/excalidraw](/docs/@excalidraw/excalidraw/installation) — docs for the npm package to help you integrate Excalidraw into your own app. +- Editor — IN PROGRESS. Docs describing the internals of the Excalidraw editor to help in contributing to the codebase. diff --git a/dev-docs/docs/package/overview.md b/dev-docs/docs/package/overview.md deleted file mode 100644 index b411dcf2..00000000 --- a/dev-docs/docs/package/overview.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -sidebar_position: 1 -title: Overview ---- - -In development. For now, refer to [excalidraw package readme](https://github.com/excalidraw/excalidraw/blob/master/src/packages/excalidraw/README.md). diff --git a/dev-docs/docusaurus.config.js b/dev-docs/docusaurus.config.js index c1f9952d..1c69e6dc 100644 --- a/dev-docs/docusaurus.config.js +++ b/dev-docs/docusaurus.config.js @@ -1,15 +1,12 @@ // @ts-check // Note: type annotations allow type checking and IDEs autocompletion -const lightCodeTheme = require("prism-react-renderer/themes/github"); -const darkCodeTheme = require("prism-react-renderer/themes/dracula"); - /** @type {import('@docusaurus/types').Config} */ const config = { title: "Excalidraw developer docs", tagline: "For Excalidraw contributors or those integrating the Excalidraw editor", - url: "https://docs.excalidraw.com.com", + url: "https://docs.excalidraw.com", baseUrl: "/", onBrokenLinks: "throw", onBrokenMarkdownLinks: "warn", @@ -36,7 +33,10 @@ const config = { editUrl: "https://github.com/excalidraw/docs/tree/master/", }, theme: { - customCss: require.resolve("./src/css/custom.css"), + customCss: [ + require.resolve("./src/css/custom.scss"), + require.resolve("../src/packages/excalidraw/example/App.scss"), + ], }, }), ], @@ -45,18 +45,20 @@ const config = { themeConfig: /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ ({ + colorMode: { + respectPrefersColorScheme: true, + }, navbar: { - title: "Excalidraw Docs", + title: "Excalidraw", logo: { alt: "Excalidraw Logo", src: "img/logo.svg", }, items: [ { - type: "doc", - docId: "get-started", + to: "/docs", position: "left", - label: "Get started", + label: "Docs", }, { to: "https://blog.excalidraw.com", @@ -78,7 +80,7 @@ const config = { items: [ { label: "Get Started", - to: "/docs/get-started", + to: "/docs", }, ], }, @@ -93,6 +95,10 @@ const config = { label: "Twitter", href: "https://twitter.com/excalidraw", }, + { + label: "Linkedin", + href: "https://www.linkedin.com/company/excalidraw", + }, ], }, { @@ -109,13 +115,23 @@ const config = { ], }, ], - copyright: `Made with ❤️ Built with Docusaurus`, + copyright: `Copyright © 2023 Excalidraw community. Built with Docusaurus ❤️`, }, prism: { - theme: lightCodeTheme, - darkTheme: darkCodeTheme, + theme: require("prism-react-renderer/themes/dracula"), + }, + image: "img/og-image.png", + docs: { + sidebar: { + hideable: true, + }, + }, + tableOfContents: { + maxHeadingLevel: 4, }, }), + themes: ["@docusaurus/theme-live-codeblock"], + plugins: ["docusaurus-plugin-sass"], }; module.exports = config; diff --git a/dev-docs/package.json b/dev-docs/package.json index 9f9d4a76..dd3c4587 100644 --- a/dev-docs/package.json +++ b/dev-docs/package.json @@ -15,13 +15,17 @@ "typecheck": "tsc" }, "dependencies": { - "@docusaurus/core": "2.0.0-rc.1", - "@docusaurus/preset-classic": "2.0.0-rc.1", + "@docusaurus/core": "2.2.0", + "@docusaurus/preset-classic": "2.2.0", + "@docusaurus/theme-live-codeblock": "2.2.0", + "@excalidraw/excalidraw": "0.14.2", "@mdx-js/react": "^1.6.22", "clsx": "^1.2.1", + "docusaurus-plugin-sass": "0.2.3", "prism-react-renderer": "^1.3.5", "react": "^17.0.2", - "react-dom": "^17.0.2" + "react-dom": "^17.0.2", + "sass": "1.57.1" }, "devDependencies": { "@docusaurus/module-type-aliases": "2.0.0-rc.1", diff --git a/dev-docs/sidebars.js b/dev-docs/sidebars.js index 96621506..00879c12 100644 --- a/dev-docs/sidebars.js +++ b/dev-docs/sidebars.js @@ -13,19 +13,86 @@ /** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */ const sidebars = { - // By default, Docusaurus generates a sidebar from the docs folder structure - tutorialSidebar: [{ type: "autogenerated", dirName: "." }], + docs: [ + { + type: "category", + label: "Introduction", + link: { + type: "doc", + id: "introduction/get-started", + }, + items: ["introduction/development", "introduction/contributing"], + }, - // But you can create a sidebar manually - /* - tutorialSidebar: [ { - type: 'category', - label: 'Tutorial', - items: ['hello'], + type: "category", + label: "@excalidraw/excalidraw", + collapsed: false, + items: [ + "@excalidraw/excalidraw/installation", + "@excalidraw/excalidraw/integration", + "@excalidraw/excalidraw/customizing-styles", + { + type: "category", + label: "API", + link: { + type: "doc", + id: "@excalidraw/excalidraw/api/api-intro", + }, + items: [ + { + type: "category", + label: "Props", + link: { + type: "doc", + id: "@excalidraw/excalidraw/api/props/props", + }, + items: [ + "@excalidraw/excalidraw/api/props/initialdata", + "@excalidraw/excalidraw/api/props/ref", + "@excalidraw/excalidraw/api/props/render-props", + "@excalidraw/excalidraw/api/props/ui-options", + ], + }, + { + type: "category", + label: "Children Components", + link: { + type: "doc", + id: "@excalidraw/excalidraw/api/children-components/children-components-intro", + }, + items: [ + "@excalidraw/excalidraw/api/children-components/main-menu", + "@excalidraw/excalidraw/api/children-components/welcome-screen", + "@excalidraw/excalidraw/api/children-components/footer", + "@excalidraw/excalidraw/api/children-components/live-collaboration-trigger", + ], + }, + { + type: "category", + label: "Utils", + link: { + type: "doc", + id: "@excalidraw/excalidraw/api/utils/utils-intro", + }, + items: [ + "@excalidraw/excalidraw/api/utils/export", + "@excalidraw/excalidraw/api/utils/restore", + ], + }, + { + type: "category", + label: "Constants", + link: { type: "doc", id: "@excalidraw/excalidraw/api/constants" }, + items: [], + }, + ], + }, + "@excalidraw/excalidraw/faq", + "@excalidraw/excalidraw/development", + ], }, ], - */ }; module.exports = sidebars; diff --git a/dev-docs/src/components/Highlight.js b/dev-docs/src/components/Highlight.js new file mode 100644 index 00000000..6ef30412 --- /dev/null +++ b/dev-docs/src/components/Highlight.js @@ -0,0 +1,15 @@ +import React from "react"; +export default function Highlight({ children }) { + return ( + + {children} + + ); +} diff --git a/dev-docs/src/css/custom.css b/dev-docs/src/css/custom.scss similarity index 54% rename from dev-docs/src/css/custom.css rename to dev-docs/src/css/custom.scss index bbdc13c5..93c7f90a 100644 --- a/dev-docs/src/css/custom.css +++ b/dev-docs/src/css/custom.scss @@ -14,11 +14,13 @@ --ifm-color-primary-lighter: #5b57d1; --ifm-color-primary-lightest: #5b57d1; --ifm-code-font-size: 95%; + + scrollbar-gutter: stable; } /* For readability concerns, you should choose a lighter palette in dark mode. */ [data-theme="dark"] { - --ifm-color-primary: #5650f0; + --ifm-color-primary: #8784e3; --ifm-color-primary-dark: #4b46d8; --ifm-color-primary-darker: #4b46d8; --ifm-color-primary-darkest: #3e39be; @@ -41,3 +43,59 @@ [data-theme="dark"] .navbar__logo { filter: invert(93%) hue-rotate(180deg); } + +pre a { + color: #5dccff; + + &:hover { + color: #8fd3f3; + } +} + +.custom-button { + height: 40px; + max-width: 200px; + margin: 10px 0; + padding: 5px; + background: #70b1ec; + color: white; + font-weight: bold; + border: none; +} + +.custom-styles .excalidraw { + --color-primary: #fcc6d9; + --color-primary-darker: #f783ac; + --color-primary-darkest: #e64980; + --color-primary-light: #f2a9c4; +} + +.custom-styles .excalidraw.theme--dark { + --color-primary: #d494aa; + --color-primary-darker: #d64c7e; + --color-primary-darkest: #e86e99; + --color-primary-light: #dcbec9; +} + +/* The global css conflicts with Excal css hence overriding */ + +.excalidraw .context-menu-item__shortcut { + background-color: transparent; + border: none; + box-shadow: none; + padding: 0; +} +.excalidraw .Stats table td, +.excalidraw .Stats table th, +.excalidraw .Stats table tr { + border: none; + background: none; + padding: 0; +} +.excalidraw .Stats .close { + padding: 0; +} + +.excalidraw .Stats table { + display: table; +} diff --git a/dev-docs/src/initialData.js b/dev-docs/src/initialData.js new file mode 100644 index 00000000..d0a9b212 --- /dev/null +++ b/dev-docs/src/initialData.js @@ -0,0 +1,1230 @@ +export const libraryItems = [ + [ + { + type: "line", + version: 1699, + versionNonce: 1813275999, + isDeleted: false, + id: "1OMHrnYMU3LJ3w3IaXU_R", + fillStyle: "hachure", + strokeWidth: 1, + strokeStyle: "solid", + roughness: 1, + opacity: 100, + angle: 0, + x: 209.72304760646858, + y: 338.83587294718825, + strokeColor: "#881fa3", + backgroundColor: "#be4bdb", + width: 116.42036295658873, + height: 103.65107323746608, + seed: 1445523839, + groupIds: [], + strokeSharpness: "sharp", + boundElementIds: [], + startBinding: null, + endBinding: null, + points: [ + [-92.28090097254909, 7.105427357601002e-15], + [-154.72281841151394, 19.199290805487394], + [-155.45758928571422, 79.43840749607878], + [-99.89923520113778, 103.6510732374661], + [-40.317783799181804, 79.1587107641305], + [-39.037226329125524, 21.285677238400705], + [-92.28090097254909, 7.105427357601002e-15], + ], + lastCommittedPoint: null, + startArrowhead: null, + endArrowhead: null, + }, + ], + [ + { + type: "line", + version: 3901, + versionNonce: 540959103, + isDeleted: false, + id: "b-rwW8s76ztV_uTu1SHq1", + fillStyle: "solid", + strokeWidth: 1, + strokeStyle: "solid", + roughness: 1, + opacity: 100, + angle: 0, + x: -249.48446738689245, + y: 374.851387389359, + strokeColor: "#0a11d3", + backgroundColor: "#228be6", + width: 88.21658171083376, + height: 113.8575037534261, + seed: 1513238033, + groupIds: ["N2YAi9nU-wlRb0rDaDZoe"], + strokeSharpness: "round", + boundElementIds: [], + startBinding: null, + endBinding: null, + points: [ + [-0.22814350714115691, -43.414939319563715], + [0.06274947619197979, 42.63794490105306], + [-0.21453039840335475, 52.43469208825097], + [4.315205554872581, 56.66774540453215], + [20.089784992984285, 60.25027917349701], + [46.7532926683984, 61.365826671969444], + [72.22851104292477, 59.584691681394986], + [85.76368213524371, 55.325139565662596], + [87.67263486434864, 51.7342924478499], + [87.94074036468018, 43.84700272879395], + [87.73030872197806, -36.195582644606276], + [87.2559282533682, -43.758132174307036], + [81.5915337527493, -47.984890854524416], + [69.66352776578219, -50.4328058257654], + [42.481213744224995, -52.49167708145666], + [20.68789182864576, -51.26396751574663], + [3.5475921483286084, -47.099726468136254], + [-0.2758413461535838, -43.46664538034193], + [-0.22814350714115691, -43.414939319563715], + ], + lastCommittedPoint: null, + startArrowhead: null, + endArrowhead: null, + }, + { + type: "line", + version: 1635, + versionNonce: 1383184881, + isDeleted: false, + id: "3CMZYj34FwjhgPB7jUC3f", + fillStyle: "solid", + strokeWidth: 1, + strokeStyle: "solid", + roughness: 1, + opacity: 100, + angle: 0, + x: -249.02524930453623, + y: 398.8804363713438, + strokeColor: "#0a11d3", + backgroundColor: "transparent", + width: 88.30808627974527, + height: 9.797916664247975, + seed: 683951089, + groupIds: ["N2YAi9nU-wlRb0rDaDZoe"], + strokeSharpness: "round", + boundElementIds: [], + startBinding: null, + endBinding: null, + points: [ + [0, -2.1538602707609424], + [2.326538897826852, 1.751753055375216], + [12.359939318521995, 5.028526743934819], + [25.710950037209347, 7.012921076245119], + [46.6269757640547, 7.193749997581346], + [71.03526003420632, 5.930375670950649], + [85.2899738827162, 1.3342483900732343], + [88.30808627974527, -2.6041666666666288], + ], + lastCommittedPoint: null, + startArrowhead: null, + endArrowhead: null, + }, + { + type: "line", + version: 1722, + versionNonce: 303290783, + isDeleted: false, + id: "DX3fUhBWtlJwYyrBDhebG", + fillStyle: "solid", + strokeWidth: 1, + strokeStyle: "solid", + roughness: 1, + opacity: 100, + angle: 0, + x: -250.11899081659772, + y: 365.80628180927204, + strokeColor: "#0a11d3", + backgroundColor: "transparent", + width: 88.30808627974527, + height: 9.797916664247975, + seed: 1817746897, + groupIds: ["N2YAi9nU-wlRb0rDaDZoe"], + strokeSharpness: "round", + boundElementIds: [], + startBinding: null, + endBinding: null, + points: [ + [0, -2.1538602707609424], + [2.326538897826852, 1.751753055375216], + [12.359939318521995, 5.028526743934819], + [25.710950037209347, 7.012921076245119], + [46.6269757640547, 7.193749997581346], + [71.03526003420632, 5.930375670950649], + [85.2899738827162, 1.3342483900732343], + [88.30808627974527, -2.6041666666666288], + ], + lastCommittedPoint: null, + startArrowhead: null, + endArrowhead: null, + }, + { + type: "ellipse", + version: 4738, + versionNonce: 753357777, + isDeleted: false, + id: "a-Snvp2FgqDYqSLylF44S", + fillStyle: "solid", + strokeWidth: 1, + strokeStyle: "solid", + roughness: 1, + opacity: 100, + angle: 0, + x: -251.23981350275943, + y: 323.4117518426986, + strokeColor: "#0a11d3", + backgroundColor: "#fff", + width: 87.65074610854188, + height: 17.72670397681366, + seed: 1409727409, + groupIds: ["N2YAi9nU-wlRb0rDaDZoe"], + strokeSharpness: "sharp", + boundElementIds: ["bxuMGTzXLn7H-uBCptINx"], + }, + { + type: "ellipse", + version: 109, + versionNonce: 1992641983, + isDeleted: false, + id: "7-6c-JFuB2yGoNQRgb2WM", + fillStyle: "solid", + strokeWidth: 1, + strokeStyle: "solid", + roughness: 1, + opacity: 100, + angle: 0, + x: -179.73008120217884, + y: 347.98755471983213, + strokeColor: "#0a11d3", + backgroundColor: "#fff", + width: 12.846057046979809, + height: 13.941904362416096, + seed: 1073094033, + groupIds: ["N2YAi9nU-wlRb0rDaDZoe"], + strokeSharpness: "sharp", + boundElementIds: [], + }, + { + type: "ellipse", + version: 158, + versionNonce: 1028567473, + isDeleted: false, + id: "150XitJtlKDhTPRCyzv56", + fillStyle: "solid", + strokeWidth: 1, + strokeStyle: "solid", + roughness: 1, + opacity: 100, + angle: 0, + x: -179.73008120217884, + y: 378.5900085788926, + strokeColor: "#0a11d3", + backgroundColor: "#fff", + width: 12.846057046979809, + height: 13.941904362416096, + seed: 526271345, + groupIds: ["N2YAi9nU-wlRb0rDaDZoe"], + strokeSharpness: "sharp", + boundElementIds: [], + }, + { + type: "ellipse", + version: 212, + versionNonce: 158547423, + isDeleted: false, + id: "cmwAR3NBl1VqvSorrQN2W", + fillStyle: "solid", + strokeWidth: 1, + strokeStyle: "solid", + roughness: 1, + opacity: 100, + angle: 0, + x: -179.73008120217884, + y: 411.8508097533892, + strokeColor: "#0a11d3", + backgroundColor: "#fff", + width: 12.846057046979809, + height: 13.941904362416096, + seed: 243707217, + groupIds: ["N2YAi9nU-wlRb0rDaDZoe"], + strokeSharpness: "sharp", + boundElementIds: [], + }, + ], + [ + { + type: "diamond", + version: 659, + versionNonce: 1294871039, + isDeleted: false, + id: "aDDArXRjZugwyEawdhCeZ", + fillStyle: "solid", + strokeWidth: 1, + strokeStyle: "solid", + roughness: 1, + opacity: 100, + angle: 0, + x: -109.55894395256101, + y: 381.22641397493356, + strokeColor: "#c92a2a", + backgroundColor: "#fd8888", + width: 112.64736525303451, + height: 36.77344700318558, + seed: 511870335, + groupIds: ["M6ByXuSmtHCr3RtPPKJQh"], + strokeSharpness: "sharp", + boundElementIds: [], + }, + { + type: "diamond", + version: 700, + versionNonce: 60864881, + isDeleted: false, + id: "Hzx8zkeyDs3YicO2Tdv6G", + fillStyle: "solid", + strokeWidth: 1, + strokeStyle: "solid", + roughness: 1, + opacity: 100, + angle: 0, + x: -109.55894395256101, + y: 372.354634046675, + strokeColor: "#c92a2a", + backgroundColor: "#fd8888", + width: 112.64736525303451, + height: 36.77344700318558, + seed: 1283079231, + groupIds: ["M6ByXuSmtHCr3RtPPKJQh"], + strokeSharpness: "sharp", + boundElementIds: [], + }, + { + type: "diamond", + version: 780, + versionNonce: 251040287, + isDeleted: false, + id: "PNzYhT295VNCT5EXmqvmw", + fillStyle: "solid", + strokeWidth: 1, + strokeStyle: "solid", + roughness: 1, + opacity: 100, + angle: 0, + x: -109.55894395256101, + y: 359.72407445196296, + strokeColor: "#c92a2a", + backgroundColor: "#fd8888", + width: 112.64736525303451, + height: 36.77344700318558, + seed: 996251633, + groupIds: ["M6ByXuSmtHCr3RtPPKJQh"], + strokeSharpness: "sharp", + boundElementIds: [], + }, + { + type: "diamond", + version: 822, + versionNonce: 1862951761, + isDeleted: false, + id: "jiMMAhQF3__7bF-obgXc0", + fillStyle: "solid", + strokeWidth: 1, + strokeStyle: "solid", + roughness: 1, + opacity: 100, + angle: 0, + x: -109.55894395256101, + y: 347.1924021546656, + strokeColor: "#c92a2a", + backgroundColor: "#fd8888", + width: 112.64736525303451, + height: 36.77344700318558, + seed: 1764842481, + groupIds: ["M6ByXuSmtHCr3RtPPKJQh"], + strokeSharpness: "sharp", + boundElementIds: [], + }, + ], + [ + { + type: "line", + version: 4766, + versionNonce: 2003030321, + isDeleted: false, + id: "BXfdLRoPYZ9MIumzzoA9-", + fillStyle: "hachure", + strokeWidth: 1, + strokeStyle: "solid", + roughness: 1, + opacity: 100, + angle: 1.5707963267948957, + x: -471.6208001976387, + y: 520.7681448415112, + strokeColor: "#087f5b", + backgroundColor: "#40c057", + width: 52.317507746132115, + height: 154.56722543646003, + seed: 1424381745, + groupIds: ["HSrtfEf-CssQTf160Fb6R"], + strokeSharpness: "round", + boundElementIds: [], + startBinding: null, + endBinding: null, + points: [ + [-0.24755378372925183, -40.169554027464216], + [-0.07503751055611152, 76.6515171914404], + [-0.23948042713317108, 89.95108885873196], + [2.446913573036335, 95.69766931810295], + [11.802146636255692, 100.56113713047068], + [27.615140546177496, 102.07554835500338], + [42.72341054254274, 99.65756899883291], + [50.75054563137204, 93.87501510096598], + [51.88266441510958, 89.00026150397161], + [52.04166639997853, 78.29287333983132], + [51.916868330459295, -30.36891819848148], + [51.635533423123285, -40.63545540065934], + [48.27622163143906, -46.37349057843314], + [41.202227904674494, -49.69665692879073], + [25.081551986374073, -52.49167708145666], + [12.15685839679867, -50.825000270901], + [1.9916746648394732, -45.171835889467935], + [-0.2758413461535838, -40.23974757720194], + [-0.24755378372925183, -40.169554027464216], + ], + lastCommittedPoint: null, + startArrowhead: null, + endArrowhead: null, + }, + { + type: "line", + version: 2405, + versionNonce: 2120341087, + isDeleted: false, + id: "TYsYe2VvJ60T_yKa3kyOw", + fillStyle: "solid", + strokeWidth: 1, + strokeStyle: "solid", + roughness: 1, + opacity: 100, + angle: 1.5707963267948957, + x: -496.3957643857249, + y: 541.7241190920508, + strokeColor: "#087f5b", + backgroundColor: "transparent", + width: 50.7174766392476, + height: 12.698053371678215, + seed: 726657713, + groupIds: ["HSrtfEf-CssQTf160Fb6R"], + strokeSharpness: "round", + boundElementIds: [], + startBinding: null, + endBinding: null, + points: [ + [0, -2.0205717204386002], + [1.3361877396713384, 3.0410845646550486], + [7.098613049589299, 7.287767671898479], + [14.766422451441104, 9.859533283467512], + [26.779003528407447, 10.093886705011586], + [40.79727342221974, 8.456559589697127], + [48.98410145879092, 2.500000505196364], + [50.7174766392476, -2.6041666666666288], + ], + lastCommittedPoint: null, + startArrowhead: null, + endArrowhead: null, + }, + { + type: "line", + version: 2538, + versionNonce: 1913946897, + isDeleted: false, + id: "VIuxhGjvYUBniitomEkKm", + fillStyle: "solid", + strokeWidth: 1, + strokeStyle: "solid", + roughness: 1, + opacity: 100, + angle: 1.5707963267948957, + x: -450.969983237283, + y: 542.1789894334747, + strokeColor: "#087f5b", + backgroundColor: "transparent", + width: 50.57247907260371, + height: 10.178760037658167, + seed: 1977326481, + groupIds: ["HSrtfEf-CssQTf160Fb6R"], + strokeSharpness: "round", + boundElementIds: [], + startBinding: null, + endBinding: null, + points: [ + [0, -2.136356936862347], + [1.332367676378171, 1.9210669226078037], + [7.078318632616268, 5.325208253515953], + [14.724206326638113, 7.386735659885842], + [26.70244431044034, 7.574593370991538], + [40.68063699304561, 6.262111896696538], + [48.84405948536458, 1.4873339211608216], + [50.57247907260371, -2.6041666666666288], + ], + lastCommittedPoint: null, + startArrowhead: null, + endArrowhead: null, + }, + { + type: "ellipse", + version: 5503, + versionNonce: 1236644479, + isDeleted: false, + id: "1acGiqpJjntE3sr1JVnBP", + fillStyle: "solid", + strokeWidth: 1, + strokeStyle: "solid", + roughness: 1, + opacity: 100, + angle: 1.5707963267948957, + x: -404.36521010516793, + y: 534.1894365757241, + strokeColor: "#087f5b", + backgroundColor: "#fff", + width: 51.27812853552538, + height: 22.797152568995934, + seed: 1774660383, + groupIds: ["HSrtfEf-CssQTf160Fb6R"], + strokeSharpness: "sharp", + boundElementIds: ["bxuMGTzXLn7H-uBCptINx"], + }, + ], + [ + { + type: "rectangle", + version: 4270, + versionNonce: 309922463, + isDeleted: false, + id: "SqGRpNqls7OV1QB2Eq-0m", + fillStyle: "solid", + strokeWidth: 2, + strokeStyle: "solid", + roughness: 1, + opacity: 100, + angle: 0, + x: -393.3000561423187, + y: 338.9742643666818, + strokeColor: "#000000", + backgroundColor: "#fff", + width: 70.67858069123133, + height: 107.25081879410921, + seed: 371096063, + groupIds: ["9ppmKFUbA4iKjt8FaDFox"], + strokeSharpness: "sharp", + boundElementIds: [ + "CFu0B4Mw_1wC1Hbgx8Fs0", + "XIl_NhaFtRO00pX5Pq6VU", + "EndiSTFlx1AT7vcBVjgve", + ], + }, + { + type: "rectangle", + version: 4319, + versionNonce: 896119505, + isDeleted: false, + id: "fayss6b_GPh6LK1x4iX-q", + fillStyle: "solid", + strokeWidth: 2, + strokeStyle: "solid", + roughness: 1, + opacity: 100, + angle: 0, + x: -400.8474891780329, + y: 331.95417508096745, + strokeColor: "#000000", + backgroundColor: "#fff", + width: 70.67858069123133, + height: 107.25081879410921, + seed: 685932433, + groupIds: ["0RJwA-yKP5dqk5oMiSeot", "9ppmKFUbA4iKjt8FaDFox"], + strokeSharpness: "sharp", + boundElementIds: [ + "CFu0B4Mw_1wC1Hbgx8Fs0", + "XIl_NhaFtRO00pX5Pq6VU", + "EndiSTFlx1AT7vcBVjgve", + ], + }, + { + type: "rectangle", + version: 4417, + versionNonce: 1968987839, + isDeleted: false, + id: "HgAnv2rwYhUpLiJiZAXv-", + fillStyle: "solid", + strokeWidth: 2, + strokeStyle: "solid", + roughness: 1, + opacity: 100, + angle: 0, + x: -410.24257846374826, + y: 323.7002688309677, + strokeColor: "#000000", + backgroundColor: "#fff", + width: 70.67858069123133, + height: 107.25081879410921, + seed: 58634943, + groupIds: ["9ppmKFUbA4iKjt8FaDFox"], + strokeSharpness: "sharp", + boundElementIds: [ + "CFu0B4Mw_1wC1Hbgx8Fs0", + "XIl_NhaFtRO00pX5Pq6VU", + "EndiSTFlx1AT7vcBVjgve", + ], + }, + { + type: "draw", + version: 3541, + versionNonce: 1680683185, + isDeleted: false, + id: "12aO-Bs9HdALZN_-tuQTr", + fillStyle: "solid", + strokeWidth: 1, + strokeStyle: "solid", + roughness: 1, + opacity: 100, + angle: 0, + x: -398.2561518768373, + y: 371.84603609547054, + strokeColor: "#000000", + backgroundColor: "#fff", + width: 46.57983585730082, + height: 3.249953844290203, + seed: 1673003743, + groupIds: ["9ppmKFUbA4iKjt8FaDFox"], + strokeSharpness: "round", + boundElementIds: [], + points: [ + [0, 0.6014697828497827], + [40.42449133807562, 0.7588628355182573], + [46.57983585730082, -2.491091008771946], + ], + lastCommittedPoint: null, + startArrowhead: null, + endArrowhead: null, + }, + { + type: "draw", + version: 3567, + versionNonce: 620768991, + isDeleted: false, + id: "Ck_Y0EVPh_fsY0qoRnGiD", + fillStyle: "solid", + strokeWidth: 1, + strokeStyle: "solid", + roughness: 1, + opacity: 100, + angle: 0, + x: -396.400899638823, + y: 340.9822185794818, + strokeColor: "#000000", + backgroundColor: "#fff", + width: 45.567415680676426, + height: 2.8032978840147194, + seed: 1821527807, + groupIds: ["9ppmKFUbA4iKjt8FaDFox"], + strokeSharpness: "round", + boundElementIds: [], + points: [ + [0, 0], + [16.832548902953302, -2.8032978840147194], + [45.567415680676426, -0.3275477042019195], + ], + lastCommittedPoint: null, + startArrowhead: null, + endArrowhead: null, + }, + { + type: "draw", + version: 3592, + versionNonce: 1300624017, + isDeleted: false, + id: "a_7IZapEuD918VW1P8Ss_", + fillStyle: "solid", + strokeWidth: 1, + strokeStyle: "solid", + roughness: 1, + opacity: 100, + angle: 0, + x: -396.4774991551924, + y: 408.37659284983897, + strokeColor: "#000000", + backgroundColor: "#fff", + width: 48.33668263438425, + height: 4.280657518731036, + seed: 1485707039, + groupIds: ["9ppmKFUbA4iKjt8FaDFox"], + strokeSharpness: "round", + boundElementIds: [], + points: [ + [0, 0], + [26.41225578429045, -0.2552319773002338], + [37.62000339651456, 2.3153712935189787], + [48.33668263438425, -1.9652862252120569], + ], + lastCommittedPoint: null, + startArrowhead: null, + endArrowhead: null, + }, + { + type: "draw", + version: 3629, + versionNonce: 737475327, + isDeleted: false, + id: "8io6FVNdFOLsQ266W8Lni", + fillStyle: "solid", + strokeWidth: 1, + strokeStyle: "solid", + roughness: 1, + opacity: 100, + angle: 0, + x: -399.6615463367227, + y: 419.61974125811776, + strokeColor: "#000000", + backgroundColor: "#fff", + width: 54.40694982784246, + height: 2.9096445412231735, + seed: 1042012991, + groupIds: ["9ppmKFUbA4iKjt8FaDFox"], + strokeSharpness: "round", + boundElementIds: [], + points: [ + [0, 0], + [10.166093050596771, -1.166642430373031], + [16.130660965377448, -0.8422655250909383], + [46.26079588567538, 0.6125567455206506], + [54.40694982784246, -2.297087795702523], + ], + lastCommittedPoint: null, + startArrowhead: null, + endArrowhead: null, + }, + { + type: "draw", + version: 3594, + versionNonce: 1982560369, + isDeleted: false, + id: "LJI5kY6tg7UFAjPV3fKL-", + fillStyle: "solid", + strokeWidth: 1, + strokeStyle: "solid", + roughness: 1, + opacity: 100, + angle: 0, + x: -399.3767034411569, + y: 356.042820132743, + strokeColor: "#000000", + backgroundColor: "#fff", + width: 46.92865289294453, + height: 2.4757501798128, + seed: 295443295, + groupIds: ["9ppmKFUbA4iKjt8FaDFox"], + strokeSharpness: "round", + boundElementIds: [], + points: [ + [0, 0], + [18.193786115221407, -0.5912874140789839], + [46.92865289294453, 1.884462765733816], + ], + lastCommittedPoint: null, + startArrowhead: null, + endArrowhead: null, + }, + { + type: "draw", + version: 3609, + versionNonce: 1857766175, + isDeleted: false, + id: "zCrZOHW-q8YWKLw6ltKxX", + fillStyle: "solid", + strokeWidth: 1, + strokeStyle: "solid", + roughness: 1, + opacity: 100, + angle: 0, + x: -399.26921524500654, + y: 390.5261491685826, + strokeColor: "#000000", + backgroundColor: "#fff", + width: 46.92865289294453, + height: 2.4757501798128, + seed: 1734301567, + groupIds: ["9ppmKFUbA4iKjt8FaDFox"], + strokeSharpness: "round", + boundElementIds: [], + points: [ + [0, 0], + [8.093938105125233, 1.4279702913643746], + [18.193786115221407, -0.5912874140789839], + [46.92865289294453, 1.884462765733816], + ], + lastCommittedPoint: null, + startArrowhead: null, + endArrowhead: null, + }, + ], + [ + { + type: "rectangle", + version: 676, + versionNonce: 1841530687, + isDeleted: false, + id: "XOD3vRhtoLWoxC9wF9Sk8", + fillStyle: "solid", + strokeWidth: 1, + strokeStyle: "solid", + roughness: 1, + opacity: 100, + angle: 0, + x: -593.9896997899341, + y: 343.9798351106279, + strokeColor: "#000000", + backgroundColor: "transparent", + width: 127.88383573213892, + height: 76.53703389977764, + seed: 106569279, + groupIds: ["TC0RSM64Cxmu17MlE12-o"], + strokeSharpness: "sharp", + boundElementIds: [], + }, + { + type: "line", + version: 462, + versionNonce: 1737150513, + isDeleted: false, + id: "WBkTga1PjKzYK-tcGjnjZ", + fillStyle: "solid", + strokeWidth: 1, + strokeStyle: "solid", + roughness: 1, + opacity: 100, + angle: 0, + x: -595.0652975408293, + y: 354.6963695028721, + strokeColor: "#000000", + backgroundColor: "transparent", + width: 128.84193229844433, + height: 0, + seed: 73916127, + groupIds: ["TC0RSM64Cxmu17MlE12-o"], + strokeSharpness: "round", + boundElementIds: [], + startBinding: null, + endBinding: null, + points: [ + [0, 0], + [128.84193229844433, 0], + ], + lastCommittedPoint: null, + startArrowhead: null, + endArrowhead: null, + }, + { + type: "ellipse", + version: 282, + versionNonce: 1198409567, + isDeleted: false, + id: "FHX0ZsIzUUfYPJqrZ8Lso", + fillStyle: "solid", + strokeWidth: 1, + strokeStyle: "solid", + roughness: 0, + opacity: 100, + angle: 0, + x: -589.5016643209792, + y: 348.2514049106367, + strokeColor: "#000000", + backgroundColor: "#fa5252", + width: 5.001953125, + height: 5.001953125, + seed: 387857791, + groupIds: ["TC0RSM64Cxmu17MlE12-o"], + strokeSharpness: "sharp", + boundElementIds: [], + }, + { + type: "ellipse", + version: 327, + versionNonce: 1661182481, + isDeleted: false, + id: "ugVRR0f_uDOjrllO10yAs", + fillStyle: "solid", + strokeWidth: 1, + strokeStyle: "solid", + roughness: 0, + opacity: 100, + angle: 0, + x: -579.2389690084792, + y: 348.2514049106367, + strokeColor: "#000000", + backgroundColor: "#fab005", + width: 5.001953125, + height: 5.001953125, + seed: 1486370207, + groupIds: ["TC0RSM64Cxmu17MlE12-o"], + strokeSharpness: "sharp", + boundElementIds: [], + }, + { + type: "ellipse", + version: 385, + versionNonce: 2047607679, + isDeleted: false, + id: "SBzNA0Sn-ou4QGxotj0SB", + fillStyle: "solid", + strokeWidth: 1, + strokeStyle: "solid", + roughness: 0, + opacity: 100, + angle: 0, + x: -568.525552542133, + y: 348.7021260644829, + strokeColor: "#000000", + backgroundColor: "#40c057", + width: 5.001953125, + height: 5.001953125, + seed: 610150847, + groupIds: ["TC0RSM64Cxmu17MlE12-o"], + strokeSharpness: "sharp", + boundElementIds: [], + }, + { + type: "ellipse", + version: 664, + versionNonce: 2135373809, + isDeleted: false, + id: "VKcfbELTVlyJ90m0bGsj0", + fillStyle: "solid", + strokeWidth: 1, + strokeStyle: "solid", + roughness: 1, + opacity: 90, + angle: 0, + x: -552.4984915525058, + y: 364.75449494249875, + strokeColor: "#000000", + backgroundColor: "#04aaf7", + width: 42.72020253937572, + height: 42.72020253937572, + seed: 144280593, + groupIds: ["TC0RSM64Cxmu17MlE12-o"], + strokeSharpness: "sharp", + boundElementIds: [], + }, + { + type: "draw", + version: 1281, + versionNonce: 1708997535, + isDeleted: false, + id: "zWrJVrKnkF5K8iXNxi9Aa", + fillStyle: "solid", + strokeWidth: 1, + strokeStyle: "solid", + roughness: 0, + opacity: 100, + angle: 0, + x: -530.327851842306, + y: 378.9357912947449, + strokeColor: "#087f5b", + backgroundColor: "#40c057", + width: 28.226201983883442, + height: 24.44112284281997, + seed: 29167967, + groupIds: ["TC0RSM64Cxmu17MlE12-o"], + strokeSharpness: "round", + boundElementIds: [], + startBinding: null, + endBinding: null, + points: [ + [4.907524351775825, 2.043055712211473], + [3.0769604829149455, 1.6284171290602836], + [-2.66472604008681, -4.228569719133945], + [-6.450168189798415, -2.304577297733668], + [-7.704241049212052, 4.416384506147983], + [-6.361372181234263, 8.783101300254884], + [-12.516984713388897, 10.9291595737194], + [-12.295677738198286, 15.686226498407976], + [-7.473371426945252, 15.393030178104425], + [-3.787654025313423, 11.5207568827343], + [1.2873793872375165, 19.910682356036197], + [4.492232250183542, 20.212553123686025], + [1.1302787567009416, 6.843494873631317], + [6.294108177816019, 6.390688722156585], + [8.070028349098962, 7.910451897221202], + [14.143675334886687, 7.910451897221202], + [15.709217270494545, 2.6780252579576427], + [9.128749989671498, 3.1533849725326517], + [10.393751588600717, -3.7167773257046695], + [7.380151667177483, -3.30213874255348], + [4.669824267311791, 1.1200945145694894], + [4.907524351775825, 2.043055712211473], + ], + lastCommittedPoint: null, + startArrowhead: null, + endArrowhead: null, + }, + { + type: "line", + version: 701, + versionNonce: 1583157713, + isDeleted: false, + id: "LX6kTl9A8K36ld2MEV4tI", + fillStyle: "solid", + strokeWidth: 1, + strokeStyle: "solid", + roughness: 1, + opacity: 90, + angle: 0, + x: -551.4394290784783, + y: 385.71736850567976, + strokeColor: "#000000", + backgroundColor: "#99bcff", + width: 42.095115772272244, + height: 0, + seed: 1443027377, + groupIds: ["TC0RSM64Cxmu17MlE12-o"], + strokeSharpness: "round", + boundElementIds: [], + startBinding: null, + endBinding: null, + points: [ + [0, 0], + [42.095115772272244, 0], + ], + lastCommittedPoint: null, + startArrowhead: null, + endArrowhead: null, + }, + { + type: "line", + version: 2908, + versionNonce: 252866495, + isDeleted: false, + id: "SHmV_QtcwxIE-peI_QOX1", + fillStyle: "solid", + strokeWidth: 1, + strokeStyle: "solid", + roughness: 0, + opacity: 90, + angle: 0, + x: -546.3441000487039, + y: 372.6245229061568, + strokeColor: "#000000", + backgroundColor: "#99bcff", + width: 29.31860660384862, + height: 5.711199931375845, + seed: 244310513, + groupIds: ["TC0RSM64Cxmu17MlE12-o"], + strokeSharpness: "round", + boundElementIds: [], + startBinding: null, + endBinding: null, + points: [ + [0, -2.341683327443203], + [0.7724193963150375, -0.06510358900749044], + [4.103544916365185, 1.84492589414448], + [8.536129150893453, 3.0016281808630056], + [15.480325949120388, 3.1070332647092163], + [23.583965316012858, 2.3706131055211244], + [28.316582284417855, -0.3084668090492442], + [29.31860660384862, -2.6041666666666288], + ], + lastCommittedPoint: null, + startArrowhead: null, + endArrowhead: null, + }, + { + type: "ellipse", + version: 725, + versionNonce: 1969008561, + isDeleted: false, + id: "PKRg6SqIetkWIgRqBAnDY", + fillStyle: "solid", + strokeWidth: 1, + strokeStyle: "solid", + roughness: 1, + opacity: 90, + angle: 0, + x: -538.2701841247845, + y: 363.37196531290607, + strokeColor: "#000000", + backgroundColor: "transparent", + width: 15.528434353116108, + height: 44.82230388130942, + seed: 683572113, + groupIds: ["TC0RSM64Cxmu17MlE12-o"], + strokeSharpness: "sharp", + boundElementIds: [], + }, + { + type: "line", + version: 3113, + versionNonce: 533471199, + isDeleted: false, + id: "HrelUAgvfxi_4v8MyL_iT", + fillStyle: "solid", + strokeWidth: 1, + strokeStyle: "solid", + roughness: 0, + opacity: 90, + angle: 0, + x: -544.828148539078, + y: 402.0199316371545, + strokeColor: "#000000", + backgroundColor: "#99bcff", + width: 29.31860660384862, + height: 5.896061363392446, + seed: 318798801, + groupIds: ["TC0RSM64Cxmu17MlE12-o"], + strokeSharpness: "round", + boundElementIds: [], + startBinding: null, + endBinding: null, + points: [ + [0, 0], + [4.103544916365185, -4.322122351104391], + [8.536129150893453, -5.516265043290966], + [15.480325949120388, -5.625081903117008], + [23.583965316012858, -4.8648251269605955], + [28.316582284417855, -2.0990281379671547], + [29.31860660384862, 0.2709794602754383], + ], + lastCommittedPoint: null, + startArrowhead: null, + endArrowhead: null, + }, + ], + [ + { + type: "rectangle", + version: 685, + versionNonce: 706399231, + isDeleted: false, + id: "dba8s5bDYEnF20oGn2a8b", + fillStyle: "solid", + strokeWidth: 1, + strokeStyle: "solid", + roughness: 1, + opacity: 100, + angle: 0, + x: -715.1043446306466, + y: 330.4231266309418, + strokeColor: "#000000", + backgroundColor: "#ced4da", + width: 70.81644178885557, + height: 108.30428902193904, + seed: 1914896753, + groupIds: ["GMZ-NW9lG7c1AtfBInZ0n"], + strokeSharpness: "sharp", + boundElementIds: [], + }, + { + type: "rectangle", + version: 835, + versionNonce: 851916657, + isDeleted: false, + id: "3HxCT4mFZF-jJ6m9pyOCt", + fillStyle: "solid", + strokeWidth: 1, + strokeStyle: "solid", + roughness: 1, + opacity: 100, + angle: 0, + x: -706.996640540555, + y: 338.68030798133873, + strokeColor: "#000000", + backgroundColor: "#fff", + width: 55.801163535143246, + height: 82.83278895375764, + seed: 1306468145, + groupIds: ["GMZ-NW9lG7c1AtfBInZ0n"], + strokeSharpness: "sharp", + boundElementIds: [], + }, + { + type: "ellipse", + version: 881, + versionNonce: 704574495, + isDeleted: false, + id: "xX9mcMHy_0Bn-D0UAMyCc", + fillStyle: "solid", + strokeWidth: 1, + strokeStyle: "solid", + roughness: 1, + opacity: 100, + angle: 0, + x: -684.8099707762028, + y: 425.0579911039235, + strokeColor: "#000000", + backgroundColor: "#fff", + width: 11.427824006438863, + height: 11.427824006438863, + seed: 93422161, + groupIds: ["GMZ-NW9lG7c1AtfBInZ0n"], + strokeSharpness: "sharp", + boundElementIds: [], + }, + { + type: "rectangle", + version: 528, + versionNonce: 816914769, + isDeleted: false, + id: "h60d2h6UPYkopTlW_XEs4", + fillStyle: "cross-hatch", + strokeWidth: 1, + strokeStyle: "solid", + roughness: 1, + opacity: 100, + angle: 0, + x: -698.7169501405845, + y: 349.2244646574789, + strokeColor: "#000000", + backgroundColor: "#fab005", + width: 39.2417827352022, + height: 19.889460471185775, + seed: 11646495, + groupIds: ["GMZ-NW9lG7c1AtfBInZ0n"], + strokeSharpness: "sharp", + boundElementIds: [], + }, + { + type: "rectangle", + version: 570, + versionNonce: 1198069823, + isDeleted: false, + id: "bZbx28BjXM33JV1UezMcH", + fillStyle: "cross-hatch", + strokeWidth: 1, + strokeStyle: "solid", + roughness: 1, + opacity: 100, + angle: 0, + x: -698.7169501405845, + y: 384.7822247024333, + strokeColor: "#000000", + backgroundColor: "#fab005", + width: 39.2417827352022, + height: 19.889460471185775, + seed: 291717649, + groupIds: ["GMZ-NW9lG7c1AtfBInZ0n"], + strokeSharpness: "sharp", + boundElementIds: [], + }, + ], +]; + +const initialData = { + libraryItems, +}; +export default initialData; diff --git a/dev-docs/src/pages/index.js b/dev-docs/src/pages/index.js deleted file mode 100644 index 9437c6c7..00000000 --- a/dev-docs/src/pages/index.js +++ /dev/null @@ -1,42 +0,0 @@ -import React from "react"; -import clsx from "clsx"; -import Layout from "@theme/Layout"; -import Link from "@docusaurus/Link"; -import useDocusaurusContext from "@docusaurus/useDocusaurusContext"; -import styles from "./index.module.css"; -import HomepageFeatures from "@site/src/components/Homepage"; - -function HomepageHeader() { - const { siteConfig } = useDocusaurusContext(); - return ( -
-
-

{siteConfig.title}

-

{siteConfig.tagline}

-
- - Get started - -
-
-
- ); -} - -export default function Home() { - const { siteConfig } = useDocusaurusContext(); - return ( - - -
- -
-
- ); -} diff --git a/dev-docs/src/pages/index.tsx b/dev-docs/src/pages/index.tsx index 9437c6c7..f35c2e4a 100644 --- a/dev-docs/src/pages/index.tsx +++ b/dev-docs/src/pages/index.tsx @@ -14,10 +14,7 @@ function HomepageHeader() {

{siteConfig.title}

{siteConfig.tagline}

- + Get started
@@ -27,12 +24,8 @@ function HomepageHeader() { } export default function Home() { - const { siteConfig } = useDocusaurusContext(); return ( - +
diff --git a/dev-docs/src/theme/MDXComponents.js b/dev-docs/src/theme/MDXComponents.js new file mode 100644 index 00000000..35234301 --- /dev/null +++ b/dev-docs/src/theme/MDXComponents.js @@ -0,0 +1,11 @@ +// Import the original mapper +import MDXComponents from "@theme-original/MDXComponents"; +import Highlight from "@site/src/components/Highlight"; + +export default { + // Re-use the default mapping + ...MDXComponents, + // Map the "highlight" tag to our component! + // `Highlight` will receive all props that were passed to `highlight` in MDX + highlight: Highlight, +}; diff --git a/dev-docs/src/theme/ReactLiveScope/index.js b/dev-docs/src/theme/ReactLiveScope/index.js new file mode 100644 index 00000000..a282ad6f --- /dev/null +++ b/dev-docs/src/theme/ReactLiveScope/index.js @@ -0,0 +1,29 @@ +import React from "react"; +import ExecutionEnvironment from "@docusaurus/ExecutionEnvironment"; +import initialData from "@site/src/initialData"; +import { useColorMode } from "@docusaurus/theme-common"; + +let ExcalidrawComp = {}; +if (ExecutionEnvironment.canUseDOM) { + ExcalidrawComp = require("@excalidraw/excalidraw"); +} +const Excalidraw = React.forwardRef((props, ref) => { + const { colorMode } = useColorMode(); + return ; +}); +// Add react-live imports you need here +const ExcalidrawScope = { + React, + ...React, + Excalidraw, + Footer: ExcalidrawComp.Footer, + useDevice: ExcalidrawComp.useDevice, + MainMenu: ExcalidrawComp.MainMenu, + WelcomeScreen: ExcalidrawComp.WelcomeScreen, + LiveCollaborationTrigger: ExcalidrawComp.LiveCollaborationTrigger, + Sidebar: ExcalidrawComp.Sidebar, + exportToCanvas: ExcalidrawComp.exportToCanvas, + initialData, +}; + +export default ExcalidrawScope; diff --git a/dev-docs/static/img/doremon.png b/dev-docs/static/img/doremon.png new file mode 100644 index 0000000000000000000000000000000000000000..36208a4665fb89e44247292e92a1143a52cdf38c GIT binary patch literal 201946 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

ET}b@ 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%0A4yyC9@)DkNi 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 B*Tet- literal 0 HcmV?d00001 diff --git a/dev-docs/static/img/pika.jpeg b/dev-docs/static/img/pika.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..455ed52a638a0b060fba54892835e8923d671bfd GIT binary patch literal 6250 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 VUN2En%9H58I{wQ+nJD}Jn*fI`qs0IK literal 0 HcmV?d00001 diff --git a/src/packages/excalidraw/welcome-screen-overview.png b/dev-docs/static/img/welcome-screen-overview.png similarity index 100% rename from src/packages/excalidraw/welcome-screen-overview.png rename to dev-docs/static/img/welcome-screen-overview.png diff --git a/dev-docs/yarn.lock b/dev-docs/yarn.lock index 9b9337c9..5aaa9689 100644 --- a/dev-docs/yarn.lock +++ b/dev-docs/yarn.lock @@ -1191,10 +1191,10 @@ "@docsearch/css" "3.1.1" algoliasearch "^4.0.0" -"@docusaurus/core@2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-2.0.0-rc.1.tgz#828d93d241171565d8947a9ab404091e04759141" - integrity sha512-b9FX0Z+EddfQ6wAiNh+Wx4fysKfcvEcWJrZ5USROn3C+EVU5P4luaa8mwWK//O+hTwD9ur7/A44IZ/tWCTAoLQ== +"@docusaurus/core@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-2.2.0.tgz#64c9ee31502c23b93c869f8188f73afaf5fd4867" + integrity sha512-Vd6XOluKQqzG12fEs9prJgDtyn6DPok9vmUWDR2E6/nV5Fl9SVkhEQOBxwObjk3kQh7OY7vguFaLh0jqdApWsA== dependencies: "@babel/core" "^7.18.6" "@babel/generator" "^7.18.7" @@ -1206,13 +1206,13 @@ "@babel/runtime" "^7.18.6" "@babel/runtime-corejs3" "^7.18.6" "@babel/traverse" "^7.18.8" - "@docusaurus/cssnano-preset" "2.0.0-rc.1" - "@docusaurus/logger" "2.0.0-rc.1" - "@docusaurus/mdx-loader" "2.0.0-rc.1" + "@docusaurus/cssnano-preset" "2.2.0" + "@docusaurus/logger" "2.2.0" + "@docusaurus/mdx-loader" "2.2.0" "@docusaurus/react-loadable" "5.5.2" - "@docusaurus/utils" "2.0.0-rc.1" - "@docusaurus/utils-common" "2.0.0-rc.1" - "@docusaurus/utils-validation" "2.0.0-rc.1" + "@docusaurus/utils" "2.2.0" + "@docusaurus/utils-common" "2.2.0" + "@docusaurus/utils-validation" "2.2.0" "@slorber/static-site-generator-webpack-plugin" "^4.0.7" "@svgr/webpack" "^6.2.1" autoprefixer "^10.4.7" @@ -1268,33 +1268,33 @@ webpack-merge "^5.8.0" webpackbar "^5.0.2" -"@docusaurus/cssnano-preset@2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.0.0-rc.1.tgz#76bbd7f6912779a0667f8f2fd8fc1a05618a6148" - integrity sha512-9/KmQvF+eTlMqUqG6UcXbRgxbGed/8bQInXuKEs+95/jI6jO/3xSzuRwuHHHP0naUvSVWjnNI9jngPrQerXE5w== +"@docusaurus/cssnano-preset@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.2.0.tgz#fc05044659051ae74ab4482afcf4a9936e81d523" + integrity sha512-mAAwCo4n66TMWBH1kXnHVZsakW9VAXJzTO4yZukuL3ro4F+JtkMwKfh42EG75K/J/YIFQG5I/Bzy0UH/hFxaTg== dependencies: cssnano-preset-advanced "^5.3.8" postcss "^8.4.14" postcss-sort-media-queries "^4.2.1" tslib "^2.4.0" -"@docusaurus/logger@2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-2.0.0-rc.1.tgz#db95e9b15bc243695830a5b791c0eff705ef1b54" - integrity sha512-daa3g+SXuO9K60PVMiSUmDEK9Vro+Ed7i7uF8CH6QQJLcNZy/zJc0Xz62eH7ip1x77fmeb6Rg4Us1TqTFc9AbQ== +"@docusaurus/logger@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-2.2.0.tgz#ea2f7feda7b8675485933b87f06d9c976d17423f" + integrity sha512-DF3j1cA5y2nNsu/vk8AG7xwpZu6f5MKkPPMaaIbgXLnWGfm6+wkOeW7kNrxnM95YOhKUkJUophX69nGUnLsm0A== dependencies: chalk "^4.1.2" tslib "^2.4.0" -"@docusaurus/mdx-loader@2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-2.0.0-rc.1.tgz#e78d7d416aacc289f2427c5ccdb9145820acb0cb" - integrity sha512-8Fg0c/ceu39knmr7w0dutm7gq3YxKYCqWVS2cB/cPATzChCCNH/AGLfBT6sz/Z4tjVXE+NyREq2pfOFvkhjVXg== +"@docusaurus/mdx-loader@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-2.2.0.tgz#fd558f429e5d9403d284bd4214e54d9768b041a0" + integrity sha512-X2bzo3T0jW0VhUU+XdQofcEeozXOTmKQMvc8tUnWRdTnCvj4XEcBVdC3g+/jftceluiwSTNRAX4VBOJdNt18jA== dependencies: "@babel/parser" "^7.18.8" "@babel/traverse" "^7.18.8" - "@docusaurus/logger" "2.0.0-rc.1" - "@docusaurus/utils" "2.0.0-rc.1" + "@docusaurus/logger" "2.2.0" + "@docusaurus/utils" "2.2.0" "@mdx-js/mdx" "^1.6.22" escape-html "^1.0.3" file-loader "^6.2.0" @@ -1323,18 +1323,32 @@ react-helmet-async "*" react-loadable "npm:@docusaurus/react-loadable@5.5.2" -"@docusaurus/plugin-content-blog@2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.0.0-rc.1.tgz#8ae5d5ec2da08c583a057bf2754a5b9278b3eb08" - integrity sha512-BVVrAGZujpjS/0rarY2o24rlylRRh2NZuM65kg0JNkkViF79SeEHsepog7IuHyoqGWPm1N/I7LpEp7k+gowZzQ== +"@docusaurus/module-type-aliases@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-2.2.0.tgz#1e23e54a1bbb6fde1961e4fa395b1b69f4803ba5" + integrity sha512-wDGW4IHKoOr9YuJgy7uYuKWrDrSpsUSDHLZnWQYM9fN7D5EpSmYHjFruUpKWVyxLpD/Wh0rW8hYZwdjJIQUQCQ== dependencies: - "@docusaurus/core" "2.0.0-rc.1" - "@docusaurus/logger" "2.0.0-rc.1" - "@docusaurus/mdx-loader" "2.0.0-rc.1" - "@docusaurus/types" "2.0.0-rc.1" - "@docusaurus/utils" "2.0.0-rc.1" - "@docusaurus/utils-common" "2.0.0-rc.1" - "@docusaurus/utils-validation" "2.0.0-rc.1" + "@docusaurus/react-loadable" "5.5.2" + "@docusaurus/types" "2.2.0" + "@types/history" "^4.7.11" + "@types/react" "*" + "@types/react-router-config" "*" + "@types/react-router-dom" "*" + react-helmet-async "*" + react-loadable "npm:@docusaurus/react-loadable@5.5.2" + +"@docusaurus/plugin-content-blog@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.2.0.tgz#dc55982e76771f4e678ac10e26d10e1da2011dc1" + integrity sha512-0mWBinEh0a5J2+8ZJXJXbrCk1tSTNf7Nm4tYAl5h2/xx+PvH/Bnu0V+7mMljYm/1QlDYALNIIaT/JcoZQFUN3w== + dependencies: + "@docusaurus/core" "2.2.0" + "@docusaurus/logger" "2.2.0" + "@docusaurus/mdx-loader" "2.2.0" + "@docusaurus/types" "2.2.0" + "@docusaurus/utils" "2.2.0" + "@docusaurus/utils-common" "2.2.0" + "@docusaurus/utils-validation" "2.2.0" cheerio "^1.0.0-rc.12" feed "^4.2.2" fs-extra "^10.1.0" @@ -1345,18 +1359,18 @@ utility-types "^3.10.0" webpack "^5.73.0" -"@docusaurus/plugin-content-docs@2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.0.0-rc.1.tgz#2dda88166bf21b0eeb3821ef748059b20c8c49f7" - integrity sha512-Yk5Hu6uaw3tRplzJnbDygwRhmZ3PCzEXD4SJpBA6cPC73ylfqOEh6qhiU+BWhMTtDXNhY+athk5Kycfk3DW1aQ== - dependencies: - "@docusaurus/core" "2.0.0-rc.1" - "@docusaurus/logger" "2.0.0-rc.1" - "@docusaurus/mdx-loader" "2.0.0-rc.1" - "@docusaurus/module-type-aliases" "2.0.0-rc.1" - "@docusaurus/types" "2.0.0-rc.1" - "@docusaurus/utils" "2.0.0-rc.1" - "@docusaurus/utils-validation" "2.0.0-rc.1" +"@docusaurus/plugin-content-docs@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.2.0.tgz#0fcb85226fcdb80dc1e2d4a36ef442a650dcc84d" + integrity sha512-BOazBR0XjzsHE+2K1wpNxz5QZmrJgmm3+0Re0EVPYFGW8qndCWGNtXW/0lGKhecVPML8yyFeAmnUCIs7xM2wPw== + dependencies: + "@docusaurus/core" "2.2.0" + "@docusaurus/logger" "2.2.0" + "@docusaurus/mdx-loader" "2.2.0" + "@docusaurus/module-type-aliases" "2.2.0" + "@docusaurus/types" "2.2.0" + "@docusaurus/utils" "2.2.0" + "@docusaurus/utils-validation" "2.2.0" "@types/react-router-config" "^5.0.6" combine-promises "^1.1.0" fs-extra "^10.1.0" @@ -1367,84 +1381,84 @@ utility-types "^3.10.0" webpack "^5.73.0" -"@docusaurus/plugin-content-pages@2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.0.0-rc.1.tgz#2be82f53d6c77e6aa66787726c30dc60b210e6f8" - integrity sha512-FdO79WC5hfWDQu3/CTFLRQzTNc0e5n+HNzavm2MNkSzGV08BFJ6RAkbPbtra5CWef+6iXZav6D/tzv2jDPvLzA== - dependencies: - "@docusaurus/core" "2.0.0-rc.1" - "@docusaurus/mdx-loader" "2.0.0-rc.1" - "@docusaurus/types" "2.0.0-rc.1" - "@docusaurus/utils" "2.0.0-rc.1" - "@docusaurus/utils-validation" "2.0.0-rc.1" +"@docusaurus/plugin-content-pages@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.2.0.tgz#e3f40408787bbe229545dd50595f87e1393bc3ae" + integrity sha512-+OTK3FQHk5WMvdelz8v19PbEbx+CNT6VSpx7nVOvMNs5yJCKvmqBJBQ2ZSxROxhVDYn+CZOlmyrC56NSXzHf6g== + dependencies: + "@docusaurus/core" "2.2.0" + "@docusaurus/mdx-loader" "2.2.0" + "@docusaurus/types" "2.2.0" + "@docusaurus/utils" "2.2.0" + "@docusaurus/utils-validation" "2.2.0" fs-extra "^10.1.0" tslib "^2.4.0" webpack "^5.73.0" -"@docusaurus/plugin-debug@2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-2.0.0-rc.1.tgz#73c06ad08d66810941e456d50b07be008f5235cb" - integrity sha512-aOsyYrPMbnsyqHwsVZ+0frrMRtnYqm4eaJpG4sC/6LYAJ07IDRQ9j3GOku2dKr5GsFK1Vx7VlE6ZLwe0MaGstg== +"@docusaurus/plugin-debug@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-2.2.0.tgz#b38741d2c492f405fee01ee0ef2e0029cedb689a" + integrity sha512-p9vOep8+7OVl6r/NREEYxf4HMAjV8JMYJ7Bos5fCFO0Wyi9AZEo0sCTliRd7R8+dlJXZEgcngSdxAUo/Q+CJow== dependencies: - "@docusaurus/core" "2.0.0-rc.1" - "@docusaurus/types" "2.0.0-rc.1" - "@docusaurus/utils" "2.0.0-rc.1" + "@docusaurus/core" "2.2.0" + "@docusaurus/types" "2.2.0" + "@docusaurus/utils" "2.2.0" fs-extra "^10.1.0" react-json-view "^1.21.3" tslib "^2.4.0" -"@docusaurus/plugin-google-analytics@2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.0.0-rc.1.tgz#0136cc7534573ca56e023178ec2bda5c1e89ce71" - integrity sha512-f+G8z5OJWfg5QqWDLIdcN2SDoK5J5Gg8HMrqCI6Pfl+rxPb5I1niA+/UkAM+kMCpnekvhSt5AWz2fgkRenkPLA== +"@docusaurus/plugin-google-analytics@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.2.0.tgz#63c7137eff5a1208d2059fea04b5207c037d7954" + integrity sha512-+eZVVxVeEnV5nVQJdey9ZsfyEVMls6VyWTIj8SmX0k5EbqGvnIfET+J2pYEuKQnDIHxy+syRMoRM6AHXdHYGIg== dependencies: - "@docusaurus/core" "2.0.0-rc.1" - "@docusaurus/types" "2.0.0-rc.1" - "@docusaurus/utils-validation" "2.0.0-rc.1" + "@docusaurus/core" "2.2.0" + "@docusaurus/types" "2.2.0" + "@docusaurus/utils-validation" "2.2.0" tslib "^2.4.0" -"@docusaurus/plugin-google-gtag@2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.0.0-rc.1.tgz#61698fdc41a4ace912fb8f6c834efd288edad3c0" - integrity sha512-yE1Et9hhhX9qMRnMJzpNq0854qIYiSEc2dZaXNk537HN7Q0rKkr/YONUHz2iqNYwPX2hGOY4LdpTxlMP88uVhA== +"@docusaurus/plugin-google-gtag@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.2.0.tgz#7b086d169ac5fe9a88aca10ab0fd2bf00c6c6b12" + integrity sha512-6SOgczP/dYdkqUMGTRqgxAS1eTp6MnJDAQMy8VCF1QKbWZmlkx4agHDexihqmYyCujTYHqDAhm1hV26EET54NQ== dependencies: - "@docusaurus/core" "2.0.0-rc.1" - "@docusaurus/types" "2.0.0-rc.1" - "@docusaurus/utils-validation" "2.0.0-rc.1" + "@docusaurus/core" "2.2.0" + "@docusaurus/types" "2.2.0" + "@docusaurus/utils-validation" "2.2.0" tslib "^2.4.0" -"@docusaurus/plugin-sitemap@2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.0.0-rc.1.tgz#0b638e774b253d90e9f2d11663e961250f557bc4" - integrity sha512-5JmbNpssUF03odFM4ArvIsrO9bv7HnAJ0VtefXhh0WBpaFs8NgI3rTkCTFimvtRQjDR9U2bh23fXz2vjQQz6oA== - dependencies: - "@docusaurus/core" "2.0.0-rc.1" - "@docusaurus/logger" "2.0.0-rc.1" - "@docusaurus/types" "2.0.0-rc.1" - "@docusaurus/utils" "2.0.0-rc.1" - "@docusaurus/utils-common" "2.0.0-rc.1" - "@docusaurus/utils-validation" "2.0.0-rc.1" +"@docusaurus/plugin-sitemap@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.2.0.tgz#876da60937886032d63143253d420db6a4b34773" + integrity sha512-0jAmyRDN/aI265CbWZNZuQpFqiZuo+5otk2MylU9iVrz/4J7gSc+ZJ9cy4EHrEsW7PV8s1w18hIEsmcA1YgkKg== + dependencies: + "@docusaurus/core" "2.2.0" + "@docusaurus/logger" "2.2.0" + "@docusaurus/types" "2.2.0" + "@docusaurus/utils" "2.2.0" + "@docusaurus/utils-common" "2.2.0" + "@docusaurus/utils-validation" "2.2.0" fs-extra "^10.1.0" sitemap "^7.1.1" tslib "^2.4.0" -"@docusaurus/preset-classic@2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-2.0.0-rc.1.tgz#5e5b1cf80b3dd4e2c3f824c78a111f105858d853" - integrity sha512-5jjTVZkhArjyoNHwCI9x4PSG0zPmBJILjZLVrxPcHpm/K0ltkYcp6J3GxYpf5EbMuOh5+yCWM63cSshGcNOo3Q== - dependencies: - "@docusaurus/core" "2.0.0-rc.1" - "@docusaurus/plugin-content-blog" "2.0.0-rc.1" - "@docusaurus/plugin-content-docs" "2.0.0-rc.1" - "@docusaurus/plugin-content-pages" "2.0.0-rc.1" - "@docusaurus/plugin-debug" "2.0.0-rc.1" - "@docusaurus/plugin-google-analytics" "2.0.0-rc.1" - "@docusaurus/plugin-google-gtag" "2.0.0-rc.1" - "@docusaurus/plugin-sitemap" "2.0.0-rc.1" - "@docusaurus/theme-classic" "2.0.0-rc.1" - "@docusaurus/theme-common" "2.0.0-rc.1" - "@docusaurus/theme-search-algolia" "2.0.0-rc.1" - "@docusaurus/types" "2.0.0-rc.1" +"@docusaurus/preset-classic@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-2.2.0.tgz#bece5a043eeb74430f7c6c7510000b9c43669eb7" + integrity sha512-yKIWPGNx7BT8v2wjFIWvYrS+nvN04W+UameSFf8lEiJk6pss0kL6SG2MRvyULiI3BDxH+tj6qe02ncpSPGwumg== + dependencies: + "@docusaurus/core" "2.2.0" + "@docusaurus/plugin-content-blog" "2.2.0" + "@docusaurus/plugin-content-docs" "2.2.0" + "@docusaurus/plugin-content-pages" "2.2.0" + "@docusaurus/plugin-debug" "2.2.0" + "@docusaurus/plugin-google-analytics" "2.2.0" + "@docusaurus/plugin-google-gtag" "2.2.0" + "@docusaurus/plugin-sitemap" "2.2.0" + "@docusaurus/theme-classic" "2.2.0" + "@docusaurus/theme-common" "2.2.0" + "@docusaurus/theme-search-algolia" "2.2.0" + "@docusaurus/types" "2.2.0" "@docusaurus/react-loadable@5.5.2", "react-loadable@npm:@docusaurus/react-loadable@5.5.2": version "5.5.2" @@ -1454,23 +1468,23 @@ "@types/react" "*" prop-types "^15.6.2" -"@docusaurus/theme-classic@2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-2.0.0-rc.1.tgz#4ab30745e6b03b0f277837debae786a0a83aee6a" - integrity sha512-qNiz7ieeq3AC+V8TbW6S63pWLJph1CbzWDDPTqxDLHgA8VQaNaSmJM8S92pH+yKALRb9u14ogjjYYc75Nj2JmQ== - dependencies: - "@docusaurus/core" "2.0.0-rc.1" - "@docusaurus/mdx-loader" "2.0.0-rc.1" - "@docusaurus/module-type-aliases" "2.0.0-rc.1" - "@docusaurus/plugin-content-blog" "2.0.0-rc.1" - "@docusaurus/plugin-content-docs" "2.0.0-rc.1" - "@docusaurus/plugin-content-pages" "2.0.0-rc.1" - "@docusaurus/theme-common" "2.0.0-rc.1" - "@docusaurus/theme-translations" "2.0.0-rc.1" - "@docusaurus/types" "2.0.0-rc.1" - "@docusaurus/utils" "2.0.0-rc.1" - "@docusaurus/utils-common" "2.0.0-rc.1" - "@docusaurus/utils-validation" "2.0.0-rc.1" +"@docusaurus/theme-classic@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-2.2.0.tgz#a048bb1bc077dee74b28bec25f4b84b481863742" + integrity sha512-kjbg/qJPwZ6H1CU/i9d4l/LcFgnuzeiGgMQlt6yPqKo0SOJIBMPuz7Rnu3r/WWbZFPi//o8acclacOzmXdUUEg== + dependencies: + "@docusaurus/core" "2.2.0" + "@docusaurus/mdx-loader" "2.2.0" + "@docusaurus/module-type-aliases" "2.2.0" + "@docusaurus/plugin-content-blog" "2.2.0" + "@docusaurus/plugin-content-docs" "2.2.0" + "@docusaurus/plugin-content-pages" "2.2.0" + "@docusaurus/theme-common" "2.2.0" + "@docusaurus/theme-translations" "2.2.0" + "@docusaurus/types" "2.2.0" + "@docusaurus/utils" "2.2.0" + "@docusaurus/utils-common" "2.2.0" + "@docusaurus/utils-validation" "2.2.0" "@mdx-js/react" "^1.6.22" clsx "^1.2.1" copy-text-to-clipboard "^3.0.1" @@ -1485,17 +1499,17 @@ tslib "^2.4.0" utility-types "^3.10.0" -"@docusaurus/theme-common@2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-2.0.0-rc.1.tgz#ea5d9732a16b03b488555e50107161bfa2abad98" - integrity sha512-1r9ZLKD9SeoCYVzWzcdR79Dia4ANlrlRjNl6uzETOEybjK6FF7yEa9Yra8EJcOCbi3coyYz5xFh/r1YHFTFHug== - dependencies: - "@docusaurus/mdx-loader" "2.0.0-rc.1" - "@docusaurus/module-type-aliases" "2.0.0-rc.1" - "@docusaurus/plugin-content-blog" "2.0.0-rc.1" - "@docusaurus/plugin-content-docs" "2.0.0-rc.1" - "@docusaurus/plugin-content-pages" "2.0.0-rc.1" - "@docusaurus/utils" "2.0.0-rc.1" +"@docusaurus/theme-common@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-2.2.0.tgz#2303498d80448aafdd588b597ce9d6f4cfa930e4" + integrity sha512-R8BnDjYoN90DCL75gP7qYQfSjyitXuP9TdzgsKDmSFPNyrdE3twtPNa2dIN+h+p/pr+PagfxwWbd6dn722A1Dw== + dependencies: + "@docusaurus/mdx-loader" "2.2.0" + "@docusaurus/module-type-aliases" "2.2.0" + "@docusaurus/plugin-content-blog" "2.2.0" + "@docusaurus/plugin-content-docs" "2.2.0" + "@docusaurus/plugin-content-pages" "2.2.0" + "@docusaurus/utils" "2.2.0" "@types/history" "^4.7.11" "@types/react" "*" "@types/react-router-config" "*" @@ -1505,19 +1519,34 @@ tslib "^2.4.0" utility-types "^3.10.0" -"@docusaurus/theme-search-algolia@2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.0.0-rc.1.tgz#e78c0aeaea6a3717ae3a6ecd75a8652bd7c8e974" - integrity sha512-H5yq6V/B4qo6GZrDKMbeSpk3T9e9K2MliDzLonRu0w3QHW9orVGe0c/lZvRbGlDZjnsOo7XGddhXXIDWGwnpaA== +"@docusaurus/theme-live-codeblock@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-live-codeblock/-/theme-live-codeblock-2.2.0.tgz#a507e496a1a74d261beee30ad072e4341310809a" + integrity sha512-4XRFxfZGcyqmbLmNbnbZ2ZOsoY7FYCJUZKsYW5yzhZYjmjGg7lkdJH5trt9otUoKBsZopBpPWvcDZwCu1SENYg== + dependencies: + "@docusaurus/core" "2.2.0" + "@docusaurus/theme-common" "2.2.0" + "@docusaurus/theme-translations" "2.2.0" + "@docusaurus/utils-validation" "2.2.0" + "@philpl/buble" "^0.19.7" + clsx "^1.2.1" + fs-extra "^10.1.0" + react-live "2.2.3" + tslib "^2.4.0" + +"@docusaurus/theme-search-algolia@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.2.0.tgz#77fd9f7a600917e6024fe3ac7fb6cfdf2ce84737" + integrity sha512-2h38B0tqlxgR2FZ9LpAkGrpDWVdXZ7vltfmTdX+4RsDs3A7khiNsmZB+x/x6sA4+G2V2CvrsPMlsYBy5X+cY1w== dependencies: "@docsearch/react" "^3.1.1" - "@docusaurus/core" "2.0.0-rc.1" - "@docusaurus/logger" "2.0.0-rc.1" - "@docusaurus/plugin-content-docs" "2.0.0-rc.1" - "@docusaurus/theme-common" "2.0.0-rc.1" - "@docusaurus/theme-translations" "2.0.0-rc.1" - "@docusaurus/utils" "2.0.0-rc.1" - "@docusaurus/utils-validation" "2.0.0-rc.1" + "@docusaurus/core" "2.2.0" + "@docusaurus/logger" "2.2.0" + "@docusaurus/plugin-content-docs" "2.2.0" + "@docusaurus/theme-common" "2.2.0" + "@docusaurus/theme-translations" "2.2.0" + "@docusaurus/utils" "2.2.0" + "@docusaurus/utils-validation" "2.2.0" algoliasearch "^4.13.1" algoliasearch-helper "^3.10.0" clsx "^1.2.1" @@ -1527,10 +1556,10 @@ tslib "^2.4.0" utility-types "^3.10.0" -"@docusaurus/theme-translations@2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-2.0.0-rc.1.tgz#bd647f78c741ee7f6c6d2cbbd3e3f282ef2f89ad" - integrity sha512-JLhNdlnbQhxVQzOnLyiCaTzKFa1lpVrM3nCrkGQKscoG2rY6ARGYMgMN2DkoH6hm7TflQ8+PE1S5MzzASeLs4Q== +"@docusaurus/theme-translations@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-2.2.0.tgz#5fbd4693679806f80c26eeae1381e1f2c23d83e7" + integrity sha512-3T140AG11OjJrtKlY4pMZ5BzbGRDjNs2co5hJ6uYJG1bVWlhcaFGqkaZ5lCgKflaNHD7UHBHU9Ec5f69jTdd6w== dependencies: fs-extra "^10.1.0" tslib "^2.4.0" @@ -1549,30 +1578,44 @@ webpack "^5.73.0" webpack-merge "^5.8.0" -"@docusaurus/utils-common@2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-2.0.0-rc.1.tgz#3e233a28794325d5d9d3af3f7b1c22b59aa8b847" - integrity sha512-+iZICpeFPZJ9oGJXuG92WTWee6WRnVx5BdzlcfuKf/f5KQX8PvwXR2tDME78FGGhShB8zr+vjuNEXuLvXT7j2A== +"@docusaurus/types@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-2.2.0.tgz#02c577a4041ab7d058a3c214ccb13647e21a9857" + integrity sha512-b6xxyoexfbRNRI8gjblzVOnLr4peCJhGbYGPpJ3LFqpi5nsFfoK4mmDLvWdeah0B7gmJeXabN7nQkFoqeSdmOw== + dependencies: + "@types/history" "^4.7.11" + "@types/react" "*" + commander "^5.1.0" + joi "^17.6.0" + react-helmet-async "^1.3.0" + utility-types "^3.10.0" + webpack "^5.73.0" + webpack-merge "^5.8.0" + +"@docusaurus/utils-common@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-2.2.0.tgz#a401c1b93a8697dd566baf6ac64f0fdff1641a78" + integrity sha512-qebnerHp+cyovdUseDQyYFvMW1n1nv61zGe5JJfoNQUnjKuApch3IVsz+/lZ9a38pId8kqehC1Ao2bW/s0ntDA== dependencies: tslib "^2.4.0" -"@docusaurus/utils-validation@2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-2.0.0-rc.1.tgz#dded12f036cda8a54a19e01694b35859fe0cf1d5" - integrity sha512-lj36gm9Ksu4tt/EUeLDWoMbXe3sfBxeIPIUUdqYcBYkF/rpQkh+uL/dncjNGiw6uvBOqXhOfsFVP045HtgShVw== +"@docusaurus/utils-validation@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-2.2.0.tgz#04d4d103137ad0145883971d3aa497f4a1315f25" + integrity sha512-I1hcsG3yoCkasOL5qQAYAfnmVoLei7apugT6m4crQjmDGxq+UkiRrq55UqmDDyZlac/6ax/JC0p+usZ6W4nVyg== dependencies: - "@docusaurus/logger" "2.0.0-rc.1" - "@docusaurus/utils" "2.0.0-rc.1" + "@docusaurus/logger" "2.2.0" + "@docusaurus/utils" "2.2.0" joi "^17.6.0" js-yaml "^4.1.0" tslib "^2.4.0" -"@docusaurus/utils@2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-2.0.0-rc.1.tgz#53584b800df9e13864d5ef1a76aa7655a90ec86e" - integrity sha512-ym9I1OwIYbKs1LGaUajaA/vDG8VweJj/6YoZjHp+eDQHhTRIrHXiYoGDqorafRhftKwnA1EnyomuXpNd9bq8Gg== +"@docusaurus/utils@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-2.2.0.tgz#3d6f9b7a69168d5c92d371bf21c556a4f50d1da6" + integrity sha512-oNk3cjvx7Tt1Lgh/aeZAmFpGV2pDr5nHKrBVx6hTkzGhrnMuQqLt6UPlQjdYQ3QHXwyF/ZtZMO1D5Pfi0lu7SA== dependencies: - "@docusaurus/logger" "2.0.0-rc.1" + "@docusaurus/logger" "2.2.0" "@svgr/webpack" "^6.2.1" file-loader "^6.2.0" fs-extra "^10.1.0" @@ -1588,6 +1631,11 @@ url-loader "^4.1.1" webpack "^5.73.0" +"@excalidraw/excalidraw@0.14.2": + version "0.14.2" + resolved "https://registry.yarnpkg.com/@excalidraw/excalidraw/-/excalidraw-0.14.2.tgz#150cb4b7a1bf0d11cd64295936c930e7e0db8375" + integrity sha512-8LdjpTBWEK5waDWB7Bt/G9YBI4j0OxkstUhvaDGz7dwQGfzF6FW5CXBoYHNEoX0qmb+Fg/NPOlZ7FrKsrSVCqg== + "@hapi/hoek@^9.0.0": version "9.3.0" resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" @@ -1709,6 +1757,21 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@philpl/buble@^0.19.7": + version "0.19.7" + resolved "https://registry.yarnpkg.com/@philpl/buble/-/buble-0.19.7.tgz#27231e6391393793b64bc1c982fc7b593198b893" + integrity sha512-wKTA2DxAGEW+QffRQvOhRQ0VBiYU2h2p8Yc1oBNlqSKws48/8faxqKNIuub0q4iuyTuLwtB8EkwiKwhlfV1PBA== + dependencies: + acorn "^6.1.1" + acorn-class-fields "^0.2.1" + acorn-dynamic-import "^4.0.0" + acorn-jsx "^5.0.1" + chalk "^2.4.2" + magic-string "^0.25.2" + minimist "^1.2.0" + os-homedir "^1.0.1" + regexpu-core "^4.5.4" + "@polka/url@^1.0.0-next.20": version "1.0.0-next.21" resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.21.tgz#5de5a2385a35309427f6011992b544514d559aa1" @@ -2242,16 +2305,36 @@ accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: mime-types "~2.1.34" negotiator "0.6.3" +acorn-class-fields@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/acorn-class-fields/-/acorn-class-fields-0.2.1.tgz#748058bceeb0ef25164bbc671993984083f5a085" + integrity sha512-US/kqTe0H8M4LN9izoL+eykVAitE68YMuYZ3sHn3i1fjniqR7oQ3SPvuMK/VT1kjOQHrx5Q88b90TtOKgAv2hQ== + +acorn-dynamic-import@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36b83c3e342e1cfebcaa9240948" + integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw== + acorn-import-assertions@^1.7.6: version "1.8.0" resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== +acorn-jsx@^5.0.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + acorn-walk@^8.0.0: version "8.2.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== +acorn@^6.1.1: + version "6.4.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" + integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== + acorn@^8.0.4, acorn@^8.5.0, acorn@^8.7.1: version "8.8.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" @@ -2618,6 +2701,18 @@ browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4 node-releases "^2.0.6" update-browserslist-db "^1.0.4" +buble@0.19.6: + version "0.19.6" + resolved "https://registry.yarnpkg.com/buble/-/buble-0.19.6.tgz#915909b6bd5b11ee03b1c885ec914a8b974d34d3" + integrity sha512-9kViM6nJA1Q548Jrd06x0geh+BG2ru2+RMDkIHHgJY/8AcyCs34lTHwra9BX7YdPrZXd5aarkpr/SY8bmPgPdg== + dependencies: + chalk "^2.4.1" + magic-string "^0.25.1" + minimist "^1.2.0" + os-homedir "^1.0.1" + regexpu-core "^4.2.0" + vlq "^1.0.0" + buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" @@ -2697,7 +2792,7 @@ ccount@^1.0.0: resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043" integrity sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg== -chalk@^2.0.0: +chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -2754,7 +2849,7 @@ cheerio@^1.0.0-rc.12: parse5 "^7.0.0" parse5-htmlparser2-tree-adapter "^7.0.0" -chokidar@^3.4.2, chokidar@^3.5.3: +"chokidar@>=3.0.0 <4.0.0", chokidar@^3.4.2, chokidar@^3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== @@ -2905,6 +3000,16 @@ commondir@^1.0.1: resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== +component-props@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/component-props/-/component-props-1.1.1.tgz#f9b7df9b9927b6e6d97c9bd272aa867670f34944" + integrity sha512-69pIRJs9fCCHRqCz3390YF2LV1Lu6iEMZ5zuVqqUn+G20V9BNXlMs0cWawWeW9g4Ynmg29JmkG6R7/lUJoGd1Q== + +component-xor@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/component-xor/-/component-xor-0.0.4.tgz#c55d83ccc1b94cd5089a4e93fa7891c7263e59aa" + integrity sha512-ZIt6sla8gfo+AFVRZoZOertcnD5LJaY2T9CKE2j13NJxQt/mUafD69Bl7/Y4AnpI2LGjiXH7cOfJDx/n2G9edA== + compressible@~2.0.16: version "2.0.18" resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" @@ -3016,6 +3121,11 @@ core-js-pure@^3.20.2: resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.24.0.tgz#10eeb90dbf0d670a6b22b081aecc7deb2faec7e1" integrity sha512-uzMmW8cRh7uYw4JQtzqvGWRyC2T5+4zipQLQdi2FmiRqP83k3d6F3stv2iAlNhOs6cXN401FCD5TL0vvleuHgA== +core-js@^2.4.1: + version "2.6.12" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" + integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== + core-js@^3.23.3: version "3.24.0" resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.24.0.tgz#4928d4e99c593a234eb1a1f9abd3122b04d3ac57" @@ -3345,6 +3455,13 @@ dns-packet@^5.2.2: dependencies: "@leichtgewicht/ip-codec" "^2.0.1" +docusaurus-plugin-sass@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/docusaurus-plugin-sass/-/docusaurus-plugin-sass-0.2.3.tgz#5b61f7e560d236cfc1531ed497ac32fc166fc5e2" + integrity sha512-FbaE06K8NF8SPUYTwiG+83/jkXrwHJ/Afjqz3SUIGon6QvFwSSoKOcoxGQmUBnjTOk+deUONDx8jNWsegFJcBQ== + dependencies: + sass-loader "^10.1.1" + dom-converter@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" @@ -3352,6 +3469,14 @@ dom-converter@^0.2.0: dependencies: utila "~0.4" +dom-iterator@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dom-iterator/-/dom-iterator-1.0.0.tgz#9c09899846ec41c2d257adc4d6015e4759ef05ad" + integrity sha512-7dsMOQI07EMU98gQM8NSB3GsAiIeBYIPKpnxR3c9xOvdvBjChAcOM0iJ222I3p5xyiZO9e5oggkNaCusuTdYig== + dependencies: + component-props "1.1.1" + component-xor "0.0.4" + dom-serializer@^1.0.1: version "1.4.1" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" @@ -4340,6 +4465,11 @@ immer@^9.0.7: resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.15.tgz#0b9169e5b1d22137aba7d43f8a81a495dd1b62dc" integrity sha512-2eB/sswms9AEUSkOm4SbV5Y7Vmt/bKRwByd52jfLkW4OLYeaTP3EEiJ9agqU0O/tq6Dk62Zfj+TJSqfm1rLVGQ== +immutable@^4.0.0: + version "4.2.2" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.2.2.tgz#2da9ff4384a4330c36d4d1bc88e90f9e0b0ccd16" + integrity sha512-fTMKDwtbvO5tldky9QZ2fMX7slR0mYpY5nbnFWYp0fOzDhHqhgIw9KoYgxLWsoNTS9ZHGauHj18DTyEw6BK3Og== + import-fresh@^3.1.0, import-fresh@^3.2.1, import-fresh@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" @@ -4722,7 +4852,7 @@ kleur@^3.0.3: resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== -klona@^2.0.5: +klona@^2.0.4, klona@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.5.tgz#d166574d90076395d9963aa7a928fabb8d76afbc" integrity sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ== @@ -4851,6 +4981,13 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +magic-string@^0.25.1, magic-string@^0.25.2: + version "0.25.9" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" + integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== + dependencies: + sourcemap-codec "^1.4.8" + make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" @@ -5208,6 +5345,11 @@ opener@^1.5.2: resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== +os-homedir@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ== + p-cancelable@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" @@ -5737,7 +5879,7 @@ pretty-time@^1.1.0: resolved "https://registry.yarnpkg.com/pretty-time/-/pretty-time-1.1.0.tgz#ffb7429afabb8535c346a34e41873adf3d74dd0e" integrity sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA== -prism-react-renderer@^1.3.5: +prism-react-renderer@^1.0.1, prism-react-renderer@^1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/prism-react-renderer/-/prism-react-renderer-1.3.5.tgz#786bb69aa6f73c32ba1ee813fbe17a0115435085" integrity sha512-IJ+MSwBWKG+SM3b2SUfdrhC+gu01QkV2KmRQgREThBfSQRoufqRfxfHUxpG1WcaFjP+kojcFyO9Qqtpgt3qLCg== @@ -5767,7 +5909,7 @@ prompts@^2.4.2: kleur "^3.0.3" sisteransi "^1.0.5" -prop-types@^15.6.2, prop-types@^15.7.2: +prop-types@^15.5.8, prop-types@^15.6.2, prop-types@^15.7.2: version "15.8.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -5967,6 +6109,19 @@ react-lifecycles-compat@^3.0.4: resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== +react-live@2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/react-live/-/react-live-2.2.3.tgz#260f99194213799f0005e473e7a4154c699d6a7c" + integrity sha512-tpKruvfytNETuzO3o1mrQUj180GVrq35IE8F5gH1NJVPt4szYCx83/dOSCOyjgRhhc3gQvl0pQ3k/CjOjwJkKQ== + dependencies: + buble "0.19.6" + core-js "^2.4.1" + dom-iterator "^1.0.0" + prism-react-renderer "^1.0.1" + prop-types "^15.5.8" + react-simple-code-editor "^0.10.0" + unescape "^1.0.1" + react-loadable-ssr-addon-v5-slorber@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/react-loadable-ssr-addon-v5-slorber/-/react-loadable-ssr-addon-v5-slorber-1.0.1.tgz#2cdc91e8a744ffdf9e3556caabeb6e4278689883" @@ -6010,6 +6165,11 @@ react-router@5.3.3, react-router@^5.3.3: tiny-invariant "^1.0.2" tiny-warning "^1.0.0" +react-simple-code-editor@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/react-simple-code-editor/-/react-simple-code-editor-0.10.0.tgz#73e7ac550a928069715482aeb33ccba36efe2373" + integrity sha512-bL5W5mAxSW6+cLwqqVWY47Silqgy2DKDTR4hDBrLrUqC5BXc29YVx17l2IZk5v36VcDEq1Bszu2oHm1qBwKqBA== + react-textarea-autosize@^8.3.2: version "8.3.4" resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-8.3.4.tgz#270a343de7ad350534141b02c9cb78903e553524" @@ -6082,6 +6242,13 @@ regenerate-unicode-properties@^10.0.1: dependencies: regenerate "^1.4.2" +regenerate-unicode-properties@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz#54d09c7115e1f53dc2314a974b32c1c344efe326" + integrity sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA== + dependencies: + regenerate "^1.4.2" + regenerate@^1.4.2: version "1.4.2" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" @@ -6099,6 +6266,18 @@ regenerator-transform@^0.15.0: dependencies: "@babel/runtime" "^7.8.4" +regexpu-core@^4.2.0, regexpu-core@^4.5.4: + version "4.8.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.8.0.tgz#e5605ba361b67b1718478501327502f4479a98f0" + integrity sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg== + dependencies: + regenerate "^1.4.2" + regenerate-unicode-properties "^9.0.0" + regjsgen "^0.5.2" + regjsparser "^0.7.0" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.0.0" + regexpu-core@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.1.0.tgz#2f8504c3fd0ebe11215783a41541e21c79942c6d" @@ -6125,11 +6304,23 @@ registry-url@^5.0.0: dependencies: rc "^1.2.8" +regjsgen@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" + integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== + regjsgen@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.6.0.tgz#83414c5354afd7d6627b16af5f10f41c4e71808d" integrity sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA== +regjsparser@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.7.0.tgz#a6b667b54c885e18b52554cb4960ef71187e9968" + integrity sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ== + dependencies: + jsesc "~0.5.0" + regjsparser@^0.8.2: version "0.8.4" resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.8.4.tgz#8a14285ffcc5de78c5b95d62bbf413b6bc132d5f" @@ -6317,6 +6508,26 @@ safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== +sass-loader@^10.1.1: + version "10.4.1" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.4.1.tgz#bea4e173ddf512c9d7f53e9ec686186146807cbf" + integrity sha512-aX/iJZTTpNUNx/OSYzo2KsjIUQHqvWsAhhUijFjAPdZTEhstjZI9zTNvkTTwsx+uNUJqUwOw5gacxQMx4hJxGQ== + dependencies: + klona "^2.0.4" + loader-utils "^2.0.0" + neo-async "^2.6.2" + schema-utils "^3.0.0" + semver "^7.3.2" + +sass@1.57.1: + version "1.57.1" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.57.1.tgz#dfafd46eb3ab94817145e8825208ecf7281119b5" + integrity sha512-O2+LwLS79op7GI0xZ8fqzF7X2m/m8WFfI02dHOdsK5R2ECeS5F62zrwg/relM1rjSLy7Vd/DiMNIvPrQGsA0jw== + dependencies: + chokidar ">=3.0.0 <4.0.0" + immutable "^4.0.0" + source-map-js ">=0.6.2 <2.0.0" + sax@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" @@ -6594,7 +6805,7 @@ sort-css-media-queries@2.0.4: resolved "https://registry.yarnpkg.com/sort-css-media-queries/-/sort-css-media-queries-2.0.4.tgz#b2badfa519cb4a938acbc6d3aaa913d4949dc908" integrity sha512-PAIsEK/XupCQwitjv7XxoMvYhT7EAfyzI3hsy/MyDgTvc+Ft55ctdkctJLOy6cQejaIC+zjpUL4djFVm2ivOOw== -source-map-js@^1.0.2: +"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== @@ -6617,6 +6828,11 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +sourcemap-codec@^1.4.8: + version "1.4.8" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + space-separated-tokens@^1.0.0: version "1.1.5" resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" @@ -6947,6 +7163,13 @@ ua-parser-js@^0.7.30: resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.31.tgz#649a656b191dffab4f21d5e053e27ca17cbff5c6" integrity sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ== +unescape@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/unescape/-/unescape-1.0.1.tgz#956e430f61cad8a4d57d82c518f5e6cc5d0dda96" + integrity sha512-O0+af1Gs50lyH1nUu3ZyYS1cRh01Q/kUKatTOkSs7jukXE6/NebucDVxyiDsA9AQ4JC1V1jUH9EO8JX2nMDgGQ== + dependencies: + extend-shallow "^2.0.1" + unherit@^1.0.4: version "1.1.3" resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.3.tgz#6c9b503f2b41b262330c80e91c8614abdaa69c22" @@ -7203,6 +7426,11 @@ vfile@^4.0.0: unist-util-stringify-position "^2.0.0" vfile-message "^2.0.0" +vlq@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/vlq/-/vlq-1.0.1.tgz#c003f6e7c0b4c1edd623fd6ee50bbc0d6a1de468" + integrity sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w== + wait-on@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-6.0.1.tgz#16bbc4d1e4ebdd41c5b4e63a2e16dbd1f4e5601e" diff --git a/src/packages/excalidraw/README.md b/src/packages/excalidraw/README.md index a0dda857..eaeef4b0 100644 --- a/src/packages/excalidraw/README.md +++ b/src/packages/excalidraw/README.md @@ -1,22 +1,18 @@ -#### Note - -⚠️ ⚠️ ⚠️ You are viewing the docs for the **next** release, in case you want to check the docs for the stable release, you can view it [here](https://www.npmjs.com/package/@excalidraw/excalidraw). +# Excalidraw -### Excalidraw +**Excalidraw** is exported as a component to directly embed in your projects. -Excalidraw exported as a component to directly embed in your projects. +## Installation -### Installation +You can use `npm` -You can use npm - -``` +```bash npm install react react-dom @excalidraw/excalidraw ``` -or via yarn +or via `yarn` -``` +```bash yarn add react react-dom @excalidraw/excalidraw ``` @@ -24,7 +20,7 @@ After installation you will see a folder `excalidraw-assets` and `excalidraw-ass 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/` +By default it will try to load the files from [`https://unpkg.com/@excalidraw/excalidraw/dist/`](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. @@ -32,1820 +28,18 @@ If you want to load assets from a different path you can set a variable `window. **If you don't want to wait for the next stable release and try out the unreleased changes you can use `@excalidraw/excalidraw@next`.** -### Demo - -[Try here](https://codesandbox.io/s/excalidraw-ehlz3). - -### Usage - -#### Using Web Bundler - -If you are using a Web bundler (for instance, Webpack), you can import it as an ES6 module as shown below - -

View Example - -```js -import React, { useEffect, useState, useRef } from "react"; -import { Excalidraw } from "@excalidraw/excalidraw"; -import InitialData from "./initialData"; - -import "./styles.scss"; - -export default function App() { - const excalidrawRef = useRef(null); - - const [viewModeEnabled, setViewModeEnabled] = useState(false); - const [zenModeEnabled, setZenModeEnabled] = useState(false); - const [gridModeEnabled, setGridModeEnabled] = useState(false); - - const updateScene = () => { - const sceneData = { - elements: [ - { - type: "rectangle", - version: 141, - versionNonce: 361174001, - isDeleted: false, - id: "oDVXy8D6rom3H1-LLH2-f", - fillStyle: "hachure", - strokeWidth: 1, - strokeStyle: "solid", - roughness: 1, - opacity: 100, - angle: 0, - x: 100.50390625, - y: 93.67578125, - strokeColor: "#c92a2a", - backgroundColor: "transparent", - width: 186.47265625, - height: 141.9765625, - seed: 1968410350, - groupIds: [], - }, - ], - appState: { - viewBackgroundColor: "#edf2ff", - }, - }; - excalidrawRef.current.updateScene(sceneData); - }; - - return ( -
-

Excalidraw Example

-
- - - - - -
-
- - console.log("Elements :", elements, "State : ", state) - } - onPointerUpdate={(payload) => console.log(payload)} - viewModeEnabled={viewModeEnabled} - zenModeEnabled={zenModeEnabled} - gridModeEnabled={gridModeEnabled} - /> -
-
- ); -} -``` - -To view the full example visit :point_down: - -[![Edit excalidraw](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/excalidraw-ehlz3?fontsize=14&hidenavigation=1&theme=dark) - -
- -Since Excalidraw doesn't support server side rendering yet, you should render the component once the host is mounted. - -```js -import { useState, useEffect } from "react"; -export default function IndexPage() { - const [Comp, setComp] = useState(null); - useEffect(() => { - import("@excalidraw/excalidraw").then((comp) => setComp(comp.default)); - }, []); - return <>{Comp && }; -} -``` - -The `types` are available at `@excalidraw/excalidraw/types`, you can view [example for typescript](https://codesandbox.io/s/excalidraw-types-9h2dm) - -#### In Browser - -To use it in a browser directly: - -For development use :point_down: - -```js - -``` - -For production use :point_down: - -```js - -``` - -You will need to make sure `react`, `react-dom` is available as shown in the below example. For prod please use the production versions of `react`, `react-dom`. - -
View Example - -```html - - - - Excalidraw in browser - - - - - - - - -
-

Excalidraw Embed Example

-
-
- - - -``` - -```js -/*eslint-disable */ -import "./styles.css"; -import InitialData from "./initialData"; - -const App = () => { - const excalidrawRef = React.useRef(null); - - const [viewModeEnabled, setViewModeEnabled] = React.useState(false); - const [zenModeEnabled, setZenModeEnabled] = React.useState(false); - const [gridModeEnabled, setGridModeEnabled] = React.useState(false); - - const updateScene = () => { - const sceneData = { - elements: [ - { - type: "rectangle", - version: 141, - versionNonce: 361174001, - isDeleted: false, - id: "oDVXy8D6rom3H1-LLH2-f", - fillStyle: "hachure", - strokeWidth: 1, - strokeStyle: "solid", - roughness: 1, - opacity: 100, - angle: 0, - x: 100.50390625, - y: 93.67578125, - strokeColor: "#c92a2a", - backgroundColor: "transparent", - width: 186.47265625, - height: 141.9765625, - seed: 1968410350, - groupIds: [], - }, - ], - appState: { - viewBackgroundColor: "#edf2ff", - }, - }; - excalidrawRef.current.updateScene(sceneData); - }; - - return React.createElement( - React.Fragment, - null, - React.createElement( - "div", - { className: "button-wrapper" }, - React.createElement( - "button", - { - className: "update-scene", - onClick: updateScene, - }, - "Update Scene", - ), - React.createElement( - "button", - { - className: "reset-scene", - onClick: () => excalidrawRef.current.resetScene(), - }, - "Reset Scene", - ), - React.createElement( - "label", - null, - React.createElement("input", { - type: "checkbox", - checked: viewModeEnabled, - onChange: () => setViewModeEnabled(!viewModeEnabled), - }), - "View mode", - ), - React.createElement( - "label", - null, - React.createElement("input", { - type: "checkbox", - checked: zenModeEnabled, - onChange: () => setZenModeEnabled(!zenModeEnabled), - }), - "Zen mode", - ), - React.createElement( - "label", - null, - React.createElement("input", { - type: "checkbox", - checked: gridModeEnabled, - onChange: () => setGridModeEnabled(!gridModeEnabled), - }), - "Grid mode", - ), - ), - React.createElement( - "div", - { - className: "excalidraw-wrapper", - ref: excalidrawWrapperRef, - }, - React.createElement(ExcalidrawLib.Excalidraw, { - initialData: InitialData, - onChange: (elements, state) => - console.log("Elements :", elements, "State : ", state), - onPointerUpdate: (payload) => console.log(payload), - viewModeEnabled: viewModeEnabled, - zenModeEnabled: zenModeEnabled, - gridModeEnabled: gridModeEnabled, - }), - ), - ); -}; - -const excalidrawWrapper = document.getElementById("app"); - -ReactDOM.render(React.createElement(App), excalidrawWrapper); -``` - -To view the full example visit :point_down: - -[![Edit excalidraw-in-browser](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/excalidraw-in-browser-tlqom?fontsize=14&hidenavigation=1&theme=dark) - -
- -### Customizing styles - -Excalidraw is using CSS variables to style certain components. To override them, you should set your own on the `.excalidraw` and `.excalidraw.theme--dark` (for dark mode variables) selectors. - -Make sure the selector has higher specificity, e.g. by prefixing it with your app's selector: - -```css -.your-app .excalidraw { - --color-primary: red; -} -.your-app .excalidraw.theme--dark { - --color-primary: pink; -} -``` - -Most notably, you can customize the primary colors, by overriding these variables: - -- `--color-primary` -- `--color-primary-darker` -- `--color-primary-darkest` -- `--color-primary-light` -- `--color-primary-contrast-offset` — a slightly darker (in light mode), or lighter (in dark mode) `--color-primary` color to fix contrast issues (see [Chubb illusion](https://en.wikipedia.org/wiki/Chubb_illusion)). It will fall back to `--color-primary` if not present. - -For a complete list of variables, check [theme.scss](https://github.com/excalidraw/excalidraw/blob/master/src/css/theme.scss), though most of them will not make sense to override. - -### Does this package support collaboration? - -No, Excalidraw package doesn't come with collaboration built in, since the implementation is specific to each host app. We expose APIs which you can use to communicate with Excalidraw which you can use to implement it. You can check our own implementation [here](https://github.com/excalidraw/excalidraw/blob/master/src/excalidraw-app/index.tsx). - -### Component API - -#### Footer - -Earlier we were using `renderFooter` prop to render custom footer which was removed in [#5970](https://github.com/excalidraw/excalidraw/pull/5970). Now you can pass a `Footer` component instead to render the custom UI for footer. - -You will need to import the `Footer` component from the package and wrap your component with the Footer component. The `Footer` should a valid React Node. - -**Usage** - -```js -import { Footer } from "@excalidraw/excalidraw"; - -const CustomFooter = () => ; -const App = () => { - return ( - -
- -
-
- ); -}; -``` - -Footer is only rendered in the desktop view. - -In the mobile view you can render it inside the [MainMenu](#mainmenu) (later we will expose other ways to customize the UI). You can use the [`useDevice`](#useDevice) hook to check the type of device, this will be available only inside the `children` of `Excalidraw` component. - -```js -import { useDevice, Footer } from "@excalidraw/excalidraw"; - -const MobileFooter = () => { - const device = useDevice(); - if (device.isMobile) { - return ( -
- -
- ); - } - return null; -}; - -const App = () => { - - - window.alert("Item1")}> - Item1 - - window.alert("Item2")}> - Item2 - - - - ; -}; -``` - -You can visit the [example](https://ehlz3.csb.app/) for working demo. - -#### MainMenu - -By default Excalidraw will render the `MainMenu` with default options. If you want to customise the `MainMenu`, you can pass the `MainMenu` component with the list options. You can visit [codesandbox example](https://ehlz3.csb.app/) for a working demo. - -**Usage** - -```js -import { MainMenu } from "@excalidraw/excalidraw"; -const App = () => { - - - window.alert("Item1")}> - Item1 - - window.alert("Item2")}> - Item2 - - - ; -}; -``` - -**MainMenu** - -This is the `MainMenu` component which you need to import to render the menu with custom options. - -**MainMenu.Item** - -Use this component to render a menu item. - -| Prop | Type | Required | Default | Description | -| --- | --- | --- | --- | --- | -| `onSelect` | `Function` | Yes | `undefined` | The handler is triggered when the item is selected. | -| `children` | `React.ReactNode` | Yes | `undefined` | The content of the menu item | -| `icon` | `JSX.Element` | No | `undefined` | The icon used in the menu item | -| `shortcut` | `string` | No | | The keyboard shortcut (label-only, does not affect behavior) | - -**MainMenu.ItemLink** - -To render an external link in a menu item, you can use this component. - -**Usage** - -```js -import { MainMenu } from "@excalidraw/excalidraw"; -const App = () => ( - - - Google - - Excalidraw - - - ; -); -``` - -| Prop | Type | Required | Default | Description | -| --- | --- | --- | --- | --- | -| `href` | `string` | Yes | `undefined` | The `href` attribute to be added to the `anchor` element. | -| `children` | `React.ReactNode` | Yes | `undefined` | The content of the menu item | -| `icon` | `JSX.Element` | No | `undefined` | The icon used in the menu item | -| `shortcut` | `string` | No | | The keyboard shortcut (label-only, does not affect behavior) | - -**MainMenu.ItemCustom** - -To render a custom item, you can use `MainMenu.ItemCustom`. - -**Usage** - -```js -import { MainMenu } from "@excalidraw/excalidraw"; -const App = () => ( - - - - - - - ; -); -``` - -| Prop | Type | Required | Default | Description | -| --- | --- | --- | --- | --- | -| `children` | `React.ReactNode` | Yes | `undefined` | The content of the menu item | - -**MainMenu.DefaultItems** - -For the items which are shown in the menu in [excalidraw.com](https://excalidraw.com), you can use `MainMenu.DefaultItems` - -```js -import { MainMenu } from "@excalidraw/excalidraw"; -const App = () => ( - - - - - window.alert("Item1")}> Item1 - window.alert("Item2")}> Item 2 - - -) -``` - -Here is a [complete list](https://github.com/excalidraw/excalidraw/blob/master/src/components/mainMenu/DefaultItems.tsx) of the default items. - -**MainMenu.Group** - -To Group item in the main menu, you can use `MainMenu.Group` - -```js -import { MainMenu } from "@excalidraw/excalidraw"; -const App = () => ( - - - - - - - - window.alert("Item1")}> Item1 - window.alert("Item2")}> Item 2 - - - -) -``` - -| Prop | Type | Required | Default | Description | -| --- | --- | --- | --- | --- | -| `children ` | `React.ReactNode` | Yes | `undefined` | The content of the `MainMenu.Group` | - -### WelcomeScreen - -When the canvas is empty, Excalidraw shows a welcome "splash" screen with a logo, a few quick action items, and hints explaining what some of the UI buttons do. You can customize the welcome screen by rendering the `WelcomeScreen` component inside your Excalidraw instance. - -You can also disable the welcome screen altogether by setting `UIOptions.welcomeScreen` to `false`. - -**Usage** - -```jsx -import { WelcomScreen } from "@excalidraw/excalidraw"; -const App = () => ( - - - - - Your data are autosaved to the cloud. - - - console.log("clicked!")} - > - Click me! - - - Excalidraw GitHub - - - - - - -); -``` - -To disable the WelcomeScreen: - -```jsx -import { WelcomScreen } from "@excalidraw/excalidraw"; -const App = () => ; -``` - -**WelcomeScreen** - -If you render the `` component, you are responsible for rendering the content. - -There are 2 main parts: 1) welcome screen center component, and 2) welcome screen hints. - -![WelcomeScreen overview](./welcome-screen-overview.png) - -**WelcomeScreen.Center** - -This is the center piece of the welcome screen, containing the logo, heading, and menu. All three sub-components are optional, and you can render whatever you wish into the center component. - -**WelcomeScreen.Center.Logo** - -By default renders the Excalidraw logo and name. Supply `children` to customize. - -**WelcomeScreen.Center.Heading** +## Dimensions of Excalidraw -Supply `children` to change the default message. +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. -**WelcomeScreen.Center.Menu** - -Wrapper component for the menu items. You can build your menu using the `` and `` components, render your own, or render one of the default menu items. - -The default menu items are: - -- `` - opens the help dialog. -- `` - open the load file dialog. -- `` - intended to open the live collaboration dialog. Works similarly to [``](#LiveCollaborationTrigger) and you must supply `onSelect()` handler to integrate with your collaboration implementation. - -**Usage** - -```jsx -import { WelcomScreen } from "@excalidraw/excalidraw"; -const App = () => ( - - - - - console.log("clicked!")} - > - Click me! - - - Excalidraw GitHub - - - - - - -); -``` - -**WelcomeScreen.Center.MenuItem** - -Use this component to render a menu item. - -| Prop | Type | Required | Default | Description | -| --- | --- | --- | --- | --- | -| `onSelect` | `Function` | Yes | | The handler is triggered when the item is selected. | -| `children` | `React.ReactNode` | Yes | | The content of the menu item | -| `icon` | `JSX.Element` | No | | The icon used in the menu item | -| `shortcut` | `string` | No | | The keyboard shortcut (label-only, does not affect behavior) | - -**WelcomeScreen.Center.MenuItemLink** - -To render an external link in a menu item, you can use this component. - -| Prop | Type | Required | Default | Description | -| --- | --- | --- | --- | --- | -| `href` | `string` | Yes | | The `href` attribute to be added to the `anchor` element. | -| `children` | `React.ReactNode` | Yes | | The content of the menu item | -| `icon` | `JSX.Element` | No | | The icon used in the menu item | -| `shortcut` | `string` | No | | The keyboard shortcut (label-only, does not affect behavior) | - -**WelcomeScreen.Hints** - -These subcomponents render the UI hints. Text of each hint can be customized by supplying `children`. - -**WelcomeScreen.Hints.Menu** - -Hint for the main menu. Supply `children` to customize the hint text. - -**WelcomeScreen.Hints.Toolbar** - -Hint for the toolbar. Supply `children` to customize the hint text. - -**WelcomeScreen.Hints.Help** - -Hint for the help dialog. Supply `children` to customize the hint text. - -### LiveCollaborationTrigger - -If you implement live collaboration support and want to expose the same UI button as on excalidraw.com, you can render the `` component using the [renderTopRightUI](#rendertoprightui) prop. You'll need to supply `onSelect()` to handle opening of your collaboration dialog, but the button will display current `appState.collaborators` count for you. - -| Prop | Type | Required | Default | Description | -| --- | --- | --- | --- | --- | -| `onSelect` | `() => any` | Yes | | Handler called when the user click on the button | -| `isCollaborating` | `boolean` | Yes | false | Whether live collaboration session is in effect. Modifies button style. | - -**Usage** - -```jsx -import { LiveCollaborationTrigger } from "@excalidraw/excalidraw"; -const App = () => ( - { - if (isMobile) { - return null; - } - return ( - setCollabDialogShown(true)} - /> - ); - }} - /> -); -``` - -### Props - -| Name | Type | Default | Description | -| --- | --- | --- | --- | -| [`onChange`](#onChange) | Function | | This callback is triggered whenever the component updates due to any change. This callback will receive the excalidraw elements and the current app state. | -| [`initialData`](#initialData) | {elements?:
ExcalidrawElement[], appState?: AppState } | null | The initial data with which app loads. | -| [`ref`](#ref) | [`createRef`](https://reactjs.org/docs/refs-and-the-dom.html#creating-refs) | [`useRef`](https://reactjs.org/docs/hooks-reference.html#useref) | [`callbackRef`](https://reactjs.org/docs/refs-and-the-dom.html#callback-refs) | { current: { readyPromise: resolvablePromise } } | | Ref to be passed to Excalidraw | -| [`isCollaborating`](#isCollaborating) | `boolean` | | This implies if the app is in collaboration mode | -| [`onPointerUpdate`](#onPointerUpdate) | Function | | Callback triggered when mouse pointer is updated. | -| [`langCode`](#langCode) | string | `en` | Language code string | -| [`renderTopRightUI`](#renderTopRightUI) | Function | | Function that renders custom UI in top right corner | -| [`renderCustomStats`](#renderCustomStats) | Function | | Function that can be used to render custom stats on the stats dialog. | -| [`renderSIdebar`](#renderSIdebar) | Function | | Render function that renders custom sidebar. | -| [`viewModeEnabled`](#viewModeEnabled) | boolean | | This implies if the app is in view mode. | -| [`zenModeEnabled`](#zenModeEnabled) | boolean | | This implies if the zen mode is enabled | -| [`gridModeEnabled`](#gridModeEnabled) | boolean | | This implies if the grid mode is enabled | -| [`libraryReturnUrl`](#libraryReturnUrl) | string | | What URL should [libraries.excalidraw.com](https://libraries.excalidraw.com) be installed to | -| [`theme`](#theme) | [THEME.LIGHT](#THEME-1) | [THEME.DARK](#THEME-1) | [THEME.LIGHT](#THEME-1) | The theme of the Excalidraw component | -| [`name`](#name) | string | | Name of the drawing | -| [`UIOptions`](#UIOptions) | { canvasActions: CanvasActions } | [DEFAULT UI OPTIONS](https://github.com/excalidraw/excalidraw/blob/master/src/constants.ts#L129) | To customise UI options. Currently we support customising [`canvas actions`](#canvasActions) | -| [`onPaste`](#onPaste) | (data: ClipboardData, event: ClipboardEvent | null) => boolean | | Callback to be triggered if passed when the something is pasted in to the scene | -| [`detectScroll`](#detectScroll) | boolean | true | Indicates whether to update the offsets when nearest ancestor is scrolled. | -| [`handleKeyboardGlobally`](#handleKeyboardGlobally) | boolean | false | Indicates whether to bind the keyboard events to document. | -| [`onLibraryChange`](#onLibraryChange) | (items: LibraryItems) => void | Promise<any> | | The callback if supplied is triggered when the library is updated and receives the library items. | -| [`autoFocus`](#autoFocus) | boolean | false | Implies whether to focus the Excalidraw component on page load | -| [`generateIdForFile`](#generateIdForFile) | `(file: File) => string | Promise` | Allows you to override `id` generation for files added on canvas | -| [`onLinkOpen`](#onLinkOpen) | (element: NonDeletedExcalidrawElement, event: CustomEvent) | | This prop if passed will be triggered when link of an element is clicked. | -| [`onPointerDown`](#onPointerDown) | (activeTool: AppState["activeTool"], pointerDownState: PointerDownState) => void | | This prop if passed gets triggered on pointer down evenets | -| [`onScrollChange`](#onScrollChange) | (scrollX: number, scrollY: number) | | This prop if passed gets triggered when scrolling the canvas. | - -### 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. - -#### `onChange` - -Every time component updates, this callback if passed will get triggered and has the below signature. - -```js -(excalidrawElements, appState, files) => void; -``` - -1.`excalidrawElements`: Array of [excalidrawElements](https://github.com/excalidraw/excalidraw/blob/master/src/element/types.ts#L106) in the scene. - -2.`appState`: [AppState](https://github.com/excalidraw/excalidraw/blob/master/src/types.ts#L79) of the scene. - -3. `files`: The [`BinaryFiles`]([BinaryFiles](https://github.com/excalidraw/excalidraw/blob/master/src/types.ts#L64) which are added to the scene. - -Here you can try saving the data to your backend or local storage for example. - -#### `initialData` - -This helps to load Excalidraw with `initialData`. It must be an object or a [promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/Promise) which resolves to an object containing the below optional fields. - -| Name | Type | Description | -| --- | --- | --- | -| `elements` | [ExcalidrawElement[]](https://github.com/excalidraw/excalidraw/blob/master/src/element/types.ts#L106) | The elements with which Excalidraw should be mounted. | -| `appState` | [AppState](https://github.com/excalidraw/excalidraw/blob/master/src/types.ts#L79) | The App state with which Excalidraw should be mounted. | -| `scrollToContent` | boolean | This attribute implies whether to scroll to the nearest element to center once Excalidraw is mounted. By default, it will not scroll the nearest element to the center. Make sure you pass `initialData.appState.scrollX` and `initialData.appState.scrollY` when `scrollToContent` is false so that scroll positions are retained | -| `libraryItems` | [LibraryItems](https://github.com/excalidraw/excalidraw/blob/master/src/types.ts#L200) | Promise<[LibraryItems](https://github.com/excalidraw/excalidraw/blob/master/src/types.ts#L200)> | This library items with which Excalidraw should be mounted. | -| `files` | [BinaryFiles](https://github.com/excalidraw/excalidraw/blob/master/src/types.ts#L64) | The files added to the scene. | - -```json -{ - "elements": [ - { - "type": "rectangle", - "version": 141, - "versionNonce": 361174001, - "isDeleted": false, - "id": "oDVXy8D6rom3H1-LLH2-f", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 100.50390625, - "y": 93.67578125, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 186.47265625, - "height": 141.9765625, - "seed": 1968410350, - "groupIds": [] - } - ], - "appState": { "zenModeEnabled": true, "viewBackgroundColor": "#AFEEEE" } -} -``` - -You might want to use this when you want to load excalidraw with some initial elements and app state. - -#### Storing custom data on Excalidraw elements - -Beyond attributes that Excalidraw elements already support, you can store custom data on each element in a `customData` object. The type of the attribute is [`Record`](https://github.com/excalidraw/excalidraw/blob/master/src/element/types.ts#L59) and is optional. - -You can use this to add any extra information you need to keep track of. - -You can add `customData` to elements when passing them as `initialData`, or using [`updateScene`](#updateScene)/[`updateLibrary`](#updateLibrary) afterwards. - -#### `ref` - -You can pass a `ref` when you want to access some excalidraw APIs. We expose the below APIs: - -| API | Signature | Usage | -| --- | --- | --- | -| ready | `boolean` | This is set to true once Excalidraw is rendered | -| readyPromise | [resolvablePromise](https://github.com/excalidraw/excalidraw/blob/master/src/utils.ts#L317) | This promise will be resolved with the api once excalidraw has rendered. This will be helpful when you want do some action on the host app once this promise resolves. For this to work you will have to pass ref as shown [here](#readyPromise) | -| [updateScene](#updateScene) | (scene: sceneData) => void | updates the scene with the sceneData | -| [updateLibrary](#updateLibrary) | (opts) => Promise<LibraryItems> | updates the scene with the sceneData | -| [addFiles](#addFiles) | (files: BinaryFileData) => void | add files data to the appState | -| resetScene | `({ resetLoadingState: boolean }) => void` | Resets the scene. If `resetLoadingState` is passed as true then it will also force set the loading state to false. | -| getSceneElementsIncludingDeleted | () => ExcalidrawElement[] | Returns all the elements including the deleted in the scene | -| getSceneElements | () => ExcalidrawElement[] | Returns all the elements excluding the deleted in the scene | -| getAppState | () => AppState | Returns current appState | -| history | `{ clear: () => void }` | This is the history API. `history.clear()` will clear the history | -| scrollToContent | (target?: ExcalidrawElement | ExcalidrawElement[]) => void | Scroll the nearest element out of the elements supplied to the center. Defaults to the elements on the scene. | -| refresh | `() => void` | Updates the offsets for the Excalidraw component so that the coordinates are computed correctly (for example the cursor position). You don't have to call this when the position is changed on page scroll or when the excalidraw container resizes (we handle that ourselves). For any other cases if the position of excalidraw is updated (example due to scroll on parent container and not page scroll) you should call this API. | -| [importLibrary](#importlibrary) | (url: string, token?: string) => void | Imports library from given URL | -| [setToast](#setToast) | ({ message: string, closable?:boolean, duration?:number } | null) => void | This API can be used to show the toast with custom message. | -| [id](#id) | string | Unique ID for the excalidraw component. | -| [getFiles](#getFiles) | () => files | This API can be used to get the files present in the scene. It may contain files that aren't referenced by any element, so if you're persisting the files to a storage, you should compare them against stored elements. | -| [setActiveTool](#setActiveTool) | (tool: { type: typeof SHAPES [number]["value"]| "eraser" } | { type: "custom"; customType: string }) => void | This API can be used to set the active tool | -| [setCursor](#setCursor) | (cursor: string) => void | This API can be used to set customise the mouse cursor on the canvas | -| [resetCursor](#resetCursor) | () => void | This API can be used to reset to default mouse cursor on the canvas | -| [toggleMenu](#toggleMenu) | (type: string, force?: boolean) => boolean | Toggles specific menus on/off | - -#### `readyPromise` - -
-const excalidrawRef = { current: { readyPromise: resolvablePromise}}
-
- -Since plain object is passed as a `ref`, the `readyPromise` is resolved as soon as the component is mounted. Most of the time you will not need this unless you have a specific use case where you can't pass the `ref` in the react way and want to do some action on the host when this promise resolves. You can check the [example](https://codesandbox.io/s/eexcalidraw-resolvable-promise-d0qg3?file=/src/App.js) for the usage. - -### `updateScene` - -
-(scene: sceneData) => void
-
- -You can use this function to update the scene with the sceneData. It accepts the below attributes. - -| Name | Type | Description | -| --- | --- | --- | -| `elements` | [`ImportedDataState["elements"]`](https://github.com/excalidraw/excalidraw/blob/master/src/data/types.ts#L17) | The `elements` to be updated in the scene | -| `appState` | [`ImportedDataState["appState"]`](https://github.com/excalidraw/excalidraw/blob/master/src/data/types.ts#L18) | The `appState` to be updated in the scene. | -| `collaborators` |
MapCollaborator>
| The list of collaborators to be updated in the scene. | -| `commitToHistory` | `boolean` | Implies if the `history (undo/redo)` should be recorded. Defaults to `false`. | -| `libraryItems` | [LibraryItems](https://github.com/excalidraw/excalidraw/blob/master/src/types.ts#L200) | Promise<[LibraryItems](https://github.com/excalidraw/excalidraw/blob/master/src/types.ts#L200)> | ((currentItems: [LibraryItems](https://github.com/excalidraw/excalidraw/blob/master/src/types.ts#L200)>) => [LibraryItems](https://github.com/excalidraw/excalidraw/blob/master/src/types.ts#L200) | Promise<[LibraryItems](https://github.com/excalidraw/excalidraw/blob/master/src/types.ts#L200)>) | The `libraryItems` to be update in the scene. | - -### `updateLibrary` - -
-(opts: {
-  libraryItems: LibraryItemsSource;
-  merge?: boolean;
-  prompt?: boolean;
-  openLibraryMenu?: boolean;
-  defaultStatus?: "unpublished" | "published";
-}) => Promise<LibraryItems>
-
- -You can use this function to update the library. It accepts the below attributes. - -| Name | Type | Default | Description | -| --- | --- | --- | --- | -| `libraryItems` | | [LibraryItems](https://github.com/excalidraw/excalidraw/blob/master/src/types.ts#L224) | The `libraryItems` to be replaced/merged with current library | -| `merge` | boolean | `false` | Whether to merge with existing library items. | -| `prompt` | boolean | `false` | Whether to prompt user for confirmation. | -| `openLibraryMenu` | boolean | `false` | Whether to open the library menu before importing. | -| `defaultStatus` | "unpublished" | "published" | `"unpublished"` | Default library item's `status` if not present. | - -### `addFiles` - -
(files: BinaryFileData) => void 
- -Adds supplied files data to the `appState.files` cache on top of existing files present in the cache. - -#### `isCollaborating` - -This prop indicates if the app is in collaboration mode. - -#### `onPointerUpdate` - -This callback is triggered when mouse pointer is updated. - -```js -({ x, y }, button, pointersMap}) => void; -``` - -1.`{x, y}`: Pointer coordinates - -2.`button`: The position of the button. This will be one of `["down", "up"]` - -3.`pointersMap`: [`pointers map`](https://github.com/excalidraw/excalidraw/blob/master/src/types.ts#L131) of the scene - -```js -(exportedElements, appState, canvas) => void -``` - -1. `exportedElements`: An array of [non deleted elements](https://github.com/excalidraw/excalidraw/blob/master/src/element/types.ts#L87) which needs to be exported. -2. `appState`: [AppState](https://github.com/excalidraw/excalidraw/blob/master/src/types.ts#L79) of the scene. -3. `canvas`: The `HTMLCanvasElement` of the scene. - -#### `langCode` - -Determines the language of the UI. It should be one of the [available language codes](https://github.com/excalidraw/excalidraw/blob/master/src/i18n.ts#L14). Defaults to `en` (English). We also export default language and supported languages which you can import as shown below. - -```js -import { defaultLang, languages } from "@excalidraw/excalidraw"; -``` - -| name | type | -| --- | --- | -| defaultLang | string | -| languages | [Language[]](https://github.com/excalidraw/excalidraw/blob/master/src/i18n.ts#L8) | - -#### `renderTopRightUI` - -
-(isMobile: boolean, appState: AppState) => JSX | null
-
- -A function returning JSX to render custom UI in the top right corner of the app. - -#### `renderCustomStats` - -A function that can be used to render custom stats (returns JSX) in the nerd stats dialog. For example you can use this prop to render the size of the elements in the storage. - -#### `renderSidebar` - -
-() => JSX | null
-
- -Optional function that can render custom sidebar. This sidebar is the same that the library menu sidebar is using, and can be used for any purposes your app needs. The render function should return a `` instance — a component that is exported from the Excalidraw package. It accepts `children` which can be any content you like to render inside. - -The `` component takes these props (all are optional except `children`): - -| name | type | description | -| --- | --- | --- | -| className | string | -| children |
React.ReactNode
| Content you want to render inside the sidebar. | -| onClose |
() => void
| Invoked when the component is closed (by user, or the editor). No need to act on this event, as the editor manages the sidebar open state on its own. | -| onDock |
(isDocked: boolean) => void
| Invoked when the user toggles the dock button. | -| docked | boolean | Indicates whether the sidebar is docked. By default, the sidebar is undocked. If passed, the docking becomes controlled, and you are responsible for updating the `docked` state by listening on `onDock` callback. See [here](#dockedSidebarBreakpoint) for more info docking. | -| dockable | boolean | Indicates whether the sidebar can be docked by user (=the dock button is shown). If `false`, you can still dock programmatically by passing `docked=true` | - -The sidebar will always include a header with close/dock buttons (when applicable). - -You can also add custom content to the header, by rendering `` as a child of the `` component. Note that the custom header will still include the default buttons. - -The `` component takes these props children (all are optional): - -| name | type | description | -| --- | --- | --- | -| className | string | -| children |
React.ReactNode
| Content you want to render inside the sidebar header, sibling of the header buttons. | - -For example code, see the example [`App.tsx`](https://github.com/excalidraw/excalidraw/blob/master/src/packages/excalidraw/example/App.tsx#L524) file. - -#### `viewModeEnabled` - -This prop indicates whether the app is in `view mode`. When supplied, the value takes precedence over `intialData.appState.viewModeEnabled`, the `view mode` will be fully controlled by the host app, and users won't be able to toggle it from within the app. - -#### `zenModeEnabled` - -This prop indicates whether the app is in `zen mode`. When supplied, the value takes precedence over `intialData.appState.zenModeEnabled`, the `zen mode` will be fully controlled by the host app, and users won't be able to toggle it from within the app. - -#### `gridModeEnabled` - -This prop indicates whether the shows the grid. When supplied, the value takes precedence over `intialData.appState.gridModeEnabled`, the grid will be fully controlled by the host app, and users won't be able to toggle it from within the app. - -#### `libraryReturnUrl` - -If supplied, this URL will be used when user tries to install a library from [libraries.excalidraw.com](https://libraries.excalidraw.com). Defaults to `window.location.origin + window.location.pathname`. To install the libraries in the same tab from which it was opened, you need to set `window.name` (to any alphanumeric string) — if it's not set it will open in a new tab. - -#### `theme` - -This prop controls Excalidraw's theme. When supplied, the value takes precedence over `intialData.appState.theme`, the theme will be fully controlled by the host app, and users won't be able to toggle it from within the app unless `UIOptions.canvasActions.toggleTheme` is set to `true`, in which case the `theme` prop will control Excalidraw's default theme with ability to allow theme switching (you must take care of updating the `theme` prop when you detect a change to `appState.theme` from the [onChange](#onChange) callback). - -You can use [`THEME`](#THEME-1) to specify the theme. - -#### `name` - -This prop sets the name of the drawing which will be used when exporting the drawing. When supplied, the value takes precedence over `intialData.appState.name`, the `name` will be fully controlled by host app and the users won't be able to edit from within Excalidraw. - -#### `UIOptions` - -This prop can be used to customise UI of Excalidraw. Currently we support customising [`canvasActions`](#canvasActions) and [`dockedSidebarBreakpoint`](dockedSidebarBreakpoint). It accepts the below parameters - -
-{ canvasActions:  CanvasActions }
-
- -##### canvasActions - -| Attribute | Type | Default | Description | -| --- | --- | --- | --- | -| `changeViewBackgroundColor` | boolean | true | Implies whether to show `Background color picker` | -| `clearCanvas` | boolean | true | Implies whether to show `Clear canvas button` | -| `export` | false | [exportOpts](#exportOpts) |
{ saveFileToDisk: true }
| This prop allows to customize the UI inside the export dialog. By default it shows the "saveFileToDisk". If this prop is `false` the export button will not be rendered. For more details visit [`exportOpts`](#exportOpts). | -| `loadScene` | boolean | true | Implies whether to show `Load button` | -| `saveToActiveFile` | boolean | true | Implies whether to show `Save button` to save to current file | -| `toggleTheme` | boolean | null | null | Implies whether to show `Theme toggle`. When defined as `boolean`, takes precedence over [`props.theme`](#theme) to show `Theme toggle` | -| `saveAsImage` | boolean | true | Implies whether to show `Save as image button` | - -##### `dockedSidebarBreakpoint` - -This prop indicates at what point should we break to a docked, permanent sidebar. If not passed it defaults to [`MQ_RIGHT_SIDEBAR_MAX_WIDTH_PORTRAIT`](https://github.com/excalidraw/excalidraw/blob/master/src/constants.ts#L167). If the `width` of the `excalidraw` container exceeds `dockedSidebarBreakpoint`, the sidebar will be dockable. If user choses to dock the sidebar, it will push the right part of the UI towards the left, making space for the sidebar as shown below. - -![image](https://user-images.githubusercontent.com/11256141/174664866-c698c3fa-197b-43ff-956c-d79852c7b326.png) - -#### `exportOpts` - -The below attributes can be set in `UIOptions.canvasActions.export` to customize the export dialog. If `UIOptions.canvasActions.export` is `false` the export button will not be rendered. - -| Attribute | Type | Default | Description | -| --- | --- | --- | --- | -| `saveFileToDisk` | boolean | true | Implies if save file to disk button should be shown | -| `onExportToBackend` |
 (exportedElements: readonly NonDeletedExcalidrawElement[],appState: AppState,canvas: HTMLCanvasElement | null) => void 
| | This callback is triggered when the shareable-link button is clicked in the export dialog. The link button will only be shown if this callback is passed. | -| `renderCustomUI` |
 (exportedElements: readonly NonDeletedExcalidrawElement[],appState: AppState,canvas: HTMLCanvasElement | null) => void 
| | This callback should be supplied if you want to render custom UI in the export dialog. | - -#### `onPaste` - -This callback is triggered if passed when something is pasted into the scene. You can use this callback in case you want to do something additional when the paste event occurs. - -
-(data: ClipboardData, event: ClipboardEvent | null) => boolean
-
- -This callback must return a `boolean` value or a [promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/Promise) which resolves to a boolean value. - -In case you want to prevent the excalidraw paste action you must return `false`, it will stop the native excalidraw clipboard management flow (nothing will be pasted into the scene). +### Demo -#### `importLibrary` +[Try here](https://codesandbox.io/s/excalidraw-ehlz3). -Imports library from given URL. You should call this on `hashchange`, passing the `addLibrary` value if you detect it as shown below. Optionally pass a CSRF `token` to skip prompting during installation (retrievable via `token` key from the url coming from [https://libraries.excalidraw.com](https://libraries.excalidraw.com/)). +## Integration -```js -useEffect(() => { - const onHashChange = () => { - const hash = new URLSearchParams(window.location.hash.slice(1)); - const libraryUrl = hash.get("addLibrary"); - if (libraryUrl) { - excalidrawRef.current.importLibrary(libraryUrl, hash.get("token")); - } - }; - window.addEventListener("hashchange", onHashChange, false); - return () => { - window.removeEventListener("hashchange", onHashChange); - }; -}, []); -``` - -Try out the [Demo](#Demo) to see it in action. - -#### `setToast` - -This API can be used to show the toast with custom message. - -
-({ message: string,
- closable?:boolean,
- duration?:number } | null) => void
-
- -| Attribute | type | Description | -| --- | --- | --- | -| message | string | The message to be shown on the toast. | -| closable | boolean | Indicates whether to show the closable button on toast to dismiss the toast. | -| duration | number | Determines the duration after which the toast should auto dismiss. To prevent autodimiss you can pass `Infinity`. | - -To dismiss an existing toast you can simple pass `null` - -```js -setToast(null); -``` - -#### `setActiveTool` - -This API has the below signature. It sets the `tool` passed in param as the active tool. - -
-(tool: { type: typeof SHAPES[number]["value"] | "eraser" } | { type: "custom"; customType: string }) => void
-
- -#### `setCursor` - -This API can be used to customise the mouse cursor on the canvas and has the below signature. It sets the mouse cursor to the cursor passed in param. - -
-(cursor: string) => void
-
- -#### `toggleMenu` - -
-(type: "library" | "customSidebar", force?: boolean) => boolean
-
- -This API can be used to toggle a specific menu (currently only the sidebars), and returns whether the menu was toggled on or off. If the `force` flag passed, it will force the menu to be toggled either on/off based on the boolean passed. - -This API is especially useful when you render a custom sidebar using [`renderSidebar`](#renderSidebar) prop, and you want to toggle it from your app based on a user action. - -#### `resetCursor` - -This API can be used to reset to default mouse cursor. - -#### `detectScroll` - -Indicates whether Excalidraw should listen for `scroll` event on the nearest scrollable container in the DOM tree and recompute the coordinates (e.g. to correctly handle the cursor) when the component's position changes. You can disable this when you either know this doesn't affect your app or you want to take care of it yourself (calling the [`refresh()`](#ref) method). - -#### `handleKeyboardGlobally` - -Indicates whether to bind keyboard events to `document`. Disabled by default, meaning the keyboard events are bound to the Excalidraw component. This allows for multiple Excalidraw components to live on the same page, and ensures that Excalidraw keyboard handling doesn't collide with your app's (or the browser) when the component isn't focused. - -Enable this if you want Excalidraw to handle keyboard even if the component isn't focused (e.g. a user is interacting with the navbar, sidebar, or similar). - -#### `onLibraryChange` - -This callback if supplied will get triggered when the library is updated and has the below signature. - -
-(items: LibraryItems) => void | Promise
-
- -It is invoked with empty items when user clears the library. You can use this callback when you want to do something additional when library is updated for example persisting it to local storage. - -#### `id` - -The unique id of the excalidraw component. This can be used to identify the excalidraw component, for example importing the library items to the excalidraw component from where it was initiated when you have multiple excalidraw components rendered on the same page as shown in [multiple excalidraw demo](https://codesandbox.io/s/multiple-excalidraw-k1xx5). - -#### `autoFocus` - -This prop implies whether to focus the Excalidraw component on page load. Defaults to false. - -#### `generateIdForFile` - -Allows you to override `id` generation for files added on canvas (images). By default, an SHA-1 digest of the file is used. - -``` -(file: File) => string | Promise -``` - -#### `onLinkOpen` - -This prop if passed will be triggered when clicked on link. To handle the redirect yourself (such as when using your own router for internal links), you must call `event.preventDefault()`. - -``` -(element: ExcalidrawElement, event: CustomEvent<{ nativeEvent: MouseEvent }>) => void -``` - -Example: - -```ts -const history = useHistory(); - -// open internal links using the app's router, but opens external links in -// a new tab/window -const onLinkOpen: ExcalidrawProps["onLinkOpen"] = useCallback( - (element, event) => { - const link = element.link; - const { nativeEvent } = event.detail; - const isNewTab = nativeEvent.ctrlKey || nativeEvent.metaKey; - const isNewWindow = nativeEvent.shiftKey; - const isInternalLink = - link.startsWith("/") || link.includes(window.location.origin); - if (isInternalLink && !isNewTab && !isNewWindow) { - history.push(link.replace(window.location.origin, "")); - // signal that we're handling the redirect ourselves - event.preventDefault(); - } - }, - [history], -); -``` - -#### `onPointerDown` - -This prop if passed will be triggered on pointer down events and has the below signature. - -
-(activeTool:  AppState["activeTool"], pointerDownState: PointerDownState) => void
-
- -#### `onScrollChange` - -This prop if passed will be triggered when canvas is scrolled and has the below signature. - -```ts -(scrollX: number, scrollY: number) => void -``` - -### Restore utilities - -#### `restoreAppState` - -**_Signature_** - -
-restoreAppState(appState: ImportedDataState["appState"], localAppState: Partial<AppState> | null): AppState
-
- -**_How to use_** - -```js -import { restoreAppState } from "@excalidraw/excalidraw"; -``` - -This function will make sure all the keys have appropriate values in [appState](https://github.com/excalidraw/excalidraw/blob/master/src/types.ts#L79) and if any key is missing, it will be set to default value. - -When `localAppState` is supplied, it's used in place of values that are missing (`undefined`) in `appState` instead of defaults. Use this as a way to not override user's defaults if you persist them. Required: supply `null`/`undefined` if not applicable. - -#### `restoreElements` - -**_Signature_** - -
-restoreElements(
-  elements: ImportedDataState["elements"],
-  localElements: ExcalidrawElement[] | null | undefined): ExcalidrawElement[],
-  refreshDimensions: boolean
-)
-
- -**_How to use_** - -```js -import { restoreElements } from "@excalidraw/excalidraw"; -``` - -This function will make sure all properties of element is correctly set and if any attribute is missing, it will be set to default value. - -When `localElements` are supplied, they are used to ensure that existing restored elements reuse `version` (and increment it), and regenerate `versionNonce`. Use this when you import elements which may already be present in the scene to ensure that you do not disregard the newly imported elements if you're using element version to detect the updates. - -Parameter `refreshDimensions` indicates whether we should also recalculate text element dimensions. Defaults to `false`. Since this is a potentially costly operation, you may want to disable it if you restore elements in tight loops, such as during collaboration. - -#### `restore` - -**_Signature_** - -
-restoreElements(
-  data: ImportedDataState,
-  localAppState: Partial<AppState> | null | undefined,
-  localElements: ExcalidrawElement[] | null | undefined): DataState
-)
-
- -See [`restoreAppState()`](https://github.com/excalidraw/excalidraw/blob/master/src/packages/excalidraw/README.md#restoreAppState) about `localAppState`, and [`restoreElements()`](https://github.com/excalidraw/excalidraw/blob/master/src/packages/excalidraw/README.md#restoreElements) about `localElements`. - -**_How to use_** - -```js -import { restore } from "@excalidraw/excalidraw"; -``` - -This function makes sure elements and state is set to appropriate values and set to default value if not present. It is a combination of [restoreElements](#restoreElements) and [restoreAppState](#restoreAppState). - -#### `restoreLibraryItems` - -**_Signature_** - -
-restoreLibraryItems(libraryItems: ImportedDataState["libraryItems"], defaultStatus: "published" | "unpublished")
-
- -**_How to use_** - -```js -import { restoreLibraryItems } from "@excalidraw/excalidraw"; - -restoreLibraryItems(libraryItems, "unpublished"); -``` - -This function normalizes library items elements, adding missing values when needed. - -### Export utilities - -#### `exportToCanvas` - -**_Signature_** - -
exportToCanvas({
-  elements,
-  appState
-  getDimensions,
-  files,
-  exportPadding?: number;
-}: ExportOpts
-
- -| Name | Type | Default | Description | -| --- | --- | --- | --- | -| elements | [Excalidraw Element []](https://github.com/excalidraw/excalidraw/blob/master/src/element/types) | | The elements to be exported to canvas | -| appState | [AppState](https://github.com/excalidraw/excalidraw/blob/master/src/packages/utils.ts#L12) | [defaultAppState](https://github.com/excalidraw/excalidraw/blob/master/src/appState.ts#L11) | The app state of the scene | -| getDimensions | `(width: number, height: number) => { width: number, height: number, scale?: number }` | undefined | A function which returns the `width`, `height`, and optionally `scale` (defaults `1`), with which canvas is to be exported. | -| maxWidthOrHeight | `number` | undefined | The maximum width or height of the exported image. If provided, `getDimensions` is ignored. | -| files | [BinaryFiles](The [`BinaryFiles`](<[BinaryFiles](https://github.com/excalidraw/excalidraw/blob/master/src/types.ts#L64)>) | undefined | The files added to the scene. | -| exportPadding | number | 10 | The padding to be added on canvas | - -**How to use** - -```js -import { exportToCanvas } from "@excalidraw/excalidraw"; -``` - -This function returns the canvas with the exported elements, appState and dimensions. - -#### `exportToBlob` - -**_Signature_** - -
-exportToBlob(
-  opts: ExportOpts & {
-  mimeType?: string,
-  quality?: number,
-  exportPadding?: number;
-})
-
- -| Name | Type | Default | Description | -| --- | --- | --- | --- | -| opts | | | This param is passed to `exportToCanvas`. You can refer to [`exportToCanvas`](#exportToCanvas) | -| mimeType | string | "image/png" | Indicates the image format | -| quality | number | 0.92 | A value between 0 and 1 indicating the [image quality](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob#parameters). Applies only to `image/jpeg`/`image/webp` MIME types. | -| exportPadding | number | 10 | The padding to be added on canvas | - -**How to use** - -```js -import { exportToBlob } from "@excalidraw/excalidraw"; -``` - -Returns a promise which resolves with a [blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob). It internally uses [canvas.ToBlob](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob). - -#### `exportToSvg` - -**_Signature_** - -
-exportToSvg({
-  elements: ExcalidrawElement[],
-  appState: AppState,
-  exportPadding?: number,
-  metadata?: string,
-  files?: BinaryFiles
-})
-
- -| Name | Type | Default | Description | -| --- | --- | --- | --- | -| elements | [Excalidraw Element []](https://github.com/excalidraw/excalidraw/blob/master/src/element/types.ts#L106) | | The elements to exported as svg | -| appState | [AppState](https://github.com/excalidraw/excalidraw/blob/master/src/types.ts#L79) | [defaultAppState](https://github.com/excalidraw/excalidraw/blob/master/src/appState.ts#L11) | The app state of the scene | -| exportPadding | number | 10 | The padding to be added on canvas | -| files | [BinaryFiles](The [`BinaryFiles`](<[BinaryFiles](https://github.com/excalidraw/excalidraw/blob/master/src/types.ts#L64)>) | undefined | The files added to the scene. | - -This function returns a promise which resolves to svg of the exported drawing. - -#### `exportToClipboard` - -**_Signature_** - -
-exportToClipboard(
-  opts: ExportOpts & {
-  mimeType?: string,
-  quality?: number;
-  type: 'png' | 'svg' |'json'
-})
-
- -| Name | Type | Default | Description | -| --- | --- | --- | --- | --- | --- | -| opts | | | This param is same as the params passed to `exportToCanvas`. You can refer to [`exportToCanvas`](#exportToCanvas). | -| mimeType | string | "image/png" | Indicates the image format, this will be used when exporting as `png`. | -| quality | number | 0.92 | A value between 0 and 1 indicating the [image quality](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob#parameters). Applies only to `image/jpeg`/`image/webp` MIME types. This will be used when exporting as `png`. | -| type | 'png' | 'svg' | 'json' | | This determines the format to which the scene data should be exported. | - -**How to use** - -```js -import { exportToClipboard } from "@excalidraw/excalidraw"; -``` - -Copies the scene data in the specified format (determined by `type`) to clipboard. - -##### Additional attributes of appState for `export\*` APIs - -| Name | Type | Default | Description | -| --- | --- | --- | --- | -| exportBackground | boolean | true | Indicates whether background should be exported | -| viewBackgroundColor | string | #fff | The default background color | -| exportWithDarkMode | boolean | false | Indicates whether to export with dark mode | -| exportEmbedScene | boolean | false | Indicates whether scene data should be embedded in svg/png. This will increase the image size. | - -### Extra API's - -#### `serializeAsJSON` - -**_Signature_** - -
-serializeAsJSON({
-  elements: ExcalidrawElement[],
-  appState: AppState,
-}): string
-
- -Takes the scene elements and state and returns a JSON string. Deleted `elements`as well as most properties from `AppState` are removed from the resulting JSON. (see [`serializeAsJSON()`](https://github.com/excalidraw/excalidraw/blob/master/src/data/json.ts#L16) source for details). - -If you want to overwrite the source field in the JSON string, you can set `window.EXCALIDRAW_EXPORT_SOURCE` to the desired value. - -#### `serializeLibraryAsJSON` - -**_Signature_** - -
-serializeLibraryAsJSON({
-  libraryItems: LibraryItems[],
-
- -Takes the library items and returns a JSON string. - -If you want to overwrite the source field in the JSON string, you can set `window.EXCALIDRAW_EXPORT_SOURCE` to the desired value. - -#### `getSceneVersion` - -**How to use** - -
-import { getSceneVersion } from "@excalidraw/excalidraw";
-getSceneVersion(elements:  ExcalidrawElement[])
-
- -This function returns the current scene version. - -#### `isInvisiblySmallElement` - -**_Signature_** - -
-isInvisiblySmallElement(element:  ExcalidrawElement): boolean
-
- -**How to use** - -```js -import { isInvisiblySmallElement } from "@excalidraw/excalidraw"; -``` - -Returns `true` if element is invisibly small (e.g. width & height are zero). - -#### `loadLibraryFromBlob` - -```js -import { loadLibraryFromBlob } from "@excalidraw/excalidraw"; -``` - -**_Signature_** - -
-loadLibraryFromBlob(blob: Blob, defaultStatus: "published" | "unpublished")
-
- -This function loads the library from the blob. Additonally takes `defaultStatus` param which sets the default status for library item if not present, defaults to `unpublished`. - -#### `loadFromBlob` - -**How to use** - -```js -import { loadFromBlob } from "@excalidraw/excalidraw"; - -const scene = await loadFromBlob(file, null, null); -excalidrawAPI.updateScene(scene); -``` - -**Signature** - -
-loadFromBlob(
-  blob: Blob,
-  localAppState: AppState | null,
-  localElements: ExcalidrawElement[] | null,
-  fileHandle?: FileSystemHandle | null
-) => Promise<RestoredDataState>
-
- -This function loads the scene data from the blob (or file). If you pass `localAppState`, `localAppState` value will be preferred over the `appState` derived from `blob`. Throws if blob doesn't contain valid scene data. - -#### `loadSceneOrLibraryFromBlob` - -**How to use** - -```js -import { loadSceneOrLibraryFromBlob, MIME_TYPES } from "@excalidraw/excalidraw"; - -const contents = await loadSceneOrLibraryFromBlob(file, null, null); -if (contents.type === MIME_TYPES.excalidraw) { - excalidrawAPI.updateScene(contents.data); -} else if (contents.type === MIME_TYPES.excalidrawlib) { - excalidrawAPI.updateLibrary(contents.data); -} -``` - -**Signature** - -
-loadSceneOrLibraryFromBlob(
-  blob: Blob,
-  localAppState: AppState | null,
-  localElements: ExcalidrawElement[] | null,
-  fileHandle?: FileSystemHandle | null
-) => Promise<{ type: string, data: RestoredDataState | ImportedLibraryState}>
-
- -This function loads either scene or library data from the supplied blob. If the blob contains scene data, and you pass `localAppState`, `localAppState` value will be preferred over the `appState` derived from `blob`. Throws if blob doesn't contain neither valid scene data or library data. - -#### `getFreeDrawSvgPath` - -**How to use** - -```js -import { getFreeDrawSvgPath } from "@excalidraw/excalidraw"; -``` - -**Signature** - -
-getFreeDrawSvgPath(element: ExcalidrawFreeDrawElement
-
- -This function returns the free draw svg path for the element. - -#### `isLinearElement` - -**How to use** - -```js -import { isLinearElement } from "@excalidraw/excalidraw"; -``` - -**Signature** - -
-isLinearElement(elementType?: ExcalidrawElement): boolean
-
- -This function returns true if the element is linear type (`arrow` |`line`) else returns false. - -#### `getNonDeletedElements` - -**How to use** - -```js -import { getNonDeletedElements } from "@excalidraw/excalidraw"; -``` - -**Signature** - -
-getNonDeletedElements(elements:  readonly ExcalidrawElement[]): as readonly NonDeletedExcalidrawElement[]
-
- -This function returns an array of deleted elements. - -#### `mergeLibraryItems` - -```js -import { mergeLibraryItems } from "@excalidraw/excalidraw"; -``` - -**_Signature_** - -
-mergeLibraryItems(localItems: LibraryItems, otherItems: LibraryItems) => LibraryItems
-
- -This function merges two `LibraryItems` arrays, where unique items from `otherItems` are sorted first in the returned array. - -#### `parseLibraryTokensFromUrl` - -**How to use** - -```js -import { parseLibraryTokensFromUrl } from "@excalidraw/excalidraw"; -``` - -**Signature** - -
-parseLibraryTokensFromUrl(): {
-    libraryUrl: string;
-    idToken: string | null;
-} | null
-
- -Parses library parameters from URL if present (expects the `#addLibrary` hash key), and returns an object with the `libraryUrl` and `idToken`. Returns `null` if `#addLibrary` hash key not found. - -#### `useHandleLibrary` - -**How to use** - -```js -import { useHandleLibrary } from "@excalidraw/excalidraw"; - -export const App = () => { - // ... - useHandleLibrary({ excalidrawAPI }); -}; -``` - -**Signature** - -
-useHandleLibrary(opts: {
-  excalidrawAPI: ExcalidrawAPI,
-  getInitialLibraryItems?: () => LibraryItemsSource
-});
-
- -A hook that automatically imports library from url if `#addLibrary` hash key exists on initial load, or when it changes during the editing session (e.g. when a user installs a new library), and handles initial library load if `getInitialLibraryItems` getter is supplied. - -In the future, we will be adding support for handling library persistence to browser storage (or elsewhere). - -#### `sceneCoordsToViewportCoords` - -```js -import { sceneCoordsToViewportCoords } from "@excalidraw/excalidraw"; -``` - -**_Signature_** - -
-sceneCoordsToViewportCoords({sceneX: number, sceneY: number}, appState: AppState): {x: number, y: number}
-
- -This function returns equivalent viewport coords for the provided scene coords in params. - -#### `viewportCoordsToSceneCoords` - -```js -import { viewportCoordsToSceneCoords } from "@excalidraw/excalidraw"; -``` - -**_Signature_** - -
-viewportCoordsToSceneCoords({clientX: number, clientY: number}, appState: AppState): {x: number, y: number}
-
- -This function returns equivalent scene coords for the provided viewport coords in params. - -#### useDevice - -This hook can be used to check the type of device which is being used. It can only be used inside the `children` of `Excalidraw` component - -```js -import { useDevice, Footer } from "@excalidraw/excalidraw"; - -const MobileFooter = () => { - const device = useDevice(); - if (device.isMobile) { - return ( -
- -
- ); - } - return null; - -}; -const App = () => { - - - Item1 - Item 2 - - - -} - -``` - -The `device` has the following `attributes` - -| Name | Type | Description | -| --- | --- | --- | -| `isSmScreen` | `boolean` | Set to `true` when the device small screen is small (Width < `640px` ) | -| `isMobile` | `boolean` | Set to `true` when the device is `mobile` | -| `isTouchScreen` | `boolean` | Set to `true` for `touch` devices | -| `canDeviceFitSidebar` | `boolean` | Implies whether there is enough space to fit the `sidebar` | - -### Exported constants - -#### `FONT_FAMILY` - -**How to use** - -```js -import { FONT_FAMILY } from "@excalidraw/excalidraw"; -``` - -`FONT_FAMILY` contains all the font families used in `Excalidraw` as explained below - -| Font Family | Description | -| ----------- | -------------------- | -| Virgil | The handwritten font | -| Helvetica | The Normal Font | -| Cascadia | The Code Font | - -Defaults to `FONT_FAMILY.Virgil` unless passed in `initialData.appState.currentItemFontFamily`. - -#### `THEME` - -**How to use** - -```js -import { THEME } from "@excalidraw/excalidraw"; -``` - -`THEME` contains all the themes supported by `Excalidraw` as explained below - -| Theme | Description | -| ----- | --------------- | -| LIGHT | The light theme | -| DARK | The Dark theme | - -Defaults to `THEME.LIGHT` unless passed in `initialData.appState.theme` - -### `MIME_TYPES` - -**How to use ** - -```js -import { MIME_TYPES } from "@excalidraw/excalidraw"; -``` - -[`MIME_TYPES`](https://github.com/excalidraw/excalidraw/blob/master/src/constants.ts#L92) contains all the mime types supported by `Excalidraw`. - -## Need help? - -Check out the existing [Q&A](https://github.com/excalidraw/excalidraw/discussions?discussions_q=label%3Apackage%3Aexcalidraw). If you have any queries or need help, ask us [here](https://github.com/excalidraw/excalidraw/discussions?discussions_q=label%3Apackage%3Aexcalidraw). - -### Development - -#### Install the dependencies - -```bash -yarn -``` - -#### Start the server - -```bash -yarn start -``` - -[http://localhost:3001](http://localhost:3001) will open in your default browser. - -The example is same as the [codesandbox example](https://ehlz3.csb.app/) - -#### Create a test release - -You can create a test release by posting the below comment in your pull request - -``` -@excalibot trigger release -``` - -Once the version is released `@excalibot` will post a comment with the release version. - -#### Creating a production release - -To release the next stable version follow the below steps - -``` -yarn prerelease version -``` - -You need to pass the `version` for which you want to create the release. This will make the changes needed before making the release like updating `package.json`, `changelog` and more. - -The next step is to run the `release` script - -``` -yarn release -``` +Head over to the [docs](https://docs.excalidraw.com/docs/package/integration) -This will publish the package. +## API -Right now there are two steps to create a production release but once this works fine these scripts will be combined and more automation will be done. +Head over to the [docs](https://docs.excalidraw.com/docs/package/api) diff --git a/src/packages/excalidraw/example/App.scss b/src/packages/excalidraw/example/App.scss index a2a70da2..7f37540d 100644 --- a/src/packages/excalidraw/example/App.scss +++ b/src/packages/excalidraw/example/App.scss @@ -66,11 +66,18 @@ button.custom-element { width: 2rem; height: 2rem; - margin: 0 8px; } .custom-footer, .custom-element { padding: 0.1rem; + margin: 0 8px; + } + .layer-ui__wrapper__footer.App-menu_bottom { + align-items: stretch; + } + // till its merged in OSS + .App-toolbar-container .mobile-misc-tools-container { + position: absolute; } } diff --git a/src/packages/excalidraw/example/App.tsx b/src/packages/excalidraw/example/App.tsx index 21f91ecd..e394d1a1 100644 --- a/src/packages/excalidraw/example/App.tsx +++ b/src/packages/excalidraw/example/App.tsx @@ -71,6 +71,7 @@ const { restoreElements, Sidebar, Footer, + WelcomeScreen, MainMenu, LiveCollaborationTrigger, } = window.ExcalidrawLib; @@ -704,6 +705,7 @@ export default function App() { )} + {renderMenu()} {Object.keys(commentIcons || []).length > 0 && renderCommentIcons()} diff --git a/src/packages/utils/README.md b/src/packages/utils/README.md index 03337854..a6e4eabc 100644 --- a/src/packages/utils/README.md +++ b/src/packages/utils/README.md @@ -28,7 +28,7 @@ Export an Excalidraw diagram to a [SVGElement](https://developer.mozilla.org/en- ## Usage -Excalidraw utils is published as a UMD (Universal Module Definition). If you are using a Web bundler (for instance, Webpack), you can import it as an ES6 module: +Excalidraw utils is published as a UMD (Universal Module Definition). If you are using a module bundler (for instance, Webpack), you can import it as an ES6 module: ```js import { exportToSvg, exportToBlob } from "@excalidraw/utils";