@tldraw/editor 3.12.0-canary.21002dc7ca29 → 3.12.0-canary.35ee104e32c6
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 +154 -17
- package/dist-cjs/index.js +3 -1
- package/dist-cjs/index.js.map +2 -2
- package/dist-cjs/lib/TldrawEditor.js +4 -0
- package/dist-cjs/lib/TldrawEditor.js.map +2 -2
- package/dist-cjs/lib/components/GeometryDebuggingView.js +2 -2
- package/dist-cjs/lib/components/GeometryDebuggingView.js.map +2 -2
- package/dist-cjs/lib/editor/Editor.js +208 -18
- package/dist-cjs/lib/editor/Editor.js.map +2 -2
- package/dist-cjs/lib/editor/shapes/ShapeUtil.js +9 -0
- package/dist-cjs/lib/editor/shapes/ShapeUtil.js.map +2 -2
- package/dist-cjs/lib/editor/shapes/group/GroupShapeUtil.js +4 -13
- package/dist-cjs/lib/editor/shapes/group/GroupShapeUtil.js.map +2 -2
- package/dist-cjs/lib/editor/types/selection-types.js.map +1 -1
- package/dist-cjs/lib/exports/StyleEmbedder.js +19 -5
- package/dist-cjs/lib/exports/StyleEmbedder.js.map +2 -2
- package/dist-cjs/lib/exports/cssRules.js +127 -0
- package/dist-cjs/lib/exports/cssRules.js.map +7 -0
- package/dist-cjs/lib/exports/parseCss.js +0 -69
- package/dist-cjs/lib/exports/parseCss.js.map +2 -2
- package/dist-cjs/lib/hooks/useDocumentEvents.js +16 -0
- package/dist-cjs/lib/hooks/useDocumentEvents.js.map +2 -2
- package/dist-cjs/lib/license/Watermark.js +2 -0
- package/dist-cjs/lib/license/Watermark.js.map +2 -2
- package/dist-cjs/lib/primitives/geometry/Geometry2d.js +133 -16
- package/dist-cjs/lib/primitives/geometry/Geometry2d.js.map +3 -3
- package/dist-cjs/lib/primitives/geometry/Group2d.js +54 -11
- package/dist-cjs/lib/primitives/geometry/Group2d.js.map +2 -2
- package/dist-cjs/lib/primitives/intersect.js +20 -0
- package/dist-cjs/lib/primitives/intersect.js.map +2 -2
- package/dist-cjs/lib/utils/reorderShapes.js +2 -8
- package/dist-cjs/lib/utils/reorderShapes.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 +154 -17
- package/dist-esm/index.mjs +8 -2
- package/dist-esm/index.mjs.map +2 -2
- package/dist-esm/lib/TldrawEditor.mjs +4 -0
- package/dist-esm/lib/TldrawEditor.mjs.map +2 -2
- package/dist-esm/lib/components/GeometryDebuggingView.mjs +3 -3
- package/dist-esm/lib/components/GeometryDebuggingView.mjs.map +2 -2
- package/dist-esm/lib/editor/Editor.mjs +209 -18
- package/dist-esm/lib/editor/Editor.mjs.map +2 -2
- package/dist-esm/lib/editor/shapes/ShapeUtil.mjs +9 -0
- package/dist-esm/lib/editor/shapes/ShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/editor/shapes/group/GroupShapeUtil.mjs +4 -13
- package/dist-esm/lib/editor/shapes/group/GroupShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/exports/StyleEmbedder.mjs +21 -12
- package/dist-esm/lib/exports/StyleEmbedder.mjs.map +2 -2
- package/dist-esm/lib/exports/cssRules.mjs +107 -0
- package/dist-esm/lib/exports/cssRules.mjs.map +7 -0
- package/dist-esm/lib/exports/parseCss.mjs +0 -69
- package/dist-esm/lib/exports/parseCss.mjs.map +2 -2
- package/dist-esm/lib/hooks/useDocumentEvents.mjs +16 -0
- package/dist-esm/lib/hooks/useDocumentEvents.mjs.map +2 -2
- package/dist-esm/lib/license/Watermark.mjs +2 -0
- package/dist-esm/lib/license/Watermark.mjs.map +2 -2
- package/dist-esm/lib/primitives/geometry/Geometry2d.mjs +137 -14
- package/dist-esm/lib/primitives/geometry/Geometry2d.mjs.map +2 -2
- package/dist-esm/lib/primitives/geometry/Group2d.mjs +55 -12
- package/dist-esm/lib/primitives/geometry/Group2d.mjs.map +2 -2
- package/dist-esm/lib/primitives/intersect.mjs +20 -0
- package/dist-esm/lib/primitives/intersect.mjs.map +2 -2
- package/dist-esm/lib/utils/reorderShapes.mjs +2 -8
- package/dist-esm/lib/utils/reorderShapes.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 +11 -2
- package/src/lib/TldrawEditor.tsx +29 -3
- package/src/lib/components/GeometryDebuggingView.tsx +3 -3
- package/src/lib/editor/Editor.ts +315 -24
- package/src/lib/editor/shapes/ShapeUtil.ts +10 -0
- package/src/lib/editor/shapes/group/GroupShapeUtil.tsx +7 -15
- package/src/lib/editor/types/selection-types.ts +3 -0
- package/src/lib/exports/StyleEmbedder.ts +25 -15
- package/src/lib/exports/cssRules.ts +126 -0
- package/src/lib/exports/parseCss.ts +0 -79
- package/src/lib/hooks/useDocumentEvents.ts +18 -0
- package/src/lib/license/Watermark.tsx +2 -0
- package/src/lib/primitives/geometry/Geometry2d.ts +196 -16
- package/src/lib/primitives/geometry/Group2d.ts +76 -13
- package/src/lib/primitives/intersect.ts +41 -0
- package/src/lib/utils/reorderShapes.ts +2 -9
- package/src/version.ts +3 -3
|
@@ -293,6 +293,47 @@ export function intersectPolygonPolygon(
|
|
|
293
293
|
return orderClockwise([...result.values()])
|
|
294
294
|
}
|
|
295
295
|
|
|
296
|
+
/**
|
|
297
|
+
* Find all the points where `polyA` and `polyB` intersect and returns them in an undefined order.
|
|
298
|
+
* To find the polygon that's the intersection of polyA and polyB, use `intersectPolygonPolygon`
|
|
299
|
+
* instead, which orders the points and includes internal points.
|
|
300
|
+
*
|
|
301
|
+
* @param polyA - The first polygon.
|
|
302
|
+
* @param polyB - The second polygon.
|
|
303
|
+
* @param isAClosed - Whether `polyA` is a closed polygon or a polyline.
|
|
304
|
+
* @param isBClosed - Whether `polyB` is a closed polygon or a polyline.
|
|
305
|
+
* @public
|
|
306
|
+
*/
|
|
307
|
+
export function intersectPolys(
|
|
308
|
+
polyA: VecLike[],
|
|
309
|
+
polyB: VecLike[],
|
|
310
|
+
isAClosed: boolean,
|
|
311
|
+
isBClosed: boolean
|
|
312
|
+
): VecLike[] {
|
|
313
|
+
const result: Map<string, VecLike> = new Map()
|
|
314
|
+
|
|
315
|
+
// Add all intersection points to result
|
|
316
|
+
for (let i = 0, n = isAClosed ? polyA.length : polyA.length - 1; i < n; i++) {
|
|
317
|
+
const currentA = polyA[i]
|
|
318
|
+
const nextA = polyA[(i + 1) % polyA.length]
|
|
319
|
+
|
|
320
|
+
for (let j = 0, m = isBClosed ? polyB.length : polyB.length - 1; j < m; j++) {
|
|
321
|
+
const currentB = polyB[j]
|
|
322
|
+
const nextB = polyB[(j + 1) % polyB.length]
|
|
323
|
+
const intersection = intersectLineSegmentLineSegment(currentA, nextA, currentB, nextB)
|
|
324
|
+
|
|
325
|
+
if (intersection !== null) {
|
|
326
|
+
const id = getPointId(intersection)
|
|
327
|
+
if (!result.has(id)) {
|
|
328
|
+
result.set(id, intersection)
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
return [...result.values()]
|
|
335
|
+
}
|
|
336
|
+
|
|
296
337
|
function getPointId(point: VecLike) {
|
|
297
338
|
return `${point.x},${point.y}`
|
|
298
339
|
}
|
|
@@ -154,24 +154,17 @@ function reorderToFront(moving: Set<TLShape>, children: TLShape[], changes: TLSh
|
|
|
154
154
|
}
|
|
155
155
|
}
|
|
156
156
|
|
|
157
|
-
function getVerticesInPageSpace(editor: Editor, shape: TLShape) {
|
|
158
|
-
const geo = editor.getShapeGeometry(shape)
|
|
159
|
-
const pageTransform = editor.getShapePageTransform(shape)
|
|
160
|
-
if (!geo || !pageTransform) return null
|
|
161
|
-
return pageTransform.applyToPoints(geo.vertices)
|
|
162
|
-
}
|
|
163
|
-
|
|
164
157
|
function getOverlapChecker(editor: Editor, moving: Set<TLShape>) {
|
|
165
158
|
const movingVertices = Array.from(moving)
|
|
166
159
|
.map((shape) => {
|
|
167
|
-
const vertices =
|
|
160
|
+
const vertices = editor.getShapePageGeometry(shape).vertices
|
|
168
161
|
if (!vertices) return null
|
|
169
162
|
return { shape, vertices }
|
|
170
163
|
})
|
|
171
164
|
.filter(Boolean) as { shape: TLShape; vertices: Vec[] }[]
|
|
172
165
|
|
|
173
166
|
const isOverlapping = (child: TLShape) => {
|
|
174
|
-
const vertices =
|
|
167
|
+
const vertices = editor.getShapePageGeometry(child).vertices
|
|
175
168
|
if (!vertices) return false
|
|
176
169
|
return movingVertices.some((other) => {
|
|
177
170
|
return polygonsIntersect(other.vertices, vertices)
|
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 = '3.12.0-canary.
|
|
4
|
+
export const version = '3.12.0-canary.35ee104e32c6'
|
|
5
5
|
export const publishDates = {
|
|
6
6
|
major: '2024-09-13T14:36:29.063Z',
|
|
7
|
-
minor: '2025-04-
|
|
8
|
-
patch: '2025-04-
|
|
7
|
+
minor: '2025-04-04T10:02:05.158Z',
|
|
8
|
+
patch: '2025-04-04T10:02:05.158Z',
|
|
9
9
|
}
|