@tldraw/editor 5.3.0 → 5.4.0-canary.0714aa9af9a0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-cjs/index.d.ts +62 -52
- package/dist-cjs/index.js +1 -1
- package/dist-cjs/index.js.map +2 -2
- package/dist-cjs/lib/editor/Editor.js +82 -26
- package/dist-cjs/lib/editor/Editor.js.map +2 -2
- package/dist-cjs/lib/editor/derivations/shapeIdsInCurrentPage.js +7 -3
- package/dist-cjs/lib/editor/derivations/shapeIdsInCurrentPage.js.map +2 -2
- package/dist-cjs/lib/editor/managers/TextManager/TextManager.js +6 -3
- package/dist-cjs/lib/editor/managers/TextManager/TextManager.js.map +2 -2
- package/dist-cjs/lib/editor/managers/TickManager/TickManager.js +6 -3
- package/dist-cjs/lib/editor/managers/TickManager/TickManager.js.map +2 -2
- package/dist-cjs/lib/hooks/useDocumentEvents.js +3 -2
- package/dist-cjs/lib/hooks/useDocumentEvents.js.map +2 -2
- package/dist-cjs/lib/hooks/useViewportHeight.js.map +2 -2
- package/dist-cjs/lib/primitives/geometry/Group2d.js +63 -21
- package/dist-cjs/lib/primitives/geometry/Group2d.js.map +2 -2
- package/dist-cjs/lib/utils/normalizeWheel.js +2 -0
- package/dist-cjs/lib/utils/normalizeWheel.js.map +2 -2
- package/dist-cjs/version.js +3 -3
- package/dist-cjs/version.js.map +1 -1
- package/dist-esm/index.d.mts +62 -52
- package/dist-esm/index.mjs +1 -1
- package/dist-esm/index.mjs.map +2 -2
- package/dist-esm/lib/editor/Editor.mjs +82 -26
- package/dist-esm/lib/editor/Editor.mjs.map +2 -2
- package/dist-esm/lib/editor/derivations/shapeIdsInCurrentPage.mjs +7 -3
- package/dist-esm/lib/editor/derivations/shapeIdsInCurrentPage.mjs.map +2 -2
- package/dist-esm/lib/editor/managers/TextManager/TextManager.mjs +7 -4
- package/dist-esm/lib/editor/managers/TextManager/TextManager.mjs.map +2 -2
- package/dist-esm/lib/editor/managers/TickManager/TickManager.mjs +6 -3
- package/dist-esm/lib/editor/managers/TickManager/TickManager.mjs.map +2 -2
- package/dist-esm/lib/hooks/useDocumentEvents.mjs +3 -2
- package/dist-esm/lib/hooks/useDocumentEvents.mjs.map +2 -2
- package/dist-esm/lib/hooks/useViewportHeight.mjs.map +2 -2
- package/dist-esm/lib/primitives/geometry/Group2d.mjs +63 -21
- package/dist-esm/lib/primitives/geometry/Group2d.mjs.map +2 -2
- package/dist-esm/lib/utils/normalizeWheel.mjs +2 -0
- package/dist-esm/lib/utils/normalizeWheel.mjs.map +2 -2
- package/dist-esm/version.mjs +3 -3
- package/dist-esm/version.mjs.map +1 -1
- package/package.json +7 -7
- package/src/index.ts +1 -0
- package/src/lib/editor/Editor.ts +120 -37
- package/src/lib/editor/derivations/shapeIdsInCurrentPage.ts +7 -3
- package/src/lib/editor/managers/TextManager/TextManager.test.ts +42 -0
- package/src/lib/editor/managers/TextManager/TextManager.ts +10 -8
- package/src/lib/editor/managers/TickManager/TickManager.test.ts +13 -0
- package/src/lib/editor/managers/TickManager/TickManager.ts +9 -3
- package/src/lib/hooks/useDocumentEvents.ts +9 -8
- package/src/lib/hooks/useViewportHeight.ts +9 -1
- package/src/lib/primitives/geometry/Group2d.ts +63 -27
- package/src/lib/utils/normalizeWheel.test.ts +39 -0
- package/src/lib/utils/normalizeWheel.ts +6 -0
- package/src/version.ts +3 -3
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { normalizeWheel } from './normalizeWheel'
|
|
2
|
+
|
|
3
|
+
function wheelEvent(props: Partial<WheelEvent>): WheelEvent {
|
|
4
|
+
return {
|
|
5
|
+
deltaX: 0,
|
|
6
|
+
deltaY: 0,
|
|
7
|
+
ctrlKey: false,
|
|
8
|
+
altKey: false,
|
|
9
|
+
metaKey: false,
|
|
10
|
+
shiftKey: false,
|
|
11
|
+
...props,
|
|
12
|
+
} as WheelEvent
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
describe('normalizeWheel', () => {
|
|
16
|
+
it('negates finite deltas for panning', () => {
|
|
17
|
+
const { x, y } = normalizeWheel(wheelEvent({ deltaX: 5, deltaY: 10 }))
|
|
18
|
+
expect(x).toBe(-5)
|
|
19
|
+
expect(y).toBe(-10)
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
it('coerces a non-finite deltaX to zero movement', () => {
|
|
23
|
+
const { x, y } = normalizeWheel(wheelEvent({ deltaX: NaN, deltaY: 10 }))
|
|
24
|
+
expect(x === 0).toBe(true)
|
|
25
|
+
expect(y).toBe(-10)
|
|
26
|
+
})
|
|
27
|
+
|
|
28
|
+
it('coerces a non-finite deltaY to zero movement', () => {
|
|
29
|
+
const { x, y } = normalizeWheel(wheelEvent({ deltaX: 5, deltaY: Infinity }))
|
|
30
|
+
expect(x).toBe(-5)
|
|
31
|
+
expect(y === 0).toBe(true)
|
|
32
|
+
})
|
|
33
|
+
|
|
34
|
+
it('does not produce a non-finite zoom delta when wheeling with a bad deltaY', () => {
|
|
35
|
+
const { z } = normalizeWheel(wheelEvent({ deltaY: NaN, ctrlKey: true }))
|
|
36
|
+
expect(Number.isFinite(z)).toBe(true)
|
|
37
|
+
expect(z === 0).toBe(true)
|
|
38
|
+
})
|
|
39
|
+
})
|
|
@@ -9,6 +9,12 @@ const MAX_ZOOM_STEP = 10
|
|
|
9
9
|
* @internal */
|
|
10
10
|
export function normalizeWheel(event: WheelEvent | React.WheelEvent<HTMLElement>) {
|
|
11
11
|
let { deltaY, deltaX } = event
|
|
12
|
+
|
|
13
|
+
// Coerce non-finite deltas to no movement so they can't propagate into the camera and
|
|
14
|
+
// crash validation. Also covers deltaZ below, which is derived from deltaY.
|
|
15
|
+
if (!Number.isFinite(deltaX)) deltaX = 0
|
|
16
|
+
if (!Number.isFinite(deltaY)) deltaY = 0
|
|
17
|
+
|
|
12
18
|
let deltaZ = 0
|
|
13
19
|
|
|
14
20
|
// wheeling
|
package/src/version.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// This file is automatically generated by internal/scripts/refresh-assets.ts.
|
|
2
2
|
// Do not edit manually. Or do, I'm a comment, not a cop.
|
|
3
3
|
|
|
4
|
-
export const version = '5.
|
|
4
|
+
export const version = '5.4.0-canary.0714aa9af9a0'
|
|
5
5
|
export const publishDates = {
|
|
6
6
|
major: '2026-05-06T16:28:18.473Z',
|
|
7
|
-
minor: '2026-08-
|
|
8
|
-
patch: '2026-08-
|
|
7
|
+
minor: '2026-08-15T20:16:10.391Z',
|
|
8
|
+
patch: '2026-08-15T20:16:10.391Z',
|
|
9
9
|
}
|