647d03a173
This PR fixes some bugs related to our coordinate systems. These bugs would appear when the editor was not full screen. ![Kapture 2024-02-04 at 11 53 37](https://github.com/tldraw/tldraw/assets/23072548/9c2199f3-b34d-4fe1-a3e5-d0c65fe5a11e) In short, we were being inconsistent with whether the `currentScreenPoint` was relative to the top left corner of the component or the top left corner of the page that contained the component. Here's the actual system: <img width="898" alt="image" src="https://github.com/tldraw/tldraw/assets/23072548/c49b3686-aeb6-4164-a55d-8639d40290a1"> The `viewportPageBounds` describes the bounds of the component within the browser's space. Its `x` and `y` describe the delta in browser space between the top left corner of the **page** and the component. This is not effected by scrolling. The use's `screenPoint` describes the user's cursor's location relative to the `viewportPageBounds`. Its `x` and `y` describe the delta in browser space between the top left corner of the **component** and the cursor. While this is a bug fix, I'm marking it as major as apps may be depending on the previous (broken) behavior. ### Change Type - [x] `major` — Breaking change ### Test Plan 1. Zoom in, out, and pinch on an editor that isn't full screen. 2. Zoom in, out, and pinch on an editor that is full screen. 3. Drag and scroll on an editor that isn't full screen. 4. Drag and scroll on an editor that is full screen. - [x] Unit Tests ### Release Notes - Fixed bugs with `getViewportScreenCenter` that could effect zooming and pinching on editors that aren't full screen |
||
---|---|---|
.github | ||
.husky | ||
.yarn/patches | ||
apps | ||
assets | ||
config | ||
packages | ||
scripts | ||
.dockerignore | ||
.eslintignore | ||
.eslintplugin.js | ||
.eslintrc.js | ||
.gitignore | ||
.ignore | ||
.prettierignore | ||
.prettierrc | ||
.yarnrc.yml | ||
CHANGELOG.md | ||
CLA.md | ||
CODE_OF_CONDUCT.md | ||
CONTRIBUTING.md | ||
lazy.config.ts | ||
lerna.json | ||
LICENSE.md | ||
package.json | ||
README.md | ||
TRADEMARKS.md | ||
yarn.config.cjs | ||
yarn.lock |
tldraw
Welcome to the public monorepo for tldraw. tldraw is a library for creating infinite canvas experiences in React. It's the software behind the digital whiteboard tldraw.com.
- Read the docs and learn more at tldraw.dev.
- Learn about our license.
Local development
The local development server will run our examples app. The basic example will show any changes you've made to the codebase.
To run the local development server, first clone this repo.
Install dependencies:
yarn
Start the local development server:
yarn dev
Open the example project at localhost:5420
.
License
tldraw's source code and distributed packages are provided under the non-commercial tldraw license.
This license does not permit commercial use. If you wish to use tldraw in a commercial product or enterprise, you will need to purchase a commercial license. To obtain a commercial license, please contact us at hello@tldraw.com.
To learn more, see our license page.
Trademarks
The tldraw name and logo are trademarks of tldraw. Please see our trademark guidelines for info on acceptable usage.
Community
Have questions, comments or feedback? Join our discord or start a discussion.
Contribution
Please see our contributing guide. Found a bug? Please submit an issue.
Contact
Find us on Twitter at @tldraw or email hello@tldraw.com. You can also join our discord for quick help and support.