@tldraw/editor 5.4.1 → 5.5.0-canary.003bf5951274

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 (200) hide show
  1. package/dist-cjs/index.d.ts +37 -14
  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/constants.js +2 -0
  14. package/dist-cjs/lib/constants.js.map +2 -2
  15. package/dist-cjs/lib/editor/Editor.js +147 -157
  16. package/dist-cjs/lib/editor/Editor.js.map +3 -3
  17. package/dist-cjs/lib/editor/derivations/bindingsIndex.js +2 -0
  18. package/dist-cjs/lib/editor/derivations/bindingsIndex.js.map +2 -2
  19. package/dist-cjs/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.js +10 -6
  20. package/dist-cjs/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.js.map +2 -2
  21. package/dist-cjs/lib/editor/managers/TextManager/TextManager.js +4 -4
  22. package/dist-cjs/lib/editor/managers/TextManager/TextManager.js.map +2 -2
  23. package/dist-cjs/lib/editor/managers/ThemeManager/ThemeManager.js +7 -3
  24. package/dist-cjs/lib/editor/managers/ThemeManager/ThemeManager.js.map +2 -2
  25. package/dist-cjs/lib/editor/shapes/group/GroupShapeUtil.js +14 -6
  26. package/dist-cjs/lib/editor/shapes/group/GroupShapeUtil.js.map +3 -3
  27. package/dist-cjs/lib/editor/types/external-content.js.map +1 -1
  28. package/dist-cjs/lib/exports/ExportDelay.js +10 -2
  29. package/dist-cjs/lib/exports/ExportDelay.js.map +2 -2
  30. package/dist-cjs/lib/exports/FontEmbedder.js +25 -11
  31. package/dist-cjs/lib/exports/FontEmbedder.js.map +2 -2
  32. package/dist-cjs/lib/exports/StyleEmbedder.js +9 -4
  33. package/dist-cjs/lib/exports/StyleEmbedder.js.map +2 -2
  34. package/dist-cjs/lib/exports/fetchCache.js +3 -0
  35. package/dist-cjs/lib/exports/fetchCache.js.map +2 -2
  36. package/dist-cjs/lib/exports/getSvgAsImage.js +10 -4
  37. package/dist-cjs/lib/exports/getSvgAsImage.js.map +2 -2
  38. package/dist-cjs/lib/exports/getSvgJsx.js +18 -9
  39. package/dist-cjs/lib/exports/getSvgJsx.js.map +2 -2
  40. package/dist-cjs/lib/exports/parseCss.js +1 -1
  41. package/dist-cjs/lib/exports/parseCss.js.map +1 -1
  42. package/dist-cjs/lib/hooks/EditorComponentsContext.js.map +2 -2
  43. package/dist-cjs/lib/hooks/useCanvasEvents.js +24 -0
  44. package/dist-cjs/lib/hooks/useCanvasEvents.js.map +2 -2
  45. package/dist-cjs/lib/hooks/useIdentity.js +6 -2
  46. package/dist-cjs/lib/hooks/useIdentity.js.map +3 -3
  47. package/dist-cjs/lib/license/LicenseManager.js +9 -1
  48. package/dist-cjs/lib/license/LicenseManager.js.map +2 -2
  49. package/dist-cjs/lib/license/LicenseProvider.js +12 -4
  50. package/dist-cjs/lib/license/LicenseProvider.js.map +2 -2
  51. package/dist-cjs/lib/primitives/geometry/Arc2d.js +1 -1
  52. package/dist-cjs/lib/primitives/geometry/Arc2d.js.map +2 -2
  53. package/dist-cjs/lib/primitives/geometry/CubicBezier2d.js +1 -1
  54. package/dist-cjs/lib/primitives/geometry/CubicBezier2d.js.map +2 -2
  55. package/dist-cjs/lib/primitives/geometry/Edge2d.js +1 -1
  56. package/dist-cjs/lib/primitives/geometry/Edge2d.js.map +2 -2
  57. package/dist-cjs/lib/primitives/geometry/Group2d.js +8 -5
  58. package/dist-cjs/lib/primitives/geometry/Group2d.js.map +2 -2
  59. package/dist-cjs/lib/primitives/geometry/Point2d.js +1 -1
  60. package/dist-cjs/lib/primitives/geometry/Point2d.js.map +2 -2
  61. package/dist-cjs/lib/utils/debug-flags.js +0 -6
  62. package/dist-cjs/lib/utils/debug-flags.js.map +2 -2
  63. package/dist-cjs/lib/utils/deepLinks.js +2 -1
  64. package/dist-cjs/lib/utils/deepLinks.js.map +2 -2
  65. package/dist-cjs/lib/utils/sync/LocalIndexedDb.js +22 -24
  66. package/dist-cjs/lib/utils/sync/LocalIndexedDb.js.map +2 -2
  67. package/dist-cjs/lib/utils/sync/TLLocalSyncClient.js +81 -40
  68. package/dist-cjs/lib/utils/sync/TLLocalSyncClient.js.map +2 -2
  69. package/dist-cjs/version.js +3 -3
  70. package/dist-cjs/version.js.map +1 -1
  71. package/dist-esm/index.d.mts +37 -14
  72. package/dist-esm/index.mjs +4 -2
  73. package/dist-esm/index.mjs.map +2 -2
  74. package/dist-esm/lib/TldrawEditor.mjs +17 -13
  75. package/dist-esm/lib/TldrawEditor.mjs.map +2 -2
  76. package/dist-esm/lib/components/MenuClickCapture.mjs +42 -3
  77. package/dist-esm/lib/components/MenuClickCapture.mjs.map +2 -2
  78. package/dist-esm/lib/components/default-components/DefaultCanvas.mjs +5 -1
  79. package/dist-esm/lib/components/default-components/DefaultCanvas.mjs.map +2 -2
  80. package/dist-esm/lib/components/default-components/DefaultErrorFallback.mjs +2 -5
  81. package/dist-esm/lib/components/default-components/DefaultErrorFallback.mjs.map +3 -3
  82. package/dist-esm/lib/components/default-components/DefaultSpinner.mjs.map +2 -2
  83. package/dist-esm/lib/constants.mjs +2 -0
  84. package/dist-esm/lib/constants.mjs.map +2 -2
  85. package/dist-esm/lib/editor/Editor.mjs +148 -157
  86. package/dist-esm/lib/editor/Editor.mjs.map +3 -3
  87. package/dist-esm/lib/editor/derivations/bindingsIndex.mjs +2 -0
  88. package/dist-esm/lib/editor/derivations/bindingsIndex.mjs.map +2 -2
  89. package/dist-esm/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.mjs +10 -6
  90. package/dist-esm/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.mjs.map +2 -2
  91. package/dist-esm/lib/editor/managers/TextManager/TextManager.mjs +4 -4
  92. package/dist-esm/lib/editor/managers/TextManager/TextManager.mjs.map +2 -2
  93. package/dist-esm/lib/editor/managers/ThemeManager/ThemeManager.mjs +7 -3
  94. package/dist-esm/lib/editor/managers/ThemeManager/ThemeManager.mjs.map +2 -2
  95. package/dist-esm/lib/editor/shapes/group/GroupShapeUtil.mjs +14 -6
  96. package/dist-esm/lib/editor/shapes/group/GroupShapeUtil.mjs.map +3 -3
  97. package/dist-esm/lib/exports/ExportDelay.mjs +11 -3
  98. package/dist-esm/lib/exports/ExportDelay.mjs.map +2 -2
  99. package/dist-esm/lib/exports/FontEmbedder.mjs +25 -11
  100. package/dist-esm/lib/exports/FontEmbedder.mjs.map +2 -2
  101. package/dist-esm/lib/exports/StyleEmbedder.mjs +9 -4
  102. package/dist-esm/lib/exports/StyleEmbedder.mjs.map +2 -2
  103. package/dist-esm/lib/exports/fetchCache.mjs +3 -0
  104. package/dist-esm/lib/exports/fetchCache.mjs.map +2 -2
  105. package/dist-esm/lib/exports/getSvgAsImage.mjs +10 -4
  106. package/dist-esm/lib/exports/getSvgAsImage.mjs.map +2 -2
  107. package/dist-esm/lib/exports/getSvgJsx.mjs +18 -9
  108. package/dist-esm/lib/exports/getSvgJsx.mjs.map +2 -2
  109. package/dist-esm/lib/exports/parseCss.mjs +1 -1
  110. package/dist-esm/lib/exports/parseCss.mjs.map +1 -1
  111. package/dist-esm/lib/hooks/EditorComponentsContext.mjs.map +2 -2
  112. package/dist-esm/lib/hooks/useCanvasEvents.mjs +24 -0
  113. package/dist-esm/lib/hooks/useCanvasEvents.mjs.map +2 -2
  114. package/dist-esm/lib/hooks/useIdentity.mjs +7 -3
  115. package/dist-esm/lib/hooks/useIdentity.mjs.map +3 -3
  116. package/dist-esm/lib/license/LicenseManager.mjs +9 -1
  117. package/dist-esm/lib/license/LicenseManager.mjs.map +2 -2
  118. package/dist-esm/lib/license/LicenseProvider.mjs +13 -5
  119. package/dist-esm/lib/license/LicenseProvider.mjs.map +2 -2
  120. package/dist-esm/lib/primitives/geometry/Arc2d.mjs +1 -1
  121. package/dist-esm/lib/primitives/geometry/Arc2d.mjs.map +2 -2
  122. package/dist-esm/lib/primitives/geometry/CubicBezier2d.mjs +1 -1
  123. package/dist-esm/lib/primitives/geometry/CubicBezier2d.mjs.map +2 -2
  124. package/dist-esm/lib/primitives/geometry/Edge2d.mjs +1 -1
  125. package/dist-esm/lib/primitives/geometry/Edge2d.mjs.map +2 -2
  126. package/dist-esm/lib/primitives/geometry/Group2d.mjs +12 -6
  127. package/dist-esm/lib/primitives/geometry/Group2d.mjs.map +2 -2
  128. package/dist-esm/lib/primitives/geometry/Point2d.mjs +1 -1
  129. package/dist-esm/lib/primitives/geometry/Point2d.mjs.map +2 -2
  130. package/dist-esm/lib/utils/debug-flags.mjs +0 -6
  131. package/dist-esm/lib/utils/debug-flags.mjs.map +2 -2
  132. package/dist-esm/lib/utils/deepLinks.mjs +2 -1
  133. package/dist-esm/lib/utils/deepLinks.mjs.map +2 -2
  134. package/dist-esm/lib/utils/sync/LocalIndexedDb.mjs +22 -24
  135. package/dist-esm/lib/utils/sync/LocalIndexedDb.mjs.map +2 -2
  136. package/dist-esm/lib/utils/sync/TLLocalSyncClient.mjs +81 -40
  137. package/dist-esm/lib/utils/sync/TLLocalSyncClient.mjs.map +2 -2
  138. package/dist-esm/version.mjs +3 -3
  139. package/dist-esm/version.mjs.map +1 -1
  140. package/editor.css +9 -1
  141. package/package.json +8 -11
  142. package/src/index.ts +5 -1
  143. package/src/lib/TldrawEditor.tsx +35 -21
  144. package/src/lib/components/MenuClickCapture.tsx +55 -4
  145. package/src/lib/components/default-components/DefaultCanvas.tsx +7 -1
  146. package/src/lib/components/default-components/DefaultErrorFallback.tsx +13 -5
  147. package/src/lib/components/default-components/DefaultSpinner.tsx +4 -1
  148. package/src/lib/constants.ts +8 -0
  149. package/src/lib/editor/Editor.test.ts +20 -0
  150. package/src/lib/editor/Editor.ts +228 -262
  151. package/src/lib/editor/derivations/bindingsIndex.ts +3 -0
  152. package/src/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.test.ts +35 -4
  153. package/src/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.ts +13 -7
  154. package/src/lib/editor/managers/TextManager/TextManager.test.ts +74 -0
  155. package/src/lib/editor/managers/TextManager/TextManager.ts +6 -5
  156. package/src/lib/editor/managers/ThemeManager/ThemeManager.test.ts +53 -0
  157. package/src/lib/editor/managers/ThemeManager/ThemeManager.ts +9 -3
  158. package/src/lib/editor/shapes/group/GroupShapeUtil.tsx +23 -8
  159. package/src/lib/editor/types/external-content.ts +5 -0
  160. package/src/lib/exports/ExportDelay.tsx +16 -4
  161. package/src/lib/exports/FontEmbedder.test.ts +99 -0
  162. package/src/lib/exports/FontEmbedder.ts +32 -11
  163. package/src/lib/exports/StyleEmbedder.ts +13 -4
  164. package/src/lib/exports/fetchCache.test.ts +22 -0
  165. package/src/lib/exports/fetchCache.ts +4 -0
  166. package/src/lib/exports/getSvgAsImage.ts +13 -5
  167. package/src/lib/exports/getSvgJsx.test.ts +43 -1
  168. package/src/lib/exports/getSvgJsx.tsx +28 -16
  169. package/src/lib/exports/parseCss.test.ts +4 -0
  170. package/src/lib/exports/parseCss.ts +2 -2
  171. package/src/lib/hooks/EditorComponentsContext.tsx +2 -1
  172. package/src/lib/hooks/useCanvasEvents.ts +42 -0
  173. package/src/lib/hooks/useIdentity.tsx +12 -1
  174. package/src/lib/license/LicenseManager.ts +13 -1
  175. package/src/lib/license/LicenseProvider.test.tsx +76 -0
  176. package/src/lib/license/LicenseProvider.tsx +19 -5
  177. package/src/lib/primitives/geometry/Arc2d.test.ts +9 -0
  178. package/src/lib/primitives/geometry/Arc2d.ts +1 -1
  179. package/src/lib/primitives/geometry/CubicBezier2d.test.ts +13 -0
  180. package/src/lib/primitives/geometry/CubicBezier2d.ts +1 -1
  181. package/src/lib/primitives/geometry/Edge2d.test.ts +21 -3
  182. package/src/lib/primitives/geometry/Edge2d.ts +1 -1
  183. package/src/lib/primitives/geometry/Group2d.test.ts +26 -5
  184. package/src/lib/primitives/geometry/Group2d.ts +18 -7
  185. package/src/lib/primitives/geometry/Point2d.test.ts +14 -3
  186. package/src/lib/primitives/geometry/Point2d.ts +1 -1
  187. package/src/lib/test/preserveFocus.test.tsx +81 -0
  188. package/src/lib/utils/debug-flags.ts +0 -6
  189. package/src/lib/utils/deepLinks.test.ts +15 -0
  190. package/src/lib/utils/deepLinks.ts +8 -3
  191. package/src/lib/utils/sync/LocalIndexedDb.test.ts +95 -0
  192. package/src/lib/utils/sync/LocalIndexedDb.ts +31 -27
  193. package/src/lib/utils/sync/TLLocalSyncClient.test.ts +257 -1
  194. package/src/lib/utils/sync/TLLocalSyncClient.ts +112 -54
  195. package/src/version.ts +3 -3
  196. package/dist-cjs/lib/primitives/geometry/geometry.bench.js +0 -133
  197. package/dist-cjs/lib/primitives/geometry/geometry.bench.js.map +0 -7
  198. package/dist-esm/lib/primitives/geometry/geometry.bench.mjs +0 -132
  199. package/dist-esm/lib/primitives/geometry/geometry.bench.mjs.map +0 -7
  200. package/src/lib/primitives/geometry/geometry.bench.ts +0 -179
@@ -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": ";AAAA,oBAAgC;AAChC,iBAAoB;AACpB,mBAAsB;AACtB,sBAAyB;AACzB,oBAAuB;AACvB,wBAA2B;AAC3B,yBAA4B;AA8C5B,uBAA4E;AA1C5E,MAAM,MAAM,IAAI,eAAI,GAAG,CAAC;AACxB,MAAM,MAAM,IAAI,eAAI,KAAK,EAAE;AAC3B,MAAM,MAAM,IAAI,eAAI,IAAI,EAAE;AAAA,IAE1B,wBAAS,oBAAoB,MAAM;AAClC,2BAAM,6BAA6B,MAAM;AACxC,mBAAI,0BAA0B,KAAK,KAAK,KAAK,IAAI;AAAA,EAClD,CAAC;AAED,2BAAM,yBAAyB,MAAM;AACpC,mBAAI,sBAAsB,KAAK,KAAK,KAAK,IAAI;AAAA,EAC9C,CAAC;AACF,CAAC;AAID,MAAM,OAAO,IAAI,eAAI,GAAG,CAAC;AACzB,MAAM,OAAO,IAAI,eAAI,IAAI,CAAC;AAC1B,MAAM,aAAa,IAAI,eAAI,IAAI,EAAE;AACjC,MAAM,UAAU,IAAI,eAAI,QAAQ,MAAM;AACtC,MAAM,YAAY,IAAI,eAAI,IAAI,EAAE;AAAA,IAEhC,wBAAS,iBAAiB,MAAM;AAC/B,2BAAM,OAAO,MAAM;AAClB,mBAAI,IAAI,KAAK,KAAK,IAAI;AAAA,EACvB,CAAC;AAED,2BAAM,gBAAgB,MAAM;AAC3B,mBAAI,aAAa,MAAM,IAAI;AAAA,EAC5B,CAAC;AAED,2BAAM,kCAAkC,MAAM;AAC7C,mBAAI,+BAA+B,YAAY,SAAS,SAAS;AAAA,EAClE,CAAC;AAED,2BAAM,8BAA8B,MAAM;AACzC,mBAAI,2BAA2B,YAAY,SAAS,SAAS;AAAA,EAC9D,CAAC;AACF,CAAC;AAMD,MAAM,QAAQ,IAAI,eAAI,GAAG,CAAC;AAC1B,MAAM,QAAQ,IAAI,eAAI,KAAK,GAAG;AAC9B,MAAM,QAAQ,IAAI,eAAI,KAAK,CAAC;AAC5B,MAAM,QAAQ,IAAI,eAAI,GAAG,GAAG;AAC5B,MAAM,YAAY,IAAI,eAAI,KAAK,CAAC;AAChC,MAAM,YAAY,IAAI,eAAI,KAAK,GAAG;AAClC,MAAM,YAAY,IAAI,eAAI,IAAI,EAAE;AAAA,IAEhC,wBAAS,iBAAiB,MAAM;AAC/B,2BAAM,iCAAiC,MAAM;AAC5C,0DAAgC,OAAO,OAAO,OAAO,KAAK;AAAA,EAC3D,CAAC;AAED,2BAAM,kCAAkC,MAAM;AAC7C,0DAAgC,OAAO,OAAO,WAAW,SAAS;AAAA,EACnE,CAAC;AAED,2BAAM,4BAA4B,MAAM;AACvC,qDAA2B,OAAO,OAAO,WAAW,EAAE;AAAA,EACvD,CAAC;AAED,2BAAM,6BAA6B,MAAM;AACxC,qDAA2B,OAAO,OAAO,WAAW,CAAC;AAAA,EACtD,CAAC;AACF,CAAC;AAID,MAAM,OAAO,IAAI,qBAAO,EAAE,OAAO,IAAI,eAAI,GAAG,CAAC,GAAG,KAAK,IAAI,eAAI,KAAK,EAAE,EAAE,CAAC;AACvE,MAAM,YAAY,IAAI,eAAI,IAAI,EAAE;AAAA,IAEhC,wBAAS,UAAU,MAAM;AACxB,2BAAM,gBAAgB,MAAM;AAC3B,SAAK,aAAa,SAAS;AAAA,EAC5B,CAAC;AAED,2BAAM,mBAAmB,MAAM;AAC9B,SAAK,gBAAgB,SAAS;AAAA,EAC/B,CAAC;AACF,CAAC;AAID,MAAM,SAAS,IAAI,yBAAS,EAAE,QAAQ,IAAI,UAAU,KAAK,CAAC;AAC1D,MAAM,cAAc,IAAI,eAAI,IAAI,EAAE;AAClC,MAAM,oBAAoB,IAAI,eAAI,IAAI,EAAE;AAAA,IAExC,wBAAS,YAAY,MAAM;AAC1B,2BAAM,gBAAgB,MAAM;AAC3B,WAAO,aAAa,WAAW;AAAA,EAChC,CAAC;AAED,2BAAM,mBAAmB,MAAM;AAC9B,WAAO,gBAAgB,WAAW;AAAA,EACnC,CAAC;AAED,2BAAM,0BAA0B,MAAM;AACrC,WAAO,aAAa,aAAa,CAAC;AAAA,EACnC,CAAC;AAED,2BAAM,yBAAyB,MAAM;AACpC,WAAO,aAAa,mBAAmB,GAAG,IAAI;AAAA,EAC/C,CAAC;AACF,CAAC;AAID,MAAM,MAAM,IAAI,mBAAM;AAAA,EACrB,QAAQ,IAAI,eAAI,IAAI,EAAE;AAAA,EACtB,OAAO,IAAI,eAAI,KAAK,EAAE;AAAA,EACtB,KAAK,IAAI,eAAI,IAAI,GAAG;AAAA,EACpB,WAAW;AAAA,EACX,cAAc;AACf,CAAC;AACD,MAAM,WAAW,IAAI,eAAI,IAAI,EAAE;AAAA,IAE/B,wBAAS,SAAS,MAAM;AACvB,2BAAM,gBAAgB,MAAM;AAC3B,QAAI,aAAa,QAAQ;AAAA,EAC1B,CAAC;AACF,CAAC;AAID,MAAM,aAAoB,CAAC;AAC3B,SAAS,IAAI,GAAG,KAAK,IAAI,KAAK;AAC7B,QAAM,IAAI,IAAI;AACd,aAAW,KAAK,IAAI,eAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC;AACtE;AACA,MAAM,WAAW,IAAI,6BAAW,EAAE,QAAQ,WAAW,CAAC;AACtD,MAAM,YAAY,IAAI,eAAI,KAAK,EAAE;AAAA,IAEjC,wBAAS,cAAc,MAAM;AAC5B,2BAAM,gBAAgB,MAAM;AAC3B,aAAS,aAAa,SAAS;AAAA,EAChC,CAAC;AAED,2BAAM,mBAAmB,MAAM;AAC9B,aAAS,gBAAgB,SAAS;AAAA,EACnC,CAAC;AACF,CAAC;AAID,MAAM,OAAO,IAAI,+BAAY,EAAE,OAAO,KAAK,QAAQ,IAAI,UAAU,KAAK,CAAC;AACvE,MAAM,mBAAmB,IAAI,eAAI,KAAK,EAAE;AACxC,MAAM,kBAAkB,IAAI,eAAI,IAAI,EAAE;AAAA,IAEtC,wBAAS,4BAA4B,MAAM;AAC1C,2BAAM,0BAA0B,MAAM;AACrC,SAAK,aAAa,kBAAkB,CAAC;AAAA,EACtC,CAAC;AAED,2BAAM,yBAAyB,MAAM;AACpC,SAAK,aAAa,iBAAiB,GAAG,IAAI;AAAA,EAC3C,CAAC;AAED,2BAAM,6BAA6B,MAAM;AACxC,SAAK,gBAAgB,gBAAgB;AAAA,EACtC,CAAC;AAED,2BAAM,4BAA4B,MAAM;AACvC,SAAK,gBAAgB,iBAAiB,IAAI;AAAA,EAC3C,CAAC;AACF,CAAC;",
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
- })