3035 commits
Author | SHA1 | Message | Date | |
---|---|---|---|---|
alex
|
91903c9761
|
Move arrow helpers from editor to tldraw (#3721)
With the new work on bindings, we no longer need to keep any arrows stuff hard-coded in `editor`, so let's move it to `tldraw` with the rest of the shapes. Couple other changes as part of this: - We had two different types of `WeakMap` backed cache, but we now only have one - There's a new free-standing version of `createComputedCache` that doesn't need access to the editor/store in order to create the cache. instead, it returns a `{get(editor, id)}` object and instantiates the cache on a per-editor basis for each call. - Fixed a bug in `createSelectedComputedCache` where the selector derivation would get re-created on every call to `get` ### Change Type - [x] `sdk` — Changes the tldraw SDK - [x] `improvement` — Improving existing features ### Release Notes #### Breaking changes - `editor.getArrowInfo(shape)` has been replaced with `getArrowInfo(editor, shape)` - `editor.getArrowsBoundTo(shape)` has been removed. Instead, use `editor.getBindingsToShape(shape, 'arrow')` and follow the `fromId` of each binding to the corresponding arrow shape - These types have moved from `@tldraw/editor` to `tldraw`: - `TLArcInfo` - `TLArrowInfo` - `TLArrowPoint` - `WeakMapCache` has been removed |
||
Trevor Dobbertin
|
7b99c8532b
|
fix link (#3726)
Describe what your pull request does. If appropriate, add GIFs or images showing the before and after. ### Change Type <!-- ❗ Please select a 'Scope' label ❗️ --> - [ ] `sdk` — Changes the tldraw SDK - [ ] `dotcom` — Changes the tldraw.com web app - [x] `docs` — Changes to the documentation, examples, or templates. - [ ] `vs code` — Changes to the vscode plugin - [ ] `internal` — Does not affect user-facing stuff <!-- ❗ Please select a 'Type' label ❗️ --> - [x] `bugfix` — Bug fix - [ ] `feature` — New feature - [ ] `improvement` — Improving existing features - [ ] `chore` — Updating dependencies, other boring stuff - [ ] `galaxy brain` — Architectural changes - [ ] `tests` — Changes to any test code - [ ] `tools` — Changes to infrastructure, CI, internal scripts, debugging tools, etc. - [ ] `dunno` — I don't know ### Test Plan 1. Add a step-by-step description of how to test your PR here. 2. - [ ] Unit Tests - [ ] End to end tests ### Release Notes - Add a brief release note for your PR here. Just a small link fix for the docs. |
||
David Sheldrick
|
c6ba621c11
|
Incremental bindings index (#3685) | ||
alex
|
da35f2bd75
|
Bindings (#3326)
First draft of the new bindings API. We'll follow this up with some API refinements, tests, documentation, and examples. Bindings are a new record type for establishing relationships between two shapes so they can update at the same time. ### Change Type - [x] `sdk` — Changes the tldraw SDK - [x] `feature` — New feature ### Release Notes #### Breaking changes - The `start` and `end` properties on `TLArrowShape` no longer have `type: point | binding`. Instead, they're always a point, which may be out of date if a binding exists. To check for & retrieve arrow bindings, use `getArrowBindings(editor, shape)` instead. - `getArrowTerminalsInArrowSpace` must be passed a `TLArrowBindings` as a third argument: `getArrowTerminalsInArrowSpace(editor, shape, getArrowBindings(editor, shape))` - The following types have been renamed: - `ShapeProps` -> `RecordProps` - `ShapePropsType` -> `RecordPropsType` - `TLShapePropsMigrations` -> `TLPropsMigrations` - `SchemaShapeInfo` -> `SchemaPropsInfo` --------- Co-authored-by: David Sheldrick <d.j.sheldrick@gmail.com> |
||
dependabot[bot]
|
0a7816e34d
|
Bump the npm_and_yarn group across 2 directories with 4 updates (#3719)
Bumps the npm_and_yarn group with 3 updates in the / directory: [pdfjs-dist](https://github.com/mozilla/pdfjs-dist), [semver](https://github.com/npm/node-semver) and [zod](https://github.com/colinhacks/zod). Bumps the npm_and_yarn group with 2 updates in the /templates/vite directory: [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) and [semver](https://github.com/npm/node-semver). Updates `pdfjs-dist` from 4.0.379 to 4.2.67 <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/mozilla/pdfjs-dist/commits">compare view</a></li> </ul> </details> <br /> Updates `semver` from 7.6.0 to 7.6.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/npm/node-semver/releases">semver's releases</a>.</em></p> <blockquote> <h2>v7.6.1</h2> <h2><a href="https://github.com/npm/node-semver/compare/v7.6.0...v7.6.1">7.6.1</a> (2024-05-04)</h2> <h3>Bug Fixes</h3> <ul> <li><a href=" |
||
Mitja Bezenšek
|
2dd71f8510
|
Measure action durations and fps for our interactions (#3472)
Adds a feature flag `Measure performance` that allows us to: - Measure the performance of all the actions (it wraps them into `measureCbDuration`). - Measure the frame rate of certain interactions like resizing, erasing,.... Example of how it looks like: ![CleanShot 2024-04-17 at 18 04 05](https://github.com/tldraw/tldraw/assets/2523721/0fb69745-f7b2-4b55-ac01-27ea26963d9a) ### Change Type <!-- ❗ Please select a 'Scope' label ❗️ --> - [ ] `sdk` — Changes the tldraw SDK - [ ] `dotcom` — Changes the tldraw.com web app - [ ] `docs` — Changes to the documentation, examples, or templates. - [ ] `vs code` — Changes to the vscode plugin - [x] `internal` — Does not affect user-facing stuff <!-- ❗ Please select a 'Type' label ❗️ --> - [ ] `bugfix` — Bug fix - [ ] `feature` — New feature - [ ] `improvement` — Improving existing features - [ ] `chore` — Updating dependencies, other boring stuff - [ ] `galaxy brain` — Architectural changes - [ ] `tests` — Changes to any test code - [x] `tools` — Changes to infrastructure, CI, internal scripts, debugging tools, etc. - [ ] `dunno` — I don't know = --------- Co-authored-by: Mime Čuvalo <mimecuvalo@gmail.com> |
||
Mitja Bezenšek
|
ddebf3fc5c
|
Move storing of snapshots to R2 (#3693)
Instead of storing them in supabse we will store them in r2. I have already created `room-snapshots` and `room-snapshots-preview` buckets on cloudflare. We could also migrate all the data from supabase, but it seems we haven't done so for the rooms, so I also didn't look into doing it for snapshots. One slight drawback of moving to R2 is that it's harder to query data by parent slug. So answering questions like which room is the parent to the most snapshots is a bit harder to answer. Instead of just a simple query we'd need to do some custom logic to go through the bucket. Not sure if have ever needed this info though. ### Change Type <!-- ❗ Please select a 'Scope' label ❗️ --> - [ ] `sdk` — Changes the tldraw SDK - [x] `dotcom` — Changes the tldraw.com web app - [ ] `docs` — Changes to the documentation, examples, or templates. - [ ] `vs code` — Changes to the vscode plugin - [ ] `internal` — Does not affect user-facing stuff <!-- ❗ Please select a 'Type' label ❗️ --> - [ ] `bugfix` — Bug fix - [ ] `feature` — New feature - [x] `improvement` — Improving existing features - [ ] `chore` — Updating dependencies, other boring stuff - [ ] `galaxy brain` — Architectural changes - [ ] `tests` — Changes to any test code - [ ] `tools` — Changes to infrastructure, CI, internal scripts, debugging tools, etc. - [ ] `dunno` — I don't know ### Test Plan Existing snapshots: 1. Load an existing snapshot. It should still load correctly. The best way to do that is probably to generate a few of them in advance. New snapshots: 1. Create a new room. 2. Create a few snapshot links. 3. They should work. - [ ] Unit Tests - [ ] End to end tests ### Release Notes - Move storing of snapshots to cloudflare R2. |
||
dependabot[bot]
|
a2f4d35579
|
Bump the npm_and_yarn group across 2 directories with 6 updates (#3712)
Bumps the npm_and_yarn group with 3 updates in the / directory: [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite), [tar](https://github.com/isaacs/node-tar) and [zod](https://github.com/colinhacks/zod). Bumps the npm_and_yarn group with 4 updates in the /templates/vite directory: [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite), [tar](https://github.com/isaacs/node-tar), [semver](https://github.com/npm/node-semver) and [word-wrap](https://github.com/jonschlinkert/word-wrap). Updates `vite` from 5.2.9 to 5.2.11 <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md">vite's changelog</a>.</em></p> <blockquote> <h2><!-- raw HTML omitted -->5.2.11 (2024-05-02)<!-- raw HTML omitted --></h2> <ul> <li>feat: improve dynamic import variable failure error message (<a href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/16519">#16519</a>) (<a href="https://github.com/vitejs/vite/commit/f8feeea">f8feeea</a>), closes <a href="https://redirect.github.com/vitejs/vite/issues/16519">#16519</a></li> <li>fix: dynamic-import-vars plugin normalize path issue (<a href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/16518">#16518</a>) (<a href="https://github.com/vitejs/vite/commit/f71ba5b">f71ba5b</a>), closes <a href="https://redirect.github.com/vitejs/vite/issues/16518">#16518</a></li> <li>fix: scripts and styles were missing from built HTML on Windows (<a href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/16421">#16421</a>) (<a href="https://github.com/vitejs/vite/commit/0e93f58">0e93f58</a>), closes <a href="https://redirect.github.com/vitejs/vite/issues/16421">#16421</a></li> <li>fix(deps): update all non-major dependencies (<a href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/16488">#16488</a>) (<a href="https://github.com/vitejs/vite/commit/2d50be2">2d50be2</a>), closes <a href="https://redirect.github.com/vitejs/vite/issues/16488">#16488</a></li> <li>fix(deps): update all non-major dependencies (<a href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/16549">#16549</a>) (<a href="https://github.com/vitejs/vite/commit/2d6a13b">2d6a13b</a>), closes <a href="https://redirect.github.com/vitejs/vite/issues/16549">#16549</a></li> <li>fix(dev): watch publicDir explicitly to include it outside the root (<a href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/16502">#16502</a>) (<a href="https://github.com/vitejs/vite/commit/4d83eb5">4d83eb5</a>), closes <a href="https://redirect.github.com/vitejs/vite/issues/16502">#16502</a></li> <li>fix(preload): skip preload for non-static urls (<a href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/16556">#16556</a>) (<a href="https://github.com/vitejs/vite/commit/bb79c9b">bb79c9b</a>), closes <a href="https://redirect.github.com/vitejs/vite/issues/16556">#16556</a></li> <li>fix(ssr): handle class declaration and expression name scoping (<a href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/16569">#16569</a>) (<a href="https://github.com/vitejs/vite/commit/c071eb3">c071eb3</a>), closes <a href="https://redirect.github.com/vitejs/vite/issues/16569">#16569</a></li> <li>fix(ssr): handle function expression name scoping (<a href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/16563">#16563</a>) (<a href="https://github.com/vitejs/vite/commit/02db947">02db947</a>), closes <a href="https://redirect.github.com/vitejs/vite/issues/16563">#16563</a></li> </ul> <h2><!-- raw HTML omitted -->5.2.10 (2024-04-20)<!-- raw HTML omitted --></h2> <ul> <li>revert: perf: use workspace root for fs cache (<a href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/15712">#15712</a>) (<a href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/16476">#16476</a>) (<a href="https://github.com/vitejs/vite/commit/77e7359">77e7359</a>), closes <a href="https://redirect.github.com/vitejs/vite/issues/15712">#15712</a> <a href="https://redirect.github.com/vitejs/vite/issues/16476">#16476</a></li> <li>fix: add base to virtual html (<a href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/16442">#16442</a>) (<a href="https://github.com/vitejs/vite/commit/721f94d">721f94d</a>), closes <a href="https://redirect.github.com/vitejs/vite/issues/16442">#16442</a></li> <li>fix: adjust esm syntax judgment logic (<a href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/16436">#16436</a>) (<a href="https://github.com/vitejs/vite/commit/af72eab">af72eab</a>), closes <a href="https://redirect.github.com/vitejs/vite/issues/16436">#16436</a></li> <li>fix: don't add outDirs to watch.ignored if emptyOutDir is false (<a href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/16453">#16453</a>) (<a href="https://github.com/vitejs/vite/commit/6a127d6">6a127d6</a>), closes <a href="https://redirect.github.com/vitejs/vite/issues/16453">#16453</a></li> <li>fix(cspNonce): don't overwrite existing nonce values (<a href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/16415">#16415</a>) (<a href="https://github.com/vitejs/vite/commit/b872635">b872635</a>), closes <a href="https://redirect.github.com/vitejs/vite/issues/16415">#16415</a></li> <li>feat: show warning if root is in build.outDir (<a href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/16454">#16454</a>) (<a href="https://github.com/vitejs/vite/commit/11444dc">11444dc</a>), closes <a href="https://redirect.github.com/vitejs/vite/issues/16454">#16454</a></li> <li>feat: write cspNonce to style tags (<a href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/16419">#16419</a>) (<a href="https://github.com/vitejs/vite/commit/8e54bbd">8e54bbd</a>), closes <a href="https://redirect.github.com/vitejs/vite/issues/16419">#16419</a></li> <li>chore(deps): update dependency eslint-plugin-n to v17 (<a href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/16381">#16381</a>) (<a href="https://github.com/vitejs/vite/commit/6cccef7">6cccef7</a>), closes <a href="https://redirect.github.com/vitejs/vite/issues/16381">#16381</a></li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
Mitja Bezenšek
|
ec5eded41b
|
Add asset pruning when importing files (#3689)
Adds pruning of unused assets when importing files. Pulled out the pruning logic from the exporting of tldraw files and we now use the same logic for both cases. ### Change Type <!-- ❗ Please select a 'Scope' label ❗️ --> - [x] `sdk` — Changes the tldraw SDK - [ ] `dotcom` — Changes the tldraw.com web app - [ ] `docs` — Changes to the documentation, examples, or templates. - [ ] `vs code` — Changes to the vscode plugin - [ ] `internal` — Does not affect user-facing stuff <!-- ❗ Please select a 'Type' label ❗️ --> - [ ] `bugfix` — Bug fix - [ ] `feature` — New feature - [x] `improvement` — Improving existing features - [ ] `chore` — Updating dependencies, other boring stuff - [ ] `galaxy brain` — Architectural changes - [ ] `tests` — Changes to any test code - [ ] `tools` — Changes to infrastructure, CI, internal scripts, debugging tools, etc. - [ ] `dunno` — I don't know ### Release Notes - Prunes unused assets when loading a tldraw document. |
||
Mitja Bezenšek
|
b5caa53cee
|
Fix background color for patterned shapes. (#3708)
Background on exported patterned shapes was not the same as on the shapes themselves. This was especially noticeable in dark mode. I'm not sure if this is the colour we want to use as this changes the existing shape colour. But it is in line to what we had a while back. In any case [generateImage](https://github.com/tldraw/tldraw/blob/main/packages/tldraw/src/lib/shapes/shared/defaultStyleDefs.tsx#L113) should be using the same colour as [HashPatternForExport](https://github.com/tldraw/tldraw/blob/main/packages/tldraw/src/lib/shapes/shared/defaultStyleDefs.tsx#L88). ### Before ![image](https://github.com/tldraw/tldraw/assets/2523721/2772818e-7461-4cea-a36b-c16c8206b9d5) ### After ![image](https://github.com/tldraw/tldraw/assets/2523721/2bbe189c-fa18-4198-b9b3-1851c2336cf1) ### Change Type <!-- ❗ Please select a 'Scope' label ❗️ --> - [x] `sdk` — Changes the tldraw SDK - [ ] `dotcom` — Changes the tldraw.com web app - [ ] `docs` — Changes to the documentation, examples, or templates. - [ ] `vs code` — Changes to the vscode plugin - [ ] `internal` — Does not affect user-facing stuff <!-- ❗ Please select a 'Type' label ❗️ --> - [x] `bugfix` — Bug fix - [ ] `feature` — New feature - [ ] `improvement` — Improving existing features - [ ] `chore` — Updating dependencies, other boring stuff - [ ] `galaxy brain` — Architectural changes - [ ] `tests` — Changes to any test code - [ ] `tools` — Changes to infrastructure, CI, internal scripts, debugging tools, etc. - [ ] `dunno` — I don't know ### Test Plan 1. Add patterned shapes. 2. Copy them as SVG. 3. Paste them. They should look the same. - [ ] Unit Tests - [ ] End to end tests ### Release Notes - Fixes an issue with copy pasting shapes as svg and png not correctly working for patterned shapes. |
||
Steve Ruiz
|
ebc892a1a6
|
Camera options followups (#3701)
This PR adds a slideshow example (similar to @TodePond's slides but more on rails) as a way to put some pressure on camera controls. Along the way, it fixes some issues I found with animations and the new camera controls. - forced changes will continue to force through animations - animations no longer set unnecessary additional listeners - animations end correctly - updating camera options does not immediately update the camera (to allow for animations, etc.) It also changes the location of the "in front of the canvas" element so that it is not hidden by the hit test blocking element. ### Change Type - [x] `sdk` — Changes the tldraw SDK - [x] `improvement` — Improving existing features |
||
Steve Ruiz
|
fabba66c0f
|
Camera options (#3282)
This PR implements a camera options API. - [x] Initial PR - [x] Updated unit tests - [x] Feedback / review - [x] New unit tests - [x] Update use-case examples - [x] Ship? ## Public API A user can provide camera options to the `Tldraw` component via the `cameraOptions` prop. The prop is also available on the `TldrawEditor` component and the constructor parameters of the `Editor` class. ```tsx export default function CameraOptionsExample() { return ( <div className="tldraw__editor"> <Tldraw cameraOptions={CAMERA_OPTIONS} /> </div> ) } ``` At runtime, a user can: - get the current camera options with `Editor.getCameraOptions` - update the camera options with `Editor.setCameraOptions` Setting the camera options automatically applies them to the current camera. ```ts editor.setCameraOptions({...editor.getCameraOptions(), isLocked: true }) ``` A user can get the "camera fit zoom" via `editor.getCameraFitZoom()`. # Interface The camera options themselves can look a few different ways depending on the `type` provided. ```tsx export type TLCameraOptions = { /** Whether the camera is locked. */ isLocked: boolean /** The speed of a scroll wheel / trackpad pan. Default is 1. */ panSpeed: number /** The speed of a scroll wheel / trackpad zoom. Default is 1. */ zoomSpeed: number /** The steps that a user can zoom between with zoom in / zoom out. The first and last value will determine the min and max zoom. */ zoomSteps: number[] /** Controls whether the wheel pans or zooms. * * - `zoom`: The wheel will zoom in and out. * - `pan`: The wheel will pan the camera. * - `none`: The wheel will do nothing. */ wheelBehavior: 'zoom' | 'pan' | 'none' /** The camera constraints. */ constraints?: { /** The bounds (in page space) of the constrained space */ bounds: BoxModel /** The padding inside of the viewport (in screen space) */ padding: VecLike /** The origin for placement. Used to position the bounds within the viewport when an axis is fixed or contained and zoom is below the axis fit. */ origin: VecLike /** The camera's initial zoom, used also when the camera is reset. * * - `default`: Sets the initial zoom to 100%. * - `fit-x`: The x axis will completely fill the viewport bounds. * - `fit-y`: The y axis will completely fill the viewport bounds. * - `fit-min`: The smaller axis will completely fill the viewport bounds. * - `fit-max`: The larger axis will completely fill the viewport bounds. * - `fit-x-100`: The x axis will completely fill the viewport bounds, or 100% zoom, whichever is smaller. * - `fit-y-100`: The y axis will completely fill the viewport bounds, or 100% zoom, whichever is smaller. * - `fit-min-100`: The smaller axis will completely fill the viewport bounds, or 100% zoom, whichever is smaller. * - `fit-max-100`: The larger axis will completely fill the viewport bounds, or 100% zoom, whichever is smaller. */ initialZoom: | 'fit-min' | 'fit-max' | 'fit-x' | 'fit-y' | 'fit-min-100' | 'fit-max-100' | 'fit-x-100' | 'fit-y-100' | 'default' /** The camera's base for its zoom steps. * * - `default`: Sets the initial zoom to 100%. * - `fit-x`: The x axis will completely fill the viewport bounds. * - `fit-y`: The y axis will completely fill the viewport bounds. * - `fit-min`: The smaller axis will completely fill the viewport bounds. * - `fit-max`: The larger axis will completely fill the viewport bounds. * - `fit-x-100`: The x axis will completely fill the viewport bounds, or 100% zoom, whichever is smaller. * - `fit-y-100`: The y axis will completely fill the viewport bounds, or 100% zoom, whichever is smaller. * - `fit-min-100`: The smaller axis will completely fill the viewport bounds, or 100% zoom, whichever is smaller. * - `fit-max-100`: The larger axis will completely fill the viewport bounds, or 100% zoom, whichever is smaller. */ baseZoom: | 'fit-min' | 'fit-max' | 'fit-x' | 'fit-y' | 'fit-min-100' | 'fit-max-100' | 'fit-x-100' | 'fit-y-100' | 'default' /** The behavior for the constraints for both axes or each axis individually. * * - `free`: The bounds are ignored when moving the camera. * - 'fixed': The bounds will be positioned within the viewport based on the origin * - `contain`: The 'fixed' behavior will be used when the zoom is below the zoom level at which the bounds would fill the viewport; and when above this zoom, the bounds will use the 'inside' behavior. * - `inside`: The bounds will stay completely within the viewport. * - `outside`: The bounds will stay touching the viewport. */ behavior: | 'free' | 'fixed' | 'inside' | 'outside' | 'contain' | { x: 'free' | 'fixed' | 'inside' | 'outside' | 'contain' y: 'free' | 'fixed' | 'inside' | 'outside' | 'contain' } } } ``` ### Change Type - [x] `sdk` — Changes the tldraw SDK - [x] `feature` — New feature ### Test Plan These features combine in different ways, so we'll want to write some more tests to find surprises. 1. Add a step-by-step description of how to test your PR here. 2. - [ ] Unit Tests ### Release Notes - SDK: Adds camera options. --------- Co-authored-by: Mitja Bezenšek <mitja.bezensek@gmail.com> |
||
Mitja Bezenšek
|
db7c3f59bf
|
Prevent duplicate from creating any shapes if we reach max allowed shapes (#3692)
This prevents duplicating shapes if we get to the max allowed shapes. Before this change we would create as many shapes as we could and skip the rest. After this change we don't create any shapes in this case. We already do this for [copy pasting](https://github.com/tldraw/tldraw/blob/mitja%2Fduplicate-shapes/packages/editor/src/lib/editor/Editor.ts#L7595-L7600) (via `putContentOntoCurrentPage`), so no change was needed there. Resolves https://github.com/tldraw/tldraw/issues/3669 ### Change Type <!-- ❗ Please select a 'Scope' label ❗️ --> - [x] `sdk` — Changes the tldraw SDK - [ ] `dotcom` — Changes the tldraw.com web app - [ ] `docs` — Changes to the documentation, examples, or templates. - [ ] `vs code` — Changes to the vscode plugin - [ ] `internal` — Does not affect user-facing stuff <!-- ❗ Please select a 'Type' label ❗️ --> - [ ] `bugfix` — Bug fix - [ ] `feature` — New feature - [x] `improvement` — Improving existing features - [ ] `chore` — Updating dependencies, other boring stuff - [ ] `galaxy brain` — Architectural changes - [ ] `tests` — Changes to any test code - [ ] `tools` — Changes to infrastructure, CI, internal scripts, debugging tools, etc. - [ ] `dunno` — I don't know ### Test Plan 1. Create close to 2000 shapes. 2. Select so many shapes that duplicating them would go over the 2000 shapes per page limit. 3. Duplicate. 4. You should not create any shapes even if there is space for some of them. - [ ] Unit Tests - [ ] End to end tests ### Release Notes - Prevent duplicating shapes if we would go over the maximum shape limit. It's now an all or nothing operation, where as before some shapes would get created. |
||
Mime Čuvalo
|
68bc29f103
|
textfields: fix RTL layout for SVG exports (#3680)
Followup to https://github.com/tldraw/tldraw/pull/3188 (although this problem was there before that PR) This does more work for RTL rendering in SVG context, especially since we position each span one-by-one. I had to do a bit of esoteric spelunking and it turns out [`unicode-bidi: plaintext`](https://developer.mozilla.org/en-US/docs/Web/CSS/unicode-bidi) solves our issue even though it isn't really recommend to be used by web developers. Fun times 🙃 Before: <img width="369" alt="Screenshot 2024-05-02 at 11 45 44" src="https://github.com/tldraw/tldraw/assets/469604/df55e03a-4760-4b8f-adad-ed1a8c13ad51"> After: <img width="365" alt="Screenshot 2024-05-02 at 11 54 48" src="https://github.com/tldraw/tldraw/assets/469604/3339bbf4-041a-4fdf-8b6e-6fa19dfb0a9e"> ### Change Type <!-- ❗ Please select a 'Scope' label ❗️ --> - [x] `sdk` — Changes the tldraw SDK - [ ] `dotcom` — Changes the tldraw.com web app - [ ] `docs` — Changes to the documentation, examples, or templates. - [ ] `vs code` — Changes to the vscode plugin - [ ] `internal` — Does not affect user-facing stuff <!-- ❗ Please select a 'Type' label ❗️ --> - [x] `bugfix` — Bug fix - [ ] `feature` — New feature - [ ] `improvement` — Improving existing features - [ ] `chore` — Updating dependencies, other boring stuff - [ ] `galaxy brain` — Architectural changes - [ ] `tests` — Changes to any test code - [ ] `tools` — Changes to infrastructure, CI, internal scripts, debugging tools, etc. - [ ] `dunno` — I don't know ### Test Plan 1. Test LTR text. 2. Test RTL text. 3. Test mixed LTR/RTL on different lines. - [ ] Unit Tests - [x] End to end tests ### Release Notes - [Add a brief release note for your PR here.](textfields: fix RTL layout for SVG exports) --------- Co-authored-by: huppy-bot[bot] <128400622+huppy-bot[bot]@users.noreply.github.com> |
||
Mitja Bezenšek
|
c308cc2edd
|
Prevent unnecessary fetching of readonly slugs (#3663)
Prevents unnecessary fetching of readonly slugs. We only need to fetch it if we don't have it yet. There was also a weird issue with `window.location.href` sometimes returning encoded search params and sometimes decoded ones: ![image](https://github.com/tldraw/tldraw/assets/2523721/ca1e36c6-5e86-4e48-9350-c53de32a9f2e) This then caused an additional fetch in the `setInterval` since the [urls did not match](https://github.com/tldraw/tldraw/blob/main/apps/dotcom/src/components/ShareMenu.tsx#L140). ![CleanShot 2024-04-30 at 14 37 12](https://github.com/tldraw/tldraw/assets/2523721/b1c540aa-902a-4574-a8e7-a0507f7dbda2) Resolves https://github.com/tldraw/tldraw/issues/3661 ### Change Type <!-- ❗ Please select a 'Scope' label ❗️ --> - [ ] `sdk` — Changes the tldraw SDK - [x] `dotcom` — Changes the tldraw.com web app - [ ] `docs` — Changes to the documentation, examples, or templates. - [ ] `vs code` — Changes to the vscode plugin - [ ] `internal` — Does not affect user-facing stuff <!-- ❗ Please select a 'Type' label ❗️ --> - [ ] `bugfix` — Bug fix - [ ] `feature` — New feature - [x] `improvement` — Improving existing features - [ ] `chore` — Updating dependencies, other boring stuff - [ ] `galaxy brain` — Architectural changes - [ ] `tests` — Changes to any test code - [ ] `tools` — Changes to infrastructure, CI, internal scripts, debugging tools, etc. - [ ] `dunno` — I don't know ### Test Plan 1. Open a multiplayer room. You should only see one fetch for the readonly slug. 1. Open a local room. 2. Share it. You should only see one fetch for the readonly slug. - [ ] Unit Tests - [ ] End to end tests ### Release Notes - Prevent unnecessary fetching of readonly slugs. |
||
Mitja Bezenšek
|
1366a15b7a
|
VS Code 2.0.33 (#3687)
VS Code version bump. As I mentioned in the standup there's a slight issue with VS Code releases. We usually do a release, after that I create a VS Code extension release (bump the package version, add the changelog). Which means that if we then do a hotfix it does not have these changes as they were added after a deploy. So for this hotfix I did the following: - checked out `hotfixes` branch - created a new branch - bumped package.json version and added change log - committed it to the branch - created a vs code extension package and published it I don't think it makes sense to merge it back to hotfixes branch as it would just create a new deploy with no changes. Next I created this PR to get the changes to `main`. - went to `main` - created this branch from there and cherry picked the commit created above ### Change Type <!-- ❗ Please select a 'Scope' label ❗️ --> - [ ] `sdk` — Changes the tldraw SDK - [ ] `dotcom` — Changes the tldraw.com web app - [ ] `docs` — Changes to the documentation, examples, or templates. - [x] `vs code` — Changes to the vscode plugin - [ ] `internal` — Does not affect user-facing stuff <!-- ❗ Please select a 'Type' label ❗️ --> - [ ] `bugfix` — Bug fix - [ ] `feature` — New feature - [ ] `improvement` — Improving existing features - [x] `chore` — Updating dependencies, other boring stuff - [ ] `galaxy brain` — Architectural changes - [ ] `tests` — Changes to any test code - [ ] `tools` — Changes to infrastructure, CI, internal scripts, debugging tools, etc. - [ ] `dunno` — I don't know |
||
David Sheldrick
|
9210655eec
|
delete stray error screen css import (#3683)
Removes a stray .css import from #3673 , which created some precedence issues ### Change Type <!-- ❗ Please select a 'Scope' label ❗️ --> - [ ] `sdk` — Changes the tldraw SDK - [x] `dotcom` — Changes the tldraw.com web app - [ ] `docs` — Changes to the documentation, examples, or templates. - [ ] `vs code` — Changes to the vscode plugin - [ ] `internal` — Does not affect user-facing stuff <!-- ❗ Please select a 'Type' label ❗️ --> - [x] `bugfix` — Bug fix - [ ] `feature` — New feature - [ ] `improvement` — Improving existing features - [ ] `chore` — Updating dependencies, other boring stuff - [ ] `galaxy brain` — Architectural changes - [ ] `tests` — Changes to any test code - [ ] `tools` — Changes to infrastructure, CI, internal scripts, debugging tools, etc. - [ ] `dunno` — I don't know ### Test Plan 1. Add a step-by-step description of how to test your PR here. 2. - [ ] Unit Tests - [ ] End to end tests ### Release Notes - Add a brief release note for your PR here. |
||
David Sheldrick
|
623788c2db
|
Fix viewport following (#3681)
This was my bad after refactoring how the viewport following stuff used store queries. ### Change Type <!-- ❗ Please select a 'Scope' label ❗️ --> - [x] `sdk` — Changes the tldraw SDK - [ ] `dotcom` — Changes the tldraw.com web app - [ ] `docs` — Changes to the documentation, examples, or templates. - [ ] `vs code` — Changes to the vscode plugin - [ ] `internal` — Does not affect user-facing stuff <!-- ❗ Please select a 'Type' label ❗️ --> - [x] `bugfix` — Bug fix - [ ] `feature` — New feature - [ ] `improvement` — Improving existing features - [ ] `chore` — Updating dependencies, other boring stuff - [ ] `galaxy brain` — Architectural changes - [ ] `tests` — Changes to any test code - [ ] `tools` — Changes to infrastructure, CI, internal scripts, debugging tools, etc. - [ ] `dunno` — I don't know ### Test Plan 1. Add a step-by-step description of how to test your PR here. 2. - [ ] Unit Tests - [ ] End to end tests ### Release Notes - Fixes an issue where viewport following was not working |
||
David Sheldrick
|
f2827f6409
|
Allow clients to gracefully handle rejection (#3673)
This PR fixes the issue where sync clients would get into a reconnect loop after being rejected by the sync server. - Close the socket when in the error state (see useRemoteSyncClient) - Show a 'plx refresh the page' screen that doesn't have a sad face on it. <img width="665" alt="image" src="https://github.com/tldraw/tldraw/assets/1242537/96025fa3-cc20-4f53-8f58-74e473e16702"> - If older clients who can't handle rejection well need to be rejected (e.g. due to a store migration being added) then we send them to a special purgatory where the canvas goes blank and it shows the offline indicator but the websocket connection stays open and it won't try to reconnect. ### Change Type - [x] `dotcom` — Changes the tldraw.com web app - [x] `bugfix` — Bug fix ### Test Plan 1. Gonna manually test this one by doing sneaky deploys to a test PR |
||
Lu Wilson
|
e999316691
|
Lokalise: Translations update (#3665)
This pull request was initiated by Lokalise (user Mitja) at 2024-04-30 15:15:53 - [x] sdk - [x] chore Co-authored-by: Steve Ruiz <steveruizok@gmail.com> |
||
David Sheldrick
|
ffe3e7602c
|
don't render the minimap if it fails to initialize the gl context (#3679)
So far 33 people have had tldraw crash due to getContext('webgl2') returning null for some reason. Maybe it's to do with what kind of graphics hardware they have available. This PR adds a stopgap measure wherein the minimap manager just fails to render anything on the canvas element instead of crashing the app. Ideally we'd have better UX around this but that can wait. I'm gonna hotfix this to dotcom. ### Change Type <!-- ❗ Please select a 'Scope' label ❗️ --> - [x] `sdk` — Changes the tldraw SDK - [ ] `dotcom` — Changes the tldraw.com web app - [ ] `docs` — Changes to the documentation, examples, or templates. - [ ] `vs code` — Changes to the vscode plugin - [ ] `internal` — Does not affect user-facing stuff <!-- ❗ Please select a 'Type' label ❗️ --> - [x] `bugfix` — Bug fix - [ ] `feature` — New feature - [ ] `improvement` — Improving existing features - [ ] `chore` — Updating dependencies, other boring stuff - [ ] `galaxy brain` — Architectural changes - [ ] `tests` — Changes to any test code - [ ] `tools` — Changes to infrastructure, CI, internal scripts, debugging tools, etc. - [ ] `dunno` — I don't know |
||
Steve Ruiz
|
9ba4f7cf2a
|
Fix className.includes bug (#3672)
This PR (should) fix a Sentry bug: https://tldraw.sentry.io/share/issue/c4cda01be5d142b79136e8ae97a7a3a7/ ### Change Type - [x] `sdk` — Changes the tldraw SDK - [x] `bugfix` — Bug fix ### Release Notes - Fixes a rare bug effecting text shapes on mobile. |
||
Eswar Prasad Clinton. A
|
06be91b97b
|
Fix link in collaboration documentation (#3662)
Describe what your pull request does. If appropriate, add GIFs or images showing the before and after. ### Change Type <!-- ❗ Please select a 'Scope' label ❗️ --> - [ ] `sdk` — Changes the tldraw SDK - [ ] `dotcom` — Changes the tldraw.com web app - [x] `docs` — Changes to the documentation, examples, or templates. - [ ] `vs code` — Changes to the vscode plugin - [ ] `internal` — Does not affect user-facing stuff <!-- ❗ Please select a 'Type' label ❗️ --> - [x] `bugfix` — Bug fix - [ ] `feature` — New feature - [ ] `improvement` — Improving existing features - [ ] `chore` — Updating dependencies, other boring stuff - [ ] `galaxy brain` — Architectural changes - [ ] `tests` — Changes to any test code - [ ] `tools` — Changes to infrastructure, CI, internal scripts, debugging tools, etc. - [ ] `dunno` — I don't know ### Test Plan 1. Add a step-by-step description of how to test your PR here. 2. - [ ] Unit Tests - [ ] End to end tests ### Release Notes - Add a brief release note for your PR here. |
||
David Sheldrick
|
e4053a392c
|
[signia] perf thing again (#3645)
Will explain tomorrow ### Change Type <!-- ❗ Please select a 'Scope' label ❗️ --> - [x] `sdk` — Changes the tldraw SDK - [ ] `dotcom` — Changes the tldraw.com web app - [ ] `docs` — Changes to the documentation, examples, or templates. - [ ] `vs code` — Changes to the vscode plugin - [ ] `internal` — Does not affect user-facing stuff <!-- ❗ Please select a 'Type' label ❗️ --> - [ ] `bugfix` — Bug fix - [ ] `feature` — New feature - [x] `improvement` — Improving existing features - [ ] `chore` — Updating dependencies, other boring stuff - [ ] `galaxy brain` — Architectural changes - [ ] `tests` — Changes to any test code - [ ] `tools` — Changes to infrastructure, CI, internal scripts, debugging tools, etc. - [ ] `dunno` — I don't know ### Test Plan 1. Add a step-by-step description of how to test your PR here. 2. - [ ] Unit Tests - [ ] End to end tests ### Release Notes - Add a brief release note for your PR here. |
||
Mitja Bezenšek
|
b431c854b3
|
VS Code 2.0.32 (#3664)
Version bump. ### Change Type <!-- ❗ Please select a 'Scope' label ❗️ --> - [ ] `sdk` — Changes the tldraw SDK - [ ] `dotcom` — Changes the tldraw.com web app - [ ] `docs` — Changes to the documentation, examples, or templates. - [x] `vs code` — Changes to the vscode plugin - [ ] `internal` — Does not affect user-facing stuff <!-- ❗ Please select a 'Type' label ❗️ --> - [ ] `bugfix` — Bug fix - [ ] `feature` — New feature - [ ] `improvement` — Improving existing features - [x] `chore` — Updating dependencies, other boring stuff - [ ] `galaxy brain` — Architectural changes - [ ] `tests` — Changes to any test code - [ ] `tools` — Changes to infrastructure, CI, internal scripts, debugging tools, etc. - [ ] `dunno` — I don't know ### Release Notes - VS Code release. |
||
Mohammad Kazemi
|
085c3e5498
|
Fix textbox direction when it contains both RTL and LTR languages (#3188)
**Beofre:** 1. In a text box, text direction was set to Left-to-Right, regardless of the text language. **After:** 1. Text box direction is set to auto, so that it matches the direction of text language. 2. Text dir is set to auto for each line of the text. To achieve this, each line of text is now put in separated `<span>` tags with `dir="auto"`. ![Screenshot_20240318_152725](https://github.com/tldraw/tldraw/assets/18334056/bfa8dd11-a2d1-46d0-b205-7a192c403fcd) Note: Without putting each line of text into separated `<span>` tags, whole text direction was in direction of initial line text. So each line of text is now wrapped into separate tags. ### Change Type <!-- ❗ Please select a 'Scope' label ❗️ --> - [ ] `sdk` — Changes the tldraw SDK - [x] `dotcom` — Changes the tldraw.com web app - [ ] `docs` — Changes to the documentation, examples, or templates. - [ ] `vs code` — Changes to the vscode plugin - [ ] `internal` — Does not affect user-facing stuff <!-- ❗ Please select a 'Type' label ❗️ --> - [x] `bugfix` — Bug fix - [ ] `feature` — New feature - [x] `improvement` — Improving existing features - [ ] `chore` — Updating dependencies, other boring stuff - [ ] `galaxy brain` — Architectural changes - [ ] `tests` — Changes to any test code - [ ] `tools` — Changes to infrastructure, CI, internal scripts, debugging tools, etc. - [ ] `dunno` — I don't know ### Test Plan Enter a text right-to-left and left-to-right into textboxes and note the change of direction by clicking outside of the box, before and after this PR. ### Release Notes Fix textbox direction when it contains both RTL and LTR languages --------- Co-authored-by: Mime Čuvalo <mimecuvalo@gmail.com> Co-authored-by: Steve Ruiz <steveruizok@gmail.com> |
||
Mime Čuvalo
|
06509bf028
|
embed: prevent nested tldraw (#3659)
don't allow infinite nesting :) <img width="1072" alt="Screenshot 2024-04-30 at 12 02 41" src="https://github.com/tldraw/tldraw/assets/469604/fcb29ac8-5bde-4ff4-8c40-f093ab519c56"> ### Change Type <!-- ❗ Please select a 'Scope' label ❗️ --> - [x] `sdk` — Changes the tldraw SDK - [ ] `dotcom` — Changes the tldraw.com web app - [ ] `docs` — Changes to the documentation, examples, or templates. - [ ] `vs code` — Changes to the vscode plugin - [ ] `internal` — Does not affect user-facing stuff <!-- ❗ Please select a 'Type' label ❗️ --> - [x] `bugfix` — Bug fix - [ ] `feature` — New feature - [ ] `improvement` — Improving existing features - [ ] `chore` — Updating dependencies, other boring stuff - [ ] `galaxy brain` — Architectural changes - [ ] `tests` — Changes to any test code - [ ] `tools` — Changes to infrastructure, CI, internal scripts, debugging tools, etc. - [ ] `dunno` — I don't know ### Release Notes - Embeds: Fix infinite nesting of tldraw rooms. |
||
alex
|
8ba46fef49
|
fix undo/redo issues (#3658)
Fix some issues with the new undo/redo system - there were a few things that were undoable that shouldn't be, and a few things that weren't but should ### Change Type - [x] `sdk` — Changes the tldraw SDK - [x] `bugfix` — Bug fix |
||
Steve Ruiz
|
29b6407cdc
|
Hacky fix safari transparency (#3657)
This PR fixes the missing viewport on Safari. Blending on webgl in Safari is cursed. ### Change Type - [x] `sdk` — Changes the tldraw SDK - [x] `feature` — New feature |
||
Lu Wilson
|
46a97dfe3d
|
fix android long press changing cursor to non-coarse (#3656)
### Change Type <!-- ❗ Please select a 'Scope' label ❗️ --> - [ ] `sdk` — Changes the tldraw SDK - [x] `dotcom` — Changes the tldraw.com web app - [ ] `docs` — Changes to the documentation, examples, or templates. - [ ] `vs code` — Changes to the vscode plugin - [ ] `internal` — Does not affect user-facing stuff <!-- ❗ Please select a 'Type' label ❗️ --> - [x] `bugfix` — Bug fix - [ ] `feature` — New feature - [ ] `improvement` — Improving existing features - [ ] `chore` — Updating dependencies, other boring stuff - [ ] `galaxy brain` — Architectural changes - [ ] `tests` — Changes to any test code - [ ] `tools` — Changes to infrastructure, CI, internal scripts, debugging tools, etc. - [ ] `dunno` — I don't know ### Test Plan 1. Open a multip;ayer room on android chrome 2. Long press 3. Make sure coarse pointer isnt there - [ ] Unit Tests - [ ] End to end tests ### Release Notes - Add a brief release note for your PR here. |
||
Steve Ruiz
|
d3fe2d06e0
|
Fix missing icons (#3654)
Fix more missing icons. ### Change Type - [x] `sdk` — Changes the tldraw SDK - [x] `bugfix` — Bug fix |
||
Lu Wilson
|
71befbba82
|
Lokalise: Translations update (#3649)
This pull request was initiated by Lokalise (user Lu) at 2024-04-30 10:52:40 |
||
David Sheldrick
|
c9e1238f2d
|
[bugfix] don't crash if a bound shape doesn't exist (#3653)
We saw this in r/ok - somehow an arrow was created where the boundShapeId was pointing to a shape that doesn't exist - we do need to be tolerant of such situations until our server can enforce binding constraints - so let's not use `!` here ### Change Type <!-- ❗ Please select a 'Scope' label ❗️ --> - [x] `sdk` — Changes the tldraw SDK - [x] `dotcom` — Changes the tldraw.com web app - [ ] `docs` — Changes to the documentation, examples, or templates. - [ ] `vs code` — Changes to the vscode plugin - [ ] `internal` — Does not affect user-facing stuff <!-- ❗ Please select a 'Type' label ❗️ --> - [x] `bugfix` — Bug fix - [ ] `feature` — New feature - [ ] `improvement` — Improving existing features - [ ] `chore` — Updating dependencies, other boring stuff - [ ] `galaxy brain` — Architectural changes - [ ] `tests` — Changes to any test code - [ ] `tools` — Changes to infrastructure, CI, internal scripts, debugging tools, etc. - [ ] `dunno` — I don't know ### Test Plan I copied the data from `/r/ok` and loaded it and this fixed the error ### Release Notes - fixes an edge case in multiplayer rooms where the room can crash if an arrow's bound shape is deleted by a peer |
||
Steve Ruiz
|
5ab285fb85
|
Fix missing icon (#3652)
This PR fixes the missing icon for checkbox-empty. ### Change Type - [x] `sdk` — Changes the tldraw SDK - [x] `bugfix` — Bug fix ### Test Plan 1. Open the page menu 2. Create a new page 3. Should be no missing icon |
||
Steve Ruiz
|
0c68317885
|
Update template versions to latest (#3646)
This PR bumps the template versions to latest. ### Change Type - [x] `internal` — Does not affect user-facing stuff - [x] `bugfix` — Bug fix |
||
Steve Ruiz
|
932bbf0b1e
|
3d example (#3647)
This PR adds a little example of using 3D transforms in tldraw. ![Kapture 2024-04-30 at 09 52 18](https://github.com/tldraw/tldraw/assets/23072548/c7620384-629b-4914-a842-5783591c9a3a) ### Change Type - [x] `docs` - [x] `improvement` |
||
Mime Čuvalo
|
487addd2e8
|
embed: allow embeds like YouTube to link back to its site (#3609)
Fixes https://github.com/tldraw/tldraw/issues/3593 (some drive-by spelling/grammar cleanup) ### Change Type <!-- ❗ Please select a 'Scope' label ❗️ --> - [x] `sdk` — Changes the tldraw SDK - [ ] `dotcom` — Changes the tldraw.com web app - [ ] `docs` — Changes to the documentation, examples, or templates. - [ ] `vs code` — Changes to the vscode plugin - [ ] `internal` — Does not affect user-facing stuff <!-- ❗ Please select a 'Type' label ❗️ --> - [x] `bugfix` — Bug fix - [ ] `feature` — New feature - [ ] `improvement` — Improving existing features - [ ] `chore` — Updating dependencies, other boring stuff - [ ] `galaxy brain` — Architectural changes - [ ] `tests` — Changes to any test code - [ ] `tools` — Changes to infrastructure, CI, internal scripts, debugging tools, etc. - [ ] `dunno` — I don't know ### Release Notes - Embeds: fix being able to click on links that go back to the embed's site (e.g. YouTube) --------- Co-authored-by: Steve Ruiz <steveruizok@gmail.com> |
||
Steve Ruiz
|
b8afbb4c43
|
Improve pressure-detection logic in drawing (#3639)
This PR improves handling of pressure in the draw tool. While we differentiate between pen and not-pen in the pointer type, there are not-pen type inputs like styluses that present as "mouse" inputs. This PR makes the freehand options for these inputs more pen-like so that they benefit from the dialing-in of options for pressure-using devices. ### Change Type - [x] `sdk` — Changes the tldraw SDK - [x] `improvement` — Improving existing features ### Test Plan 1. Use pen inputs 2. Use mouse inputs 3. Use stylus inputs - [x] Unit Tests ### Release Notes - Improves handling of mouse-type devices that support pressure, e.g. wacom tablets. They now use the same freehand options as true pen-type inputs. |
||
Mime Čuvalo
|
bf42d6e2a9
|
copy/paste: fix pasting not working from Edit menu (#3623)
Looks like this has been broken for a while actually. I spelunked into the history of git blame around why we needed this but can't find when it was added easily. (maybe it was in brivate?) I don't _think_ we need the menu check anymore but lemme know if there's something I'm missing here @steveruizok ### Change Type <!-- ❗ Please select a 'Scope' label ❗️ --> - [x] `sdk` — Changes the tldraw SDK - [ ] `dotcom` — Changes the tldraw.com web app - [ ] `docs` — Changes to the documentation, examples, or templates. - [ ] `vs code` — Changes to the vscode plugin - [ ] `internal` — Does not affect user-facing stuff <!-- ❗ Please select a 'Type' label ❗️ --> - [x] `bugfix` — Bug fix - [ ] `feature` — New feature - [ ] `improvement` — Improving existing features - [ ] `chore` — Updating dependencies, other boring stuff - [ ] `galaxy brain` — Architectural changes - [ ] `tests` — Changes to any test code - [ ] `tools` — Changes to infrastructure, CI, internal scripts, debugging tools, etc. - [ ] `dunno` — I don't know ### Release Notes - Clipboard: fix pasting from the Edit menu. |
||
Mime Čuvalo
|
4da28a0ddd
|
textfields: for unfilled geo shapes fix edit->edit (#3577)
We need to treat unfilled geo shapes as hollow to click 'through' them. Before: https://github.com/tldraw/tldraw/assets/469604/bf7b520c-c6f5-41cd-88e9-b020fe0ebb32 After: https://github.com/tldraw/tldraw/assets/469604/e39d9bcf-2b94-46d5-ace4-8a1053b2ee81 ### Change Type <!-- ❗ Please select a 'Scope' label ❗️ --> - [x] `sdk` — Changes the tldraw SDK - [ ] `dotcom` — Changes the tldraw.com web app - [ ] `docs` — Changes to the documentation, examples, or templates. - [ ] `vs code` — Changes to the vscode plugin - [ ] `internal` — Does not affect user-facing stuff <!-- ❗ Please select a 'Type' label ❗️ --> - [x] `bugfix` — Bug fix - [ ] `feature` — New feature - [ ] `improvement` — Improving existing features - [ ] `chore` — Updating dependencies, other boring stuff - [ ] `galaxy brain` — Architectural changes - [ ] `tests` — Changes to any test code - [ ] `tools` — Changes to infrastructure, CI, internal scripts, debugging tools, etc. - [ ] `dunno` — I don't know ### Release Notes - Text labels: fix edit→edit not working as expected when unfilled geo shapes are on 'top' of other shapes. |
||
Mitja Bezenšek
|
c0b192033e
|
Allow embedding tldraw in iframes (#3640)
Allow embedding tldraw in frames, but only certain contexts. For example, we don't allow local rooms. ### Change Type <!-- ❗ Please select a 'Scope' label ❗️ --> - [ ] `sdk` — Changes the tldraw SDK - [x] `dotcom` — Changes the tldraw.com web app - [ ] `docs` — Changes to the documentation, examples, or templates. - [ ] `vs code` — Changes to the vscode plugin - [ ] `internal` — Does not affect user-facing stuff <!-- ❗ Please select a 'Type' label ❗️ --> - [ ] `bugfix` — Bug fix - [ ] `feature` — New feature - [x] `improvement` — Improving existing features - [ ] `chore` — Updating dependencies, other boring stuff - [ ] `galaxy brain` — Architectural changes - [ ] `tests` — Changes to any test code - [ ] `tools` — Changes to infrastructure, CI, internal scripts, debugging tools, etc. - [ ] `dunno` — I don't know ### Release Notes - Allow embedding tldraw inside iframes again. |
||
Steve Ruiz
|
5601d0ee22
|
Separate text-align property for shapes (#3627)
This PR creates a new "text align" property for text shapes. Its default is left align. This means that text shapes now have their own alignment prop, separate from the vertical / horizontal alignment used in labels. The style panel for text has no visual change: <img width="400" alt="image" src="https://github.com/tldraw/tldraw/assets/23072548/aac80d2a-a069-4388-870b-1e0917d88eda"> The style panel for labels has consistent icons for label position: <img width="487" alt="image" src="https://github.com/tldraw/tldraw/assets/23072548/0adf7f0e-8446-4d3e-b9ea-a61e43035207"> Both may be configured separately. <img width="458" alt="image" src="https://github.com/tldraw/tldraw/assets/23072548/698dcfac-6eb2-4a8c-afb8-d1e5761019ef"> # Icon refresh This PR also removes many unused icons. It adds a special toggle icon for the context menu. <img width="571" alt="image" src="https://github.com/tldraw/tldraw/assets/23072548/489551e6-a370-4528-9ad4-8f93e119f26b"> <img width="492" alt="image" src="https://github.com/tldraw/tldraw/assets/23072548/cd3d77c7-8bae-4369-8b53-ca4685b2fd0e"> ### Change Type - [x] `sdk` — Changes the tldraw SDK - [x] `improvement` — Improving existing features ### Test Plan 1. Load files. 2. Paste excalidraw content. 3. Load v1 files. 4. Use the app as usual. - [x] Unit Tests ### Release Notes - Separates the text align property for text shapes and labels. --------- Co-authored-by: huppy-bot[bot] <128400622+huppy-bot[bot]@users.noreply.github.com> |
||
Steve Ruiz
|
79ca14454e
|
Fix text resizing with alt key (#3632)
This PR fixes a bug where alt-dragging the left or right handles of a text shape would not produce the correct outcome: the width would double but the center would change. ![Kapture 2024-04-28 at 13 48 52](https://github.com/tldraw/tldraw/assets/23072548/ad339a57-4efd-4201-86bc-c03a379f7e0c) This is because the text shape is aspect ratio locked only when dragging handles other than the left or right, but we didn't have the ability to differentiate between that. We've had to add that optionality in, together with a hard-coded override of the normal behavior for text shapes. ### Change Type - [x] `sdk` — Changes the tldraw SDK - [x] `bugfix` — Bug fix ### Test Plan 1. Resize text. 2. Resize text with the alt key held. - [x] Unit Tests ### Release Notes - Fixed a bug with resizing text shapes from the left and right while holding alt. |
||
Steve Ruiz
|
0d0d38361d
|
Don't hover locked shapes (#3575)
This PR: - updates `getHoveredId` to `getHoveredShapeId` - adds an option to ignore locked shapes to `Editor.getShapeAtPoint`. ### Change Type - [x] `sdk` — Changes the tldraw SDK - [x] `improvement` — Improving existing features ### Test Plan 1. Put two shapes on top of eachother 2. Lock the top shape 3. Hover the shape 4. The bottom shape should be hovered 5. Right click 6. The top shape should be selected - [x] Unit tests ### Release Notes - Fixed a bug with locked shapes being hoverable. |
||
fakerr
|
8c0e3c7f93
|
Add desmos graph embed type (#3608)
I added a new embed type, for desmos graphing calculator (https://www.desmos.com/calculator) that uses their supported embed URL. I added an icon, the new embed shape, and created tests for it. https://github.com/tldraw/tldraw/assets/111339712/acc1a6b0-2551-4f25-8f85-20e6f829930e ### Change Type <!-- ❗ Please select a 'Scope' label ❗️ --> - [ ] `sdk` — Changes the tldraw SDK - [x] `dotcom` — Changes the tldraw.com web app - [ ] `docs` — Changes to the documentation, examples, or templates. - [ ] `vs code` — Changes to the vscode plugin - [ ] `internal` — Does not affect user-facing stuff <!-- ❗ Please select a 'Type' label ❗️ --> - [ ] `bugfix` — Bug fix - [x] `feature` — New feature - [ ] `improvement` — Improving existing features - [ ] `chore` — Updating dependencies, other boring stuff - [ ] `galaxy brain` — Architectural changes - [x] `tests` — Changes to any test code - [ ] `tools` — Changes to infrastructure, CI, internal scripts, debugging tools, etc. - [ ] `dunno` — I don't know ### Test Plan 1. Add links for desmos graphing calculator (e.g. https://www.desmos.com/calculator/4wa2im6u31) by either pasting or using the insert embed menu. ### Release Notes - (feature) add desmos embed --------- Co-authored-by: Steve Ruiz <steveruizok@gmail.com> |
||
Taha
|
7442456d85
|
Make coarse pointer check dynamic (#3572)
When a device has both a touch screen and a mouse, pointer: coarse evaluates to false and then doesn't change even if the user begins to use the touch screen. In this PR pointer: coarse is replaced with any-pointer: coarse, which checks if a touchscreen input is available. Event listeners for touchstart and mousemove update isCoursePointer dynamically. So if the user begins to move the mouse it changes to pointer: fine, if they then touch the screen the pointer is returned to coarse. https://github.com/tldraw/tldraw/assets/98838967/fb86bb44-ec11-4161-bb2f-0e8c3ee83eb6 ### Change Type <!-- ❗ Please select a 'Scope' label ❗️ --> - [ ] `sdk` — Changes the tldraw SDK - [x] `dotcom` — Changes the tldraw.com web app - [ ] `docs` — Changes to the documentation, examples, or templates. - [ ] `vs code` — Changes to the vscode plugin - [ ] `internal` — Does not affect user-facing stuff <!-- ❗ Please select a 'Type' label ❗️ --> - [ ] `bugfix` — Bug fix - [ ] `feature` — New feature - [x] `improvement` — Improving existing features - [ ] `chore` — Updating dependencies, other boring stuff - [ ] `galaxy brain` — Architectural changes - [ ] `tests` — Changes to any test code - [ ] `tools` — Changes to infrastructure, CI, internal scripts, debugging tools, etc. - [ ] `dunno` — I don't know ### Test Plan 1. Load tldraw on a device with both coarse and fine pointer inputs avaiable (e.g. an ipad with a keyboard and trackpad) 2. Switch between using the mouse and touch screen. 3. Handles on shapes should update dynamically. ### Release Notes - Add a brief release note for your PR here. --------- Co-authored-by: Mime Čuvalo <mimecuvalo@gmail.com> Co-authored-by: Steve Ruiz <steveruizok@gmail.com> |
||
Mime Čuvalo
|
608f0210a0
|
examples: add filter input (#3625)
This was @Taha-Hassan-Git 's idea originally but I thought it wasn't necessary at the time (with our much shorter list of examples just a couple months ago!). I think now that we have a plethora of examples that @Taha-Hassan-Git 's original instinct here was correct and we should a filter box. <img width="255" alt="Screenshot 2024-04-26 at 15 22 08" src="https://github.com/tldraw/tldraw/assets/469604/1eabc04e-c4d0-414d-881c-7ca965dbd6a3"> ### Change Type <!-- ❗ Please select a 'Scope' label ❗️ --> - [ ] `sdk` — Changes the tldraw SDK - [ ] `dotcom` — Changes the tldraw.com web app - [x] `docs` — Changes to the documentation, examples, or templates. - [ ] `vs code` — Changes to the vscode plugin - [ ] `internal` — Does not affect user-facing stuff <!-- ❗ Please select a 'Type' label ❗️ --> - [ ] `bugfix` — Bug fix - [ ] `feature` — New feature - [x] `improvement` — Improving existing features - [ ] `chore` — Updating dependencies, other boring stuff - [ ] `galaxy brain` — Architectural changes - [ ] `tests` — Changes to any test code - [ ] `tools` — Changes to infrastructure, CI, internal scripts, debugging tools, etc. - [ ] `dunno` — I don't know ### Release Notes - Examples: add a filter box. |
||
Mime Čuvalo
|
a771549670
|
stickies: make pit/pack distance the same (#3606)
Tweak default gap value to be consistent with sticky note gaps. Fixes https://github.com/tldraw/tldraw/issues/3591 ### Change Type <!-- ❗ Please select a 'Scope' label ❗️ --> - [x] `sdk` — Changes the tldraw SDK - [ ] `dotcom` — Changes the tldraw.com web app - [ ] `docs` — Changes to the documentation, examples, or templates. - [ ] `vs code` — Changes to the vscode plugin - [ ] `internal` — Does not affect user-facing stuff <!-- ❗ Please select a 'Type' label ❗️ --> - [x] `bugfix` — Bug fix - [ ] `feature` — New feature - [ ] `improvement` — Improving existing features - [ ] `chore` — Updating dependencies, other boring stuff - [ ] `galaxy brain` — Architectural changes - [ ] `tests` — Changes to any test code - [ ] `tools` — Changes to infrastructure, CI, internal scripts, debugging tools, etc. - [ ] `dunno` — I don't know ### Release Notes - Shapes: tweak default gap value to be consistent with sticky note gaps. |
||
Mime Čuvalo
|
c9af23c921
|
make route prefixes have a single place where they are defined (#3624)
This is for maintainabilty of the paths. It's hard to track down all the places where a route is being referenced. This helps unify them so that it's easily searchable in the codebase. This came up during the readonly room refactor and being able to find the way a particular route was wired through the codebase. ### Change Type <!-- ❗ Please select a 'Scope' label ❗️ --> - [x] `sdk` — Changes the tldraw SDK - [ ] `dotcom` — Changes the tldraw.com web app - [ ] `docs` — Changes to the documentation, examples, or templates. - [ ] `vs code` — Changes to the vscode plugin - [ ] `internal` — Does not affect user-facing stuff <!-- ❗ Please select a 'Type' label ❗️ --> - [ ] `bugfix` — Bug fix - [ ] `feature` — New feature - [ ] `improvement` — Improving existing features - [x] `chore` — Updating dependencies, other boring stuff - [ ] `galaxy brain` — Architectural changes - [ ] `tests` — Changes to any test code - [ ] `tools` — Changes to infrastructure, CI, internal scripts, debugging tools, etc. - [ ] `dunno` — I don't know |
||
Mitja Bezenšek
|
de55259c92
|
Fix an issue with the minimap (#3617)
In some cases (when you clicked close to the current viewport area) the minimap would not change the camera position. This is because the `clampedPoint` calculation would offset the clicked position slightly and then the `clampedPoint` would land inside the currently viewport. With this change we will treat every click outside of the viewport (but still within allowed bounds) as a change that requires use to change the camera position. Before https://github.com/tldraw/tldraw/assets/2523721/ded202d1-94d7-4b40-ba77-45d283e4fa60 After https://github.com/tldraw/tldraw/assets/2523721/2ccee77d-ec0e-4997-b51d-c14676657a94 ### Change Type <!-- ❗ Please select a 'Scope' label ❗️ --> - [ ] `sdk` — Changes the tldraw SDK - [ ] `dotcom` — Changes the tldraw.com web app - [ ] `docs` — Changes to the documentation, examples, or templates. - [ ] `vs code` — Changes to the vscode plugin - [x] `internal` — Does not affect user-facing stuff <!-- ❗ Please select a 'Type' label ❗️ --> - [x] `bugfix` — Bug fix - [ ] `feature` — New feature - [ ] `improvement` — Improving existing features - [ ] `chore` — Updating dependencies, other boring stuff - [ ] `galaxy brain` — Architectural changes - [ ] `tests` — Changes to any test code - [ ] `tools` — Changes to infrastructure, CI, internal scripts, debugging tools, etc. - [ ] `dunno` — I don't know ### Test Plan 1. Use minimap in various ways to make sure it still works correctly. The change targets the `pointerDown` event, but I did also refactor one method that is also used by double click so it makes sense to test that as well. Make sure you are not double clicking since we don't use the same logic there. - [ ] Unit Tests - [ ] End to end tests ### Release Notes - Fixes clicking on the minimap when we clicked just slightly outside of the current viewport. |