@tldraw/editor 5.5.0-next.f9308d324e1c → 5.5.0

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.
Files changed (192) hide show
  1. package/dist-cjs/index.d.ts +49 -23
  2. package/dist-cjs/index.js +1 -1
  3. package/dist-cjs/index.js.map +2 -2
  4. package/dist-cjs/lib/TldrawEditor.js +16 -12
  5. package/dist-cjs/lib/TldrawEditor.js.map +2 -2
  6. package/dist-cjs/lib/components/MenuClickCapture.js +42 -3
  7. package/dist-cjs/lib/components/MenuClickCapture.js.map +2 -2
  8. package/dist-cjs/lib/components/default-components/DefaultCanvas.js +5 -1
  9. package/dist-cjs/lib/components/default-components/DefaultCanvas.js.map +2 -2
  10. package/dist-cjs/lib/components/default-components/DefaultErrorFallback.js +2 -5
  11. package/dist-cjs/lib/components/default-components/DefaultErrorFallback.js.map +3 -3
  12. package/dist-cjs/lib/components/default-components/DefaultSpinner.js.map +2 -2
  13. package/dist-cjs/lib/editor/Editor.js +168 -181
  14. package/dist-cjs/lib/editor/Editor.js.map +3 -3
  15. package/dist-cjs/lib/editor/derivations/bindingsIndex.js +2 -0
  16. package/dist-cjs/lib/editor/derivations/bindingsIndex.js.map +2 -2
  17. package/dist-cjs/lib/editor/managers/ClickManager/ClickManager.js +3 -2
  18. package/dist-cjs/lib/editor/managers/ClickManager/ClickManager.js.map +2 -2
  19. package/dist-cjs/lib/editor/managers/EditorManager.js +11 -2
  20. package/dist-cjs/lib/editor/managers/EditorManager.js.map +2 -2
  21. package/dist-cjs/lib/editor/managers/PerformanceManager/PerformanceManager.js +49 -63
  22. package/dist-cjs/lib/editor/managers/PerformanceManager/PerformanceManager.js.map +2 -2
  23. package/dist-cjs/lib/editor/managers/ScribbleManager/ScribbleManager.js +1 -1
  24. package/dist-cjs/lib/editor/managers/ScribbleManager/ScribbleManager.js.map +2 -2
  25. package/dist-cjs/lib/editor/managers/SnapManager/BoundsSnaps.js +24 -24
  26. package/dist-cjs/lib/editor/managers/SnapManager/BoundsSnaps.js.map +2 -2
  27. package/dist-cjs/lib/editor/managers/SnapManager/HandleSnaps.js +7 -1
  28. package/dist-cjs/lib/editor/managers/SnapManager/HandleSnaps.js.map +2 -2
  29. package/dist-cjs/lib/editor/managers/SnapManager/SnapManager.js +4 -3
  30. package/dist-cjs/lib/editor/managers/SnapManager/SnapManager.js.map +2 -2
  31. package/dist-cjs/lib/editor/managers/TextManager/TextManager.js +4 -4
  32. package/dist-cjs/lib/editor/managers/TextManager/TextManager.js.map +2 -2
  33. package/dist-cjs/lib/editor/shapes/group/GroupShapeUtil.js +14 -6
  34. package/dist-cjs/lib/editor/shapes/group/GroupShapeUtil.js.map +3 -3
  35. package/dist-cjs/lib/editor/types/external-content.js.map +1 -1
  36. package/dist-cjs/lib/exports/ExportDelay.js +10 -2
  37. package/dist-cjs/lib/exports/ExportDelay.js.map +2 -2
  38. package/dist-cjs/lib/exports/FontEmbedder.js +25 -11
  39. package/dist-cjs/lib/exports/FontEmbedder.js.map +2 -2
  40. package/dist-cjs/lib/exports/StyleEmbedder.js +9 -4
  41. package/dist-cjs/lib/exports/StyleEmbedder.js.map +2 -2
  42. package/dist-cjs/lib/exports/fetchCache.js +3 -0
  43. package/dist-cjs/lib/exports/fetchCache.js.map +2 -2
  44. package/dist-cjs/lib/exports/getSvgAsImage.js +10 -4
  45. package/dist-cjs/lib/exports/getSvgAsImage.js.map +2 -2
  46. package/dist-cjs/lib/exports/getSvgJsx.js +18 -9
  47. package/dist-cjs/lib/exports/getSvgJsx.js.map +2 -2
  48. package/dist-cjs/lib/exports/parseCss.js +1 -1
  49. package/dist-cjs/lib/exports/parseCss.js.map +1 -1
  50. package/dist-cjs/lib/hooks/EditorComponentsContext.js.map +2 -2
  51. package/dist-cjs/lib/hooks/useCanvasEvents.js +24 -0
  52. package/dist-cjs/lib/hooks/useCanvasEvents.js.map +2 -2
  53. package/dist-cjs/lib/hooks/useIdentity.js +6 -2
  54. package/dist-cjs/lib/hooks/useIdentity.js.map +3 -3
  55. package/dist-cjs/lib/license/LicenseManager.js +9 -1
  56. package/dist-cjs/lib/license/LicenseManager.js.map +2 -2
  57. package/dist-cjs/lib/license/LicenseProvider.js +12 -4
  58. package/dist-cjs/lib/license/LicenseProvider.js.map +2 -2
  59. package/dist-cjs/lib/utils/debug-flags.js +0 -6
  60. package/dist-cjs/lib/utils/debug-flags.js.map +2 -2
  61. package/dist-cjs/lib/utils/deepLinks.js +2 -1
  62. package/dist-cjs/lib/utils/deepLinks.js.map +2 -2
  63. package/dist-cjs/lib/utils/sync/LocalIndexedDb.js +32 -25
  64. package/dist-cjs/lib/utils/sync/LocalIndexedDb.js.map +2 -2
  65. package/dist-cjs/lib/utils/sync/TLLocalSyncClient.js +81 -40
  66. package/dist-cjs/lib/utils/sync/TLLocalSyncClient.js.map +2 -2
  67. package/dist-cjs/version.js +3 -3
  68. package/dist-cjs/version.js.map +1 -1
  69. package/dist-esm/index.d.mts +49 -23
  70. package/dist-esm/index.mjs +4 -2
  71. package/dist-esm/index.mjs.map +2 -2
  72. package/dist-esm/lib/TldrawEditor.mjs +17 -13
  73. package/dist-esm/lib/TldrawEditor.mjs.map +2 -2
  74. package/dist-esm/lib/components/MenuClickCapture.mjs +42 -3
  75. package/dist-esm/lib/components/MenuClickCapture.mjs.map +2 -2
  76. package/dist-esm/lib/components/default-components/DefaultCanvas.mjs +5 -1
  77. package/dist-esm/lib/components/default-components/DefaultCanvas.mjs.map +2 -2
  78. package/dist-esm/lib/components/default-components/DefaultErrorFallback.mjs +2 -5
  79. package/dist-esm/lib/components/default-components/DefaultErrorFallback.mjs.map +3 -3
  80. package/dist-esm/lib/components/default-components/DefaultSpinner.mjs.map +2 -2
  81. package/dist-esm/lib/editor/Editor.mjs +168 -181
  82. package/dist-esm/lib/editor/Editor.mjs.map +3 -3
  83. package/dist-esm/lib/editor/derivations/bindingsIndex.mjs +2 -0
  84. package/dist-esm/lib/editor/derivations/bindingsIndex.mjs.map +2 -2
  85. package/dist-esm/lib/editor/managers/ClickManager/ClickManager.mjs +3 -2
  86. package/dist-esm/lib/editor/managers/ClickManager/ClickManager.mjs.map +2 -2
  87. package/dist-esm/lib/editor/managers/EditorManager.mjs +11 -2
  88. package/dist-esm/lib/editor/managers/EditorManager.mjs.map +2 -2
  89. package/dist-esm/lib/editor/managers/PerformanceManager/PerformanceManager.mjs +49 -63
  90. package/dist-esm/lib/editor/managers/PerformanceManager/PerformanceManager.mjs.map +2 -2
  91. package/dist-esm/lib/editor/managers/ScribbleManager/ScribbleManager.mjs +1 -1
  92. package/dist-esm/lib/editor/managers/ScribbleManager/ScribbleManager.mjs.map +2 -2
  93. package/dist-esm/lib/editor/managers/SnapManager/BoundsSnaps.mjs +24 -24
  94. package/dist-esm/lib/editor/managers/SnapManager/BoundsSnaps.mjs.map +2 -2
  95. package/dist-esm/lib/editor/managers/SnapManager/HandleSnaps.mjs +7 -1
  96. package/dist-esm/lib/editor/managers/SnapManager/HandleSnaps.mjs.map +2 -2
  97. package/dist-esm/lib/editor/managers/SnapManager/SnapManager.mjs +4 -3
  98. package/dist-esm/lib/editor/managers/SnapManager/SnapManager.mjs.map +2 -2
  99. package/dist-esm/lib/editor/managers/TextManager/TextManager.mjs +4 -4
  100. package/dist-esm/lib/editor/managers/TextManager/TextManager.mjs.map +2 -2
  101. package/dist-esm/lib/editor/shapes/group/GroupShapeUtil.mjs +14 -6
  102. package/dist-esm/lib/editor/shapes/group/GroupShapeUtil.mjs.map +3 -3
  103. package/dist-esm/lib/exports/ExportDelay.mjs +11 -3
  104. package/dist-esm/lib/exports/ExportDelay.mjs.map +2 -2
  105. package/dist-esm/lib/exports/FontEmbedder.mjs +25 -11
  106. package/dist-esm/lib/exports/FontEmbedder.mjs.map +2 -2
  107. package/dist-esm/lib/exports/StyleEmbedder.mjs +9 -4
  108. package/dist-esm/lib/exports/StyleEmbedder.mjs.map +2 -2
  109. package/dist-esm/lib/exports/fetchCache.mjs +3 -0
  110. package/dist-esm/lib/exports/fetchCache.mjs.map +2 -2
  111. package/dist-esm/lib/exports/getSvgAsImage.mjs +10 -4
  112. package/dist-esm/lib/exports/getSvgAsImage.mjs.map +2 -2
  113. package/dist-esm/lib/exports/getSvgJsx.mjs +18 -9
  114. package/dist-esm/lib/exports/getSvgJsx.mjs.map +2 -2
  115. package/dist-esm/lib/exports/parseCss.mjs +1 -1
  116. package/dist-esm/lib/exports/parseCss.mjs.map +1 -1
  117. package/dist-esm/lib/hooks/EditorComponentsContext.mjs.map +2 -2
  118. package/dist-esm/lib/hooks/useCanvasEvents.mjs +24 -0
  119. package/dist-esm/lib/hooks/useCanvasEvents.mjs.map +2 -2
  120. package/dist-esm/lib/hooks/useIdentity.mjs +7 -3
  121. package/dist-esm/lib/hooks/useIdentity.mjs.map +3 -3
  122. package/dist-esm/lib/license/LicenseManager.mjs +9 -1
  123. package/dist-esm/lib/license/LicenseManager.mjs.map +2 -2
  124. package/dist-esm/lib/license/LicenseProvider.mjs +13 -5
  125. package/dist-esm/lib/license/LicenseProvider.mjs.map +2 -2
  126. package/dist-esm/lib/utils/debug-flags.mjs +0 -6
  127. package/dist-esm/lib/utils/debug-flags.mjs.map +2 -2
  128. package/dist-esm/lib/utils/deepLinks.mjs +2 -1
  129. package/dist-esm/lib/utils/deepLinks.mjs.map +2 -2
  130. package/dist-esm/lib/utils/sync/LocalIndexedDb.mjs +32 -25
  131. package/dist-esm/lib/utils/sync/LocalIndexedDb.mjs.map +2 -2
  132. package/dist-esm/lib/utils/sync/TLLocalSyncClient.mjs +81 -40
  133. package/dist-esm/lib/utils/sync/TLLocalSyncClient.mjs.map +2 -2
  134. package/dist-esm/version.mjs +3 -3
  135. package/dist-esm/version.mjs.map +1 -1
  136. package/editor.css +9 -1
  137. package/package.json +8 -11
  138. package/src/index.ts +5 -1
  139. package/src/lib/TldrawEditor.tsx +35 -21
  140. package/src/lib/components/MenuClickCapture.tsx +55 -4
  141. package/src/lib/components/default-components/DefaultCanvas.tsx +7 -1
  142. package/src/lib/components/default-components/DefaultErrorFallback.tsx +13 -5
  143. package/src/lib/components/default-components/DefaultSpinner.tsx +4 -1
  144. package/src/lib/editor/Editor.test.ts +65 -0
  145. package/src/lib/editor/Editor.ts +261 -294
  146. package/src/lib/editor/derivations/bindingsIndex.ts +3 -0
  147. package/src/lib/editor/managers/ClickManager/ClickManager.test.ts +1 -0
  148. package/src/lib/editor/managers/ClickManager/ClickManager.ts +3 -2
  149. package/src/lib/editor/managers/EditorManager.test.ts +32 -1
  150. package/src/lib/editor/managers/EditorManager.ts +15 -3
  151. package/src/lib/editor/managers/PerformanceManager/PerformanceManager.test.ts +80 -0
  152. package/src/lib/editor/managers/PerformanceManager/PerformanceManager.ts +54 -81
  153. package/src/lib/editor/managers/ScribbleManager/ScribbleManager.ts +1 -1
  154. package/src/lib/editor/managers/SnapManager/BoundsSnaps.ts +32 -36
  155. package/src/lib/editor/managers/SnapManager/HandleSnaps.ts +13 -2
  156. package/src/lib/editor/managers/SnapManager/SnapManager.test.ts +13 -0
  157. package/src/lib/editor/managers/SnapManager/SnapManager.ts +6 -4
  158. package/src/lib/editor/managers/TextManager/TextManager.test.ts +74 -0
  159. package/src/lib/editor/managers/TextManager/TextManager.ts +6 -5
  160. package/src/lib/editor/shapes/group/GroupShapeUtil.tsx +23 -8
  161. package/src/lib/editor/types/external-content.ts +5 -0
  162. package/src/lib/exports/ExportDelay.tsx +16 -4
  163. package/src/lib/exports/FontEmbedder.test.ts +99 -0
  164. package/src/lib/exports/FontEmbedder.ts +32 -11
  165. package/src/lib/exports/StyleEmbedder.ts +13 -4
  166. package/src/lib/exports/fetchCache.test.ts +22 -0
  167. package/src/lib/exports/fetchCache.ts +4 -0
  168. package/src/lib/exports/getSvgAsImage.ts +13 -5
  169. package/src/lib/exports/getSvgJsx.test.ts +43 -1
  170. package/src/lib/exports/getSvgJsx.tsx +28 -16
  171. package/src/lib/exports/parseCss.test.ts +4 -0
  172. package/src/lib/exports/parseCss.ts +2 -2
  173. package/src/lib/hooks/EditorComponentsContext.tsx +2 -1
  174. package/src/lib/hooks/useCanvasEvents.ts +42 -0
  175. package/src/lib/hooks/useIdentity.tsx +12 -1
  176. package/src/lib/license/LicenseManager.ts +13 -1
  177. package/src/lib/license/LicenseProvider.test.tsx +76 -0
  178. package/src/lib/license/LicenseProvider.tsx +19 -5
  179. package/src/lib/test/preserveFocus.test.tsx +81 -0
  180. package/src/lib/utils/debug-flags.ts +0 -6
  181. package/src/lib/utils/deepLinks.test.ts +15 -0
  182. package/src/lib/utils/deepLinks.ts +8 -3
  183. package/src/lib/utils/sync/LocalIndexedDb.test.ts +121 -1
  184. package/src/lib/utils/sync/LocalIndexedDb.ts +41 -28
  185. package/src/lib/utils/sync/TLLocalSyncClient.test.ts +257 -1
  186. package/src/lib/utils/sync/TLLocalSyncClient.ts +112 -54
  187. package/src/version.ts +3 -3
  188. package/dist-cjs/lib/primitives/geometry/geometry.bench.js +0 -133
  189. package/dist-cjs/lib/primitives/geometry/geometry.bench.js.map +0 -7
  190. package/dist-esm/lib/primitives/geometry/geometry.bench.mjs +0 -132
  191. package/dist-esm/lib/primitives/geometry/geometry.bench.mjs.map +0 -7
  192. package/src/lib/primitives/geometry/geometry.bench.ts +0 -179
@@ -1,133 +0,0 @@
1
- "use strict";
2
- var import_vitest = require("vitest");
3
- var import_Vec = require("../Vec");
4
- var import_Arc2d = require("./Arc2d");
5
- var import_Circle2d = require("./Circle2d");
6
- var import_Edge2d = require("./Edge2d");
7
- var import_Polyline2d = require("./Polyline2d");
8
- var import_Rectangle2d = require("./Rectangle2d");
9
- var import_intersect = require("../intersect");
10
- const lsA = new import_Vec.Vec(0, 0);
11
- const lsB = new import_Vec.Vec(100, 50);
12
- const lsP = new import_Vec.Vec(30, 60);
13
- (0, import_vitest.describe)("Vec line segment", () => {
14
- (0, import_vitest.bench)("NearestPointOnLineSegment", () => {
15
- import_Vec.Vec.NearestPointOnLineSegment(lsA, lsB, lsP, true);
16
- });
17
- (0, import_vitest.bench)("DistanceToLineSegment", () => {
18
- import_Vec.Vec.DistanceToLineSegment(lsA, lsB, lsP, true);
19
- });
20
- });
21
- const vecA = new import_Vec.Vec(3, 4);
22
- const vecB = new import_Vec.Vec(-1, 2);
23
- const lineOrigin = new import_Vec.Vec(10, 10);
24
- const lineDir = new import_Vec.Vec(0.7071, 0.7071);
25
- const lineTestP = new import_Vec.Vec(20, 15);
26
- (0, import_vitest.describe)("Vec utilities", () => {
27
- (0, import_vitest.bench)("Lrp", () => {
28
- import_Vec.Vec.Lrp(lsA, lsB, 0.35);
29
- });
30
- (0, import_vitest.bench)("AngleBetween", () => {
31
- import_Vec.Vec.AngleBetween(vecA, vecB);
32
- });
33
- (0, import_vitest.bench)("NearestPointOnLineThroughPoint", () => {
34
- import_Vec.Vec.NearestPointOnLineThroughPoint(lineOrigin, lineDir, lineTestP);
35
- });
36
- (0, import_vitest.bench)("DistanceToLineThroughPoint", () => {
37
- import_Vec.Vec.DistanceToLineThroughPoint(lineOrigin, lineDir, lineTestP);
38
- });
39
- });
40
- const intA1 = new import_Vec.Vec(0, 0);
41
- const intA2 = new import_Vec.Vec(100, 100);
42
- const intB1 = new import_Vec.Vec(100, 0);
43
- const intB2 = new import_Vec.Vec(0, 100);
44
- const intB1Miss = new import_Vec.Vec(200, 0);
45
- const intB2Miss = new import_Vec.Vec(200, 100);
46
- const intCenter = new import_Vec.Vec(50, 50);
47
- (0, import_vitest.describe)("Intersections", () => {
48
- (0, import_vitest.bench)("lineSegment-lineSegment (hit)", () => {
49
- (0, import_intersect.intersectLineSegmentLineSegment)(intA1, intA2, intB1, intB2);
50
- });
51
- (0, import_vitest.bench)("lineSegment-lineSegment (miss)", () => {
52
- (0, import_intersect.intersectLineSegmentLineSegment)(intA1, intA2, intB1Miss, intB2Miss);
53
- });
54
- (0, import_vitest.bench)("lineSegment-circle (hit)", () => {
55
- (0, import_intersect.intersectLineSegmentCircle)(intA1, intA2, intCenter, 30);
56
- });
57
- (0, import_vitest.bench)("lineSegment-circle (miss)", () => {
58
- (0, import_intersect.intersectLineSegmentCircle)(intA1, intA2, intCenter, 5);
59
- });
60
- });
61
- const edge = new import_Edge2d.Edge2d({ start: new import_Vec.Vec(0, 0), end: new import_Vec.Vec(100, 50) });
62
- const edgePoint = new import_Vec.Vec(30, 60);
63
- (0, import_vitest.describe)("Edge2d", () => {
64
- (0, import_vitest.bench)("nearestPoint", () => {
65
- edge.nearestPoint(edgePoint);
66
- });
67
- (0, import_vitest.bench)("distanceToPoint", () => {
68
- edge.distanceToPoint(edgePoint);
69
- });
70
- });
71
- const circle = new import_Circle2d.Circle2d({ radius: 50, isFilled: true });
72
- const circlePoint = new import_Vec.Vec(80, 60);
73
- const circlePointInside = new import_Vec.Vec(50, 50);
74
- (0, import_vitest.describe)("Circle2d", () => {
75
- (0, import_vitest.bench)("nearestPoint", () => {
76
- circle.nearestPoint(circlePoint);
77
- });
78
- (0, import_vitest.bench)("distanceToPoint", () => {
79
- circle.distanceToPoint(circlePoint);
80
- });
81
- (0, import_vitest.bench)("hitTestPoint (outside)", () => {
82
- circle.hitTestPoint(circlePoint, 5);
83
- });
84
- (0, import_vitest.bench)("hitTestPoint (inside)", () => {
85
- circle.hitTestPoint(circlePointInside, 5, true);
86
- });
87
- });
88
- const arc = new import_Arc2d.Arc2d({
89
- center: new import_Vec.Vec(50, 50),
90
- start: new import_Vec.Vec(100, 50),
91
- end: new import_Vec.Vec(50, 100),
92
- sweepFlag: 1,
93
- largeArcFlag: 0
94
- });
95
- const arcPoint = new import_Vec.Vec(90, 90);
96
- (0, import_vitest.describe)("Arc2d", () => {
97
- (0, import_vitest.bench)("nearestPoint", () => {
98
- arc.nearestPoint(arcPoint);
99
- });
100
- });
101
- const polyPoints = [];
102
- for (let i = 0; i <= 20; i++) {
103
- const t = i / 20;
104
- polyPoints.push(new import_Vec.Vec(t * 200, Math.sin(t * Math.PI * 2) * 50 + 50));
105
- }
106
- const polyline = new import_Polyline2d.Polyline2d({ points: polyPoints });
107
- const polyPoint = new import_Vec.Vec(100, 80);
108
- (0, import_vitest.describe)("Polyline2d", () => {
109
- (0, import_vitest.bench)("nearestPoint", () => {
110
- polyline.nearestPoint(polyPoint);
111
- });
112
- (0, import_vitest.bench)("distanceToPoint", () => {
113
- polyline.distanceToPoint(polyPoint);
114
- });
115
- });
116
- const rect = new import_Rectangle2d.Rectangle2d({ width: 100, height: 80, isFilled: true });
117
- const rectPointOutside = new import_Vec.Vec(120, 40);
118
- const rectPointInside = new import_Vec.Vec(50, 40);
119
- (0, import_vitest.describe)("Rectangle2d (Geometry2d)", () => {
120
- (0, import_vitest.bench)("hitTestPoint (outside)", () => {
121
- rect.hitTestPoint(rectPointOutside, 5);
122
- });
123
- (0, import_vitest.bench)("hitTestPoint (inside)", () => {
124
- rect.hitTestPoint(rectPointInside, 5, true);
125
- });
126
- (0, import_vitest.bench)("distanceToPoint (outside)", () => {
127
- rect.distanceToPoint(rectPointOutside);
128
- });
129
- (0, import_vitest.bench)("distanceToPoint (inside)", () => {
130
- rect.distanceToPoint(rectPointInside, true);
131
- });
132
- });
133
- //# sourceMappingURL=geometry.bench.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../src/lib/primitives/geometry/geometry.bench.ts"],
4
- "sourcesContent": ["import { bench, describe } from 'vitest'\nimport { Vec } from '../Vec'\nimport { Arc2d } from './Arc2d'\nimport { Circle2d } from './Circle2d'\nimport { Edge2d } from './Edge2d'\nimport { Polyline2d } from './Polyline2d'\nimport { Rectangle2d } from './Rectangle2d'\n\n// --- Vec line segment utilities ---\n\nconst lsA = new Vec(0, 0)\nconst lsB = new Vec(100, 50)\nconst lsP = new Vec(30, 60)\n\ndescribe('Vec line segment', () => {\n\tbench('NearestPointOnLineSegment', () => {\n\t\tVec.NearestPointOnLineSegment(lsA, lsB, lsP, true)\n\t})\n\n\tbench('DistanceToLineSegment', () => {\n\t\tVec.DistanceToLineSegment(lsA, lsB, lsP, true)\n\t})\n})\n\n// --- Vec utilities ---\n\nconst vecA = new Vec(3, 4)\nconst vecB = new Vec(-1, 2)\nconst lineOrigin = new Vec(10, 10)\nconst lineDir = new Vec(0.7071, 0.7071) // ~unit vector at 45\u00B0\nconst lineTestP = new Vec(20, 15)\n\ndescribe('Vec utilities', () => {\n\tbench('Lrp', () => {\n\t\tVec.Lrp(lsA, lsB, 0.35)\n\t})\n\n\tbench('AngleBetween', () => {\n\t\tVec.AngleBetween(vecA, vecB)\n\t})\n\n\tbench('NearestPointOnLineThroughPoint', () => {\n\t\tVec.NearestPointOnLineThroughPoint(lineOrigin, lineDir, lineTestP)\n\t})\n\n\tbench('DistanceToLineThroughPoint', () => {\n\t\tVec.DistanceToLineThroughPoint(lineOrigin, lineDir, lineTestP)\n\t})\n})\n\n// --- Intersections ---\n\nimport { intersectLineSegmentCircle, intersectLineSegmentLineSegment } from '../intersect'\n\nconst intA1 = new Vec(0, 0)\nconst intA2 = new Vec(100, 100)\nconst intB1 = new Vec(100, 0)\nconst intB2 = new Vec(0, 100)\nconst intB1Miss = new Vec(200, 0)\nconst intB2Miss = new Vec(200, 100)\nconst intCenter = new Vec(50, 50)\n\ndescribe('Intersections', () => {\n\tbench('lineSegment-lineSegment (hit)', () => {\n\t\tintersectLineSegmentLineSegment(intA1, intA2, intB1, intB2)\n\t})\n\n\tbench('lineSegment-lineSegment (miss)', () => {\n\t\tintersectLineSegmentLineSegment(intA1, intA2, intB1Miss, intB2Miss)\n\t})\n\n\tbench('lineSegment-circle (hit)', () => {\n\t\tintersectLineSegmentCircle(intA1, intA2, intCenter, 30)\n\t})\n\n\tbench('lineSegment-circle (miss)', () => {\n\t\tintersectLineSegmentCircle(intA1, intA2, intCenter, 5)\n\t})\n})\n\n// --- Edge2d ---\n\nconst edge = new Edge2d({ start: new Vec(0, 0), end: new Vec(100, 50) })\nconst edgePoint = new Vec(30, 60)\n\ndescribe('Edge2d', () => {\n\tbench('nearestPoint', () => {\n\t\tedge.nearestPoint(edgePoint)\n\t})\n\n\tbench('distanceToPoint', () => {\n\t\tedge.distanceToPoint(edgePoint)\n\t})\n})\n\n// --- Circle2d ---\n\nconst circle = new Circle2d({ radius: 50, isFilled: true })\nconst circlePoint = new Vec(80, 60)\nconst circlePointInside = new Vec(50, 50)\n\ndescribe('Circle2d', () => {\n\tbench('nearestPoint', () => {\n\t\tcircle.nearestPoint(circlePoint)\n\t})\n\n\tbench('distanceToPoint', () => {\n\t\tcircle.distanceToPoint(circlePoint)\n\t})\n\n\tbench('hitTestPoint (outside)', () => {\n\t\tcircle.hitTestPoint(circlePoint, 5)\n\t})\n\n\tbench('hitTestPoint (inside)', () => {\n\t\tcircle.hitTestPoint(circlePointInside, 5, true)\n\t})\n})\n\n// --- Arc2d ---\n\nconst arc = new Arc2d({\n\tcenter: new Vec(50, 50),\n\tstart: new Vec(100, 50),\n\tend: new Vec(50, 100),\n\tsweepFlag: 1,\n\tlargeArcFlag: 0,\n})\nconst arcPoint = new Vec(90, 90)\n\ndescribe('Arc2d', () => {\n\tbench('nearestPoint', () => {\n\t\tarc.nearestPoint(arcPoint)\n\t})\n})\n\n// --- Polyline2d (20 segments) ---\n\nconst polyPoints: Vec[] = []\nfor (let i = 0; i <= 20; i++) {\n\tconst t = i / 20\n\tpolyPoints.push(new Vec(t * 200, Math.sin(t * Math.PI * 2) * 50 + 50))\n}\nconst polyline = new Polyline2d({ points: polyPoints })\nconst polyPoint = new Vec(100, 80)\n\ndescribe('Polyline2d', () => {\n\tbench('nearestPoint', () => {\n\t\tpolyline.nearestPoint(polyPoint)\n\t})\n\n\tbench('distanceToPoint', () => {\n\t\tpolyline.distanceToPoint(polyPoint)\n\t})\n})\n\n// --- Rectangle2d (Geometry2d base) ---\n\nconst rect = new Rectangle2d({ width: 100, height: 80, isFilled: true })\nconst rectPointOutside = new Vec(120, 40)\nconst rectPointInside = new Vec(50, 40)\n\ndescribe('Rectangle2d (Geometry2d)', () => {\n\tbench('hitTestPoint (outside)', () => {\n\t\trect.hitTestPoint(rectPointOutside, 5)\n\t})\n\n\tbench('hitTestPoint (inside)', () => {\n\t\trect.hitTestPoint(rectPointInside, 5, true)\n\t})\n\n\tbench('distanceToPoint (outside)', () => {\n\t\trect.distanceToPoint(rectPointOutside)\n\t})\n\n\tbench('distanceToPoint (inside)', () => {\n\t\trect.distanceToPoint(rectPointInside, true)\n\t})\n})\n"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,132 +0,0 @@
1
- import { bench, describe } from "vitest";
2
- import { Vec } from "../Vec.mjs";
3
- import { Arc2d } from "./Arc2d.mjs";
4
- import { Circle2d } from "./Circle2d.mjs";
5
- import { Edge2d } from "./Edge2d.mjs";
6
- import { Polyline2d } from "./Polyline2d.mjs";
7
- import { Rectangle2d } from "./Rectangle2d.mjs";
8
- const lsA = new Vec(0, 0);
9
- const lsB = new Vec(100, 50);
10
- const lsP = new Vec(30, 60);
11
- describe("Vec line segment", () => {
12
- bench("NearestPointOnLineSegment", () => {
13
- Vec.NearestPointOnLineSegment(lsA, lsB, lsP, true);
14
- });
15
- bench("DistanceToLineSegment", () => {
16
- Vec.DistanceToLineSegment(lsA, lsB, lsP, true);
17
- });
18
- });
19
- const vecA = new Vec(3, 4);
20
- const vecB = new Vec(-1, 2);
21
- const lineOrigin = new Vec(10, 10);
22
- const lineDir = new Vec(0.7071, 0.7071);
23
- const lineTestP = new Vec(20, 15);
24
- describe("Vec utilities", () => {
25
- bench("Lrp", () => {
26
- Vec.Lrp(lsA, lsB, 0.35);
27
- });
28
- bench("AngleBetween", () => {
29
- Vec.AngleBetween(vecA, vecB);
30
- });
31
- bench("NearestPointOnLineThroughPoint", () => {
32
- Vec.NearestPointOnLineThroughPoint(lineOrigin, lineDir, lineTestP);
33
- });
34
- bench("DistanceToLineThroughPoint", () => {
35
- Vec.DistanceToLineThroughPoint(lineOrigin, lineDir, lineTestP);
36
- });
37
- });
38
- import { intersectLineSegmentCircle, intersectLineSegmentLineSegment } from "../intersect.mjs";
39
- const intA1 = new Vec(0, 0);
40
- const intA2 = new Vec(100, 100);
41
- const intB1 = new Vec(100, 0);
42
- const intB2 = new Vec(0, 100);
43
- const intB1Miss = new Vec(200, 0);
44
- const intB2Miss = new Vec(200, 100);
45
- const intCenter = new Vec(50, 50);
46
- describe("Intersections", () => {
47
- bench("lineSegment-lineSegment (hit)", () => {
48
- intersectLineSegmentLineSegment(intA1, intA2, intB1, intB2);
49
- });
50
- bench("lineSegment-lineSegment (miss)", () => {
51
- intersectLineSegmentLineSegment(intA1, intA2, intB1Miss, intB2Miss);
52
- });
53
- bench("lineSegment-circle (hit)", () => {
54
- intersectLineSegmentCircle(intA1, intA2, intCenter, 30);
55
- });
56
- bench("lineSegment-circle (miss)", () => {
57
- intersectLineSegmentCircle(intA1, intA2, intCenter, 5);
58
- });
59
- });
60
- const edge = new Edge2d({ start: new Vec(0, 0), end: new Vec(100, 50) });
61
- const edgePoint = new Vec(30, 60);
62
- describe("Edge2d", () => {
63
- bench("nearestPoint", () => {
64
- edge.nearestPoint(edgePoint);
65
- });
66
- bench("distanceToPoint", () => {
67
- edge.distanceToPoint(edgePoint);
68
- });
69
- });
70
- const circle = new Circle2d({ radius: 50, isFilled: true });
71
- const circlePoint = new Vec(80, 60);
72
- const circlePointInside = new Vec(50, 50);
73
- describe("Circle2d", () => {
74
- bench("nearestPoint", () => {
75
- circle.nearestPoint(circlePoint);
76
- });
77
- bench("distanceToPoint", () => {
78
- circle.distanceToPoint(circlePoint);
79
- });
80
- bench("hitTestPoint (outside)", () => {
81
- circle.hitTestPoint(circlePoint, 5);
82
- });
83
- bench("hitTestPoint (inside)", () => {
84
- circle.hitTestPoint(circlePointInside, 5, true);
85
- });
86
- });
87
- const arc = new Arc2d({
88
- center: new Vec(50, 50),
89
- start: new Vec(100, 50),
90
- end: new Vec(50, 100),
91
- sweepFlag: 1,
92
- largeArcFlag: 0
93
- });
94
- const arcPoint = new Vec(90, 90);
95
- describe("Arc2d", () => {
96
- bench("nearestPoint", () => {
97
- arc.nearestPoint(arcPoint);
98
- });
99
- });
100
- const polyPoints = [];
101
- for (let i = 0; i <= 20; i++) {
102
- const t = i / 20;
103
- polyPoints.push(new Vec(t * 200, Math.sin(t * Math.PI * 2) * 50 + 50));
104
- }
105
- const polyline = new Polyline2d({ points: polyPoints });
106
- const polyPoint = new Vec(100, 80);
107
- describe("Polyline2d", () => {
108
- bench("nearestPoint", () => {
109
- polyline.nearestPoint(polyPoint);
110
- });
111
- bench("distanceToPoint", () => {
112
- polyline.distanceToPoint(polyPoint);
113
- });
114
- });
115
- const rect = new Rectangle2d({ width: 100, height: 80, isFilled: true });
116
- const rectPointOutside = new Vec(120, 40);
117
- const rectPointInside = new Vec(50, 40);
118
- describe("Rectangle2d (Geometry2d)", () => {
119
- bench("hitTestPoint (outside)", () => {
120
- rect.hitTestPoint(rectPointOutside, 5);
121
- });
122
- bench("hitTestPoint (inside)", () => {
123
- rect.hitTestPoint(rectPointInside, 5, true);
124
- });
125
- bench("distanceToPoint (outside)", () => {
126
- rect.distanceToPoint(rectPointOutside);
127
- });
128
- bench("distanceToPoint (inside)", () => {
129
- rect.distanceToPoint(rectPointInside, true);
130
- });
131
- });
132
- //# sourceMappingURL=geometry.bench.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../src/lib/primitives/geometry/geometry.bench.ts"],
4
- "sourcesContent": ["import { bench, describe } from 'vitest'\nimport { Vec } from '../Vec'\nimport { Arc2d } from './Arc2d'\nimport { Circle2d } from './Circle2d'\nimport { Edge2d } from './Edge2d'\nimport { Polyline2d } from './Polyline2d'\nimport { Rectangle2d } from './Rectangle2d'\n\n// --- Vec line segment utilities ---\n\nconst lsA = new Vec(0, 0)\nconst lsB = new Vec(100, 50)\nconst lsP = new Vec(30, 60)\n\ndescribe('Vec line segment', () => {\n\tbench('NearestPointOnLineSegment', () => {\n\t\tVec.NearestPointOnLineSegment(lsA, lsB, lsP, true)\n\t})\n\n\tbench('DistanceToLineSegment', () => {\n\t\tVec.DistanceToLineSegment(lsA, lsB, lsP, true)\n\t})\n})\n\n// --- Vec utilities ---\n\nconst vecA = new Vec(3, 4)\nconst vecB = new Vec(-1, 2)\nconst lineOrigin = new Vec(10, 10)\nconst lineDir = new Vec(0.7071, 0.7071) // ~unit vector at 45\u00B0\nconst lineTestP = new Vec(20, 15)\n\ndescribe('Vec utilities', () => {\n\tbench('Lrp', () => {\n\t\tVec.Lrp(lsA, lsB, 0.35)\n\t})\n\n\tbench('AngleBetween', () => {\n\t\tVec.AngleBetween(vecA, vecB)\n\t})\n\n\tbench('NearestPointOnLineThroughPoint', () => {\n\t\tVec.NearestPointOnLineThroughPoint(lineOrigin, lineDir, lineTestP)\n\t})\n\n\tbench('DistanceToLineThroughPoint', () => {\n\t\tVec.DistanceToLineThroughPoint(lineOrigin, lineDir, lineTestP)\n\t})\n})\n\n// --- Intersections ---\n\nimport { intersectLineSegmentCircle, intersectLineSegmentLineSegment } from '../intersect'\n\nconst intA1 = new Vec(0, 0)\nconst intA2 = new Vec(100, 100)\nconst intB1 = new Vec(100, 0)\nconst intB2 = new Vec(0, 100)\nconst intB1Miss = new Vec(200, 0)\nconst intB2Miss = new Vec(200, 100)\nconst intCenter = new Vec(50, 50)\n\ndescribe('Intersections', () => {\n\tbench('lineSegment-lineSegment (hit)', () => {\n\t\tintersectLineSegmentLineSegment(intA1, intA2, intB1, intB2)\n\t})\n\n\tbench('lineSegment-lineSegment (miss)', () => {\n\t\tintersectLineSegmentLineSegment(intA1, intA2, intB1Miss, intB2Miss)\n\t})\n\n\tbench('lineSegment-circle (hit)', () => {\n\t\tintersectLineSegmentCircle(intA1, intA2, intCenter, 30)\n\t})\n\n\tbench('lineSegment-circle (miss)', () => {\n\t\tintersectLineSegmentCircle(intA1, intA2, intCenter, 5)\n\t})\n})\n\n// --- Edge2d ---\n\nconst edge = new Edge2d({ start: new Vec(0, 0), end: new Vec(100, 50) })\nconst edgePoint = new Vec(30, 60)\n\ndescribe('Edge2d', () => {\n\tbench('nearestPoint', () => {\n\t\tedge.nearestPoint(edgePoint)\n\t})\n\n\tbench('distanceToPoint', () => {\n\t\tedge.distanceToPoint(edgePoint)\n\t})\n})\n\n// --- Circle2d ---\n\nconst circle = new Circle2d({ radius: 50, isFilled: true })\nconst circlePoint = new Vec(80, 60)\nconst circlePointInside = new Vec(50, 50)\n\ndescribe('Circle2d', () => {\n\tbench('nearestPoint', () => {\n\t\tcircle.nearestPoint(circlePoint)\n\t})\n\n\tbench('distanceToPoint', () => {\n\t\tcircle.distanceToPoint(circlePoint)\n\t})\n\n\tbench('hitTestPoint (outside)', () => {\n\t\tcircle.hitTestPoint(circlePoint, 5)\n\t})\n\n\tbench('hitTestPoint (inside)', () => {\n\t\tcircle.hitTestPoint(circlePointInside, 5, true)\n\t})\n})\n\n// --- Arc2d ---\n\nconst arc = new Arc2d({\n\tcenter: new Vec(50, 50),\n\tstart: new Vec(100, 50),\n\tend: new Vec(50, 100),\n\tsweepFlag: 1,\n\tlargeArcFlag: 0,\n})\nconst arcPoint = new Vec(90, 90)\n\ndescribe('Arc2d', () => {\n\tbench('nearestPoint', () => {\n\t\tarc.nearestPoint(arcPoint)\n\t})\n})\n\n// --- Polyline2d (20 segments) ---\n\nconst polyPoints: Vec[] = []\nfor (let i = 0; i <= 20; i++) {\n\tconst t = i / 20\n\tpolyPoints.push(new Vec(t * 200, Math.sin(t * Math.PI * 2) * 50 + 50))\n}\nconst polyline = new Polyline2d({ points: polyPoints })\nconst polyPoint = new Vec(100, 80)\n\ndescribe('Polyline2d', () => {\n\tbench('nearestPoint', () => {\n\t\tpolyline.nearestPoint(polyPoint)\n\t})\n\n\tbench('distanceToPoint', () => {\n\t\tpolyline.distanceToPoint(polyPoint)\n\t})\n})\n\n// --- Rectangle2d (Geometry2d base) ---\n\nconst rect = new Rectangle2d({ width: 100, height: 80, isFilled: true })\nconst rectPointOutside = new Vec(120, 40)\nconst rectPointInside = new Vec(50, 40)\n\ndescribe('Rectangle2d (Geometry2d)', () => {\n\tbench('hitTestPoint (outside)', () => {\n\t\trect.hitTestPoint(rectPointOutside, 5)\n\t})\n\n\tbench('hitTestPoint (inside)', () => {\n\t\trect.hitTestPoint(rectPointInside, 5, true)\n\t})\n\n\tbench('distanceToPoint (outside)', () => {\n\t\trect.distanceToPoint(rectPointOutside)\n\t})\n\n\tbench('distanceToPoint (inside)', () => {\n\t\trect.distanceToPoint(rectPointInside, true)\n\t})\n})\n"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,179 +0,0 @@
1
- import { bench, describe } from 'vitest'
2
- import { Vec } from '../Vec'
3
- import { Arc2d } from './Arc2d'
4
- import { Circle2d } from './Circle2d'
5
- import { Edge2d } from './Edge2d'
6
- import { Polyline2d } from './Polyline2d'
7
- import { Rectangle2d } from './Rectangle2d'
8
-
9
- // --- Vec line segment utilities ---
10
-
11
- const lsA = new Vec(0, 0)
12
- const lsB = new Vec(100, 50)
13
- const lsP = new Vec(30, 60)
14
-
15
- describe('Vec line segment', () => {
16
- bench('NearestPointOnLineSegment', () => {
17
- Vec.NearestPointOnLineSegment(lsA, lsB, lsP, true)
18
- })
19
-
20
- bench('DistanceToLineSegment', () => {
21
- Vec.DistanceToLineSegment(lsA, lsB, lsP, true)
22
- })
23
- })
24
-
25
- // --- Vec utilities ---
26
-
27
- const vecA = new Vec(3, 4)
28
- const vecB = new Vec(-1, 2)
29
- const lineOrigin = new Vec(10, 10)
30
- const lineDir = new Vec(0.7071, 0.7071) // ~unit vector at 45°
31
- const lineTestP = new Vec(20, 15)
32
-
33
- describe('Vec utilities', () => {
34
- bench('Lrp', () => {
35
- Vec.Lrp(lsA, lsB, 0.35)
36
- })
37
-
38
- bench('AngleBetween', () => {
39
- Vec.AngleBetween(vecA, vecB)
40
- })
41
-
42
- bench('NearestPointOnLineThroughPoint', () => {
43
- Vec.NearestPointOnLineThroughPoint(lineOrigin, lineDir, lineTestP)
44
- })
45
-
46
- bench('DistanceToLineThroughPoint', () => {
47
- Vec.DistanceToLineThroughPoint(lineOrigin, lineDir, lineTestP)
48
- })
49
- })
50
-
51
- // --- Intersections ---
52
-
53
- import { intersectLineSegmentCircle, intersectLineSegmentLineSegment } from '../intersect'
54
-
55
- const intA1 = new Vec(0, 0)
56
- const intA2 = new Vec(100, 100)
57
- const intB1 = new Vec(100, 0)
58
- const intB2 = new Vec(0, 100)
59
- const intB1Miss = new Vec(200, 0)
60
- const intB2Miss = new Vec(200, 100)
61
- const intCenter = new Vec(50, 50)
62
-
63
- describe('Intersections', () => {
64
- bench('lineSegment-lineSegment (hit)', () => {
65
- intersectLineSegmentLineSegment(intA1, intA2, intB1, intB2)
66
- })
67
-
68
- bench('lineSegment-lineSegment (miss)', () => {
69
- intersectLineSegmentLineSegment(intA1, intA2, intB1Miss, intB2Miss)
70
- })
71
-
72
- bench('lineSegment-circle (hit)', () => {
73
- intersectLineSegmentCircle(intA1, intA2, intCenter, 30)
74
- })
75
-
76
- bench('lineSegment-circle (miss)', () => {
77
- intersectLineSegmentCircle(intA1, intA2, intCenter, 5)
78
- })
79
- })
80
-
81
- // --- Edge2d ---
82
-
83
- const edge = new Edge2d({ start: new Vec(0, 0), end: new Vec(100, 50) })
84
- const edgePoint = new Vec(30, 60)
85
-
86
- describe('Edge2d', () => {
87
- bench('nearestPoint', () => {
88
- edge.nearestPoint(edgePoint)
89
- })
90
-
91
- bench('distanceToPoint', () => {
92
- edge.distanceToPoint(edgePoint)
93
- })
94
- })
95
-
96
- // --- Circle2d ---
97
-
98
- const circle = new Circle2d({ radius: 50, isFilled: true })
99
- const circlePoint = new Vec(80, 60)
100
- const circlePointInside = new Vec(50, 50)
101
-
102
- describe('Circle2d', () => {
103
- bench('nearestPoint', () => {
104
- circle.nearestPoint(circlePoint)
105
- })
106
-
107
- bench('distanceToPoint', () => {
108
- circle.distanceToPoint(circlePoint)
109
- })
110
-
111
- bench('hitTestPoint (outside)', () => {
112
- circle.hitTestPoint(circlePoint, 5)
113
- })
114
-
115
- bench('hitTestPoint (inside)', () => {
116
- circle.hitTestPoint(circlePointInside, 5, true)
117
- })
118
- })
119
-
120
- // --- Arc2d ---
121
-
122
- const arc = new Arc2d({
123
- center: new Vec(50, 50),
124
- start: new Vec(100, 50),
125
- end: new Vec(50, 100),
126
- sweepFlag: 1,
127
- largeArcFlag: 0,
128
- })
129
- const arcPoint = new Vec(90, 90)
130
-
131
- describe('Arc2d', () => {
132
- bench('nearestPoint', () => {
133
- arc.nearestPoint(arcPoint)
134
- })
135
- })
136
-
137
- // --- Polyline2d (20 segments) ---
138
-
139
- const polyPoints: Vec[] = []
140
- for (let i = 0; i <= 20; i++) {
141
- const t = i / 20
142
- polyPoints.push(new Vec(t * 200, Math.sin(t * Math.PI * 2) * 50 + 50))
143
- }
144
- const polyline = new Polyline2d({ points: polyPoints })
145
- const polyPoint = new Vec(100, 80)
146
-
147
- describe('Polyline2d', () => {
148
- bench('nearestPoint', () => {
149
- polyline.nearestPoint(polyPoint)
150
- })
151
-
152
- bench('distanceToPoint', () => {
153
- polyline.distanceToPoint(polyPoint)
154
- })
155
- })
156
-
157
- // --- Rectangle2d (Geometry2d base) ---
158
-
159
- const rect = new Rectangle2d({ width: 100, height: 80, isFilled: true })
160
- const rectPointOutside = new Vec(120, 40)
161
- const rectPointInside = new Vec(50, 40)
162
-
163
- describe('Rectangle2d (Geometry2d)', () => {
164
- bench('hitTestPoint (outside)', () => {
165
- rect.hitTestPoint(rectPointOutside, 5)
166
- })
167
-
168
- bench('hitTestPoint (inside)', () => {
169
- rect.hitTestPoint(rectPointInside, 5, true)
170
- })
171
-
172
- bench('distanceToPoint (outside)', () => {
173
- rect.distanceToPoint(rectPointOutside)
174
- })
175
-
176
- bench('distanceToPoint (inside)', () => {
177
- rect.distanceToPoint(rectPointInside, true)
178
- })
179
- })