brepjs 18.151.1 → 18.152.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 (92) hide show
  1. package/README.md +24 -0
  2. package/bin/brepjs.mjs +37 -4
  3. package/dist/2d.cjs +6 -6
  4. package/dist/2d.js +6 -6
  5. package/dist/{adjacencyFns-B1FEq-7P.cjs → adjacencyFns-DmzCVsNA.cjs} +1 -1
  6. package/dist/{adjacencyFns-ChpKOdJX.js → adjacencyFns-oMRMitRE.js} +1 -1
  7. package/dist/{blueprint-SQlROOFK.cjs → blueprint-DT7TQoxE.cjs} +6 -6
  8. package/dist/{blueprint-Be2V1tdb.js → blueprint-Dq3o62cF.js} +6 -6
  9. package/dist/{blueprintFns-DpZo8T6u.js → blueprintFns-B74C4tbO.js} +3 -3
  10. package/dist/{blueprintFns-BcWGUCk3.cjs → blueprintFns-CS4t2ukh.cjs} +3 -3
  11. package/dist/{blueprintSketcher-C9lVrRBr.cjs → blueprintSketcher-AtKzjQzf.cjs} +3 -3
  12. package/dist/{blueprintSketcher-HsSFy10k.js → blueprintSketcher-CEw91ij9.js} +3 -3
  13. package/dist/{boolean2D-Bh07EPIS.cjs → boolean2D-C1TN_Tx_.cjs} +5 -5
  14. package/dist/{boolean2D-CwFJsT_T.js → boolean2D-CTN9BHhX.js} +5 -5
  15. package/dist/brepjs.cjs +116 -60
  16. package/dist/brepjs.js +116 -60
  17. package/dist/{cameraFns-CWS3e1p_.js → cameraFns-By4a7rrk.js} +3 -3
  18. package/dist/{cameraFns-BYBavyGz.cjs → cameraFns-DvwFx7Zy.cjs} +3 -3
  19. package/dist/core/errors.d.ts +1 -0
  20. package/dist/core.cjs +3 -3
  21. package/dist/core.js +3 -3
  22. package/dist/{cornerFinder-D5doC-g3.js → cornerFinder-Bt1Ijr7a.js} +1 -1
  23. package/dist/{cornerFinder-B_6OVtcc.cjs → cornerFinder-wCndsp-s.cjs} +1 -1
  24. package/dist/csg/edit.d.ts +2 -0
  25. package/dist/csg/evaluate.d.ts +6 -0
  26. package/dist/{curveFns-dXPHWXhw.cjs → curveFns-DTbY4aYG.cjs} +1 -1
  27. package/dist/{curveFns-CO0dlocY.js → curveFns-U6vegvin.js} +1 -1
  28. package/dist/{drawFns-C_dvmPvb.cjs → drawFns-BxM81HkL.cjs} +13 -13
  29. package/dist/{drawFns-CVvt5Hmy.js → drawFns-qbcjiKq-.js} +13 -13
  30. package/dist/{errors-MHLiNE-C.js → errors-CTn8i3lY.js} +1 -0
  31. package/dist/{errors-RHkKO5bZ.cjs → errors-DWezb9DI.cjs} +1 -0
  32. package/dist/{faceFns-9lfp_6de.cjs → faceFns-ClDKjey7.cjs} +2 -2
  33. package/dist/{faceFns-C-SjeGpG.js → faceFns-D4z1xEh3.js} +2 -2
  34. package/dist/{healingFns-BtrFRoK5.js → healingFns-CN9ra8Kh.js} +4 -4
  35. package/dist/{healingFns-D4HAilgL.cjs → healingFns-CnRyuMWf.cjs} +4 -4
  36. package/dist/{helpers-BipNXMsi.js → helpers-DiOcrJ0A.js} +6 -6
  37. package/dist/{helpers-uUXFl5Pn.cjs → helpers-HM_a__7P.cjs} +6 -6
  38. package/dist/{importFns-lWFKWnCe.js → importFns-DjS57JAv.js} +2 -2
  39. package/dist/{importFns-CCnECEQt.cjs → importFns-cs7Y4qFg.cjs} +2 -2
  40. package/dist/io.cjs +2 -2
  41. package/dist/io.js +2 -2
  42. package/dist/{loftFns-BNziMKOW.js → loftFns-CvPetZyA.js} +1 -1
  43. package/dist/{loftFns-DUyKz3r7.cjs → loftFns-CzPUAFgL.cjs} +1 -1
  44. package/dist/{measureFns-D9lwC7kw.js → measureFns-DfgTyVBz.js} +3 -3
  45. package/dist/{measureFns-K2jBIt9p.cjs → measureFns-Dr0dCH-w.cjs} +3 -3
  46. package/dist/measurement.cjs +1 -1
  47. package/dist/measurement.js +1 -1
  48. package/dist/{meshFns-D5_15Njg.js → meshFns-FSW58GBR.js} +3 -3
  49. package/dist/{meshFns-D0JF9XF8.cjs → meshFns-cMtop3IN.cjs} +3 -3
  50. package/dist/operations.cjs +2 -2
  51. package/dist/operations.js +2 -2
  52. package/dist/{originTrackingFns-BgWmLwox.cjs → originTrackingFns-CSsyNoUc.cjs} +1 -1
  53. package/dist/{originTrackingFns-BZwAfjbF.js → originTrackingFns-Cd7Rrp9x.js} +1 -1
  54. package/dist/{planeOps-CQahLrCx.js → planeOps-CkpMeheg.js} +1 -1
  55. package/dist/{planeOps-VlFxtvzY.cjs → planeOps-CpupTCRM.cjs} +1 -1
  56. package/dist/{primitiveFns-p0NdUf-t.js → primitiveFns-B0iLpCEN.js} +4 -4
  57. package/dist/{primitiveFns-B_09AGpd.cjs → primitiveFns-BjwF7CHF.cjs} +4 -4
  58. package/dist/projection.cjs +1 -1
  59. package/dist/projection.js +1 -1
  60. package/dist/query.cjs +2 -2
  61. package/dist/query.js +2 -2
  62. package/dist/{refResolveFns-Dnc4_49q.js → refResolveFns-Bkm7htwc.js} +5 -5
  63. package/dist/{refResolveFns-Cin3djM3.cjs → refResolveFns-CTQaQ8Q8.cjs} +5 -5
  64. package/dist/result.cjs +1 -1
  65. package/dist/result.js +1 -1
  66. package/dist/{shapeFns-D65fk--y.cjs → shapeFns-C3AFMiyv.cjs} +2 -2
  67. package/dist/{shapeFns-BZnM8fRy.js → shapeFns-D0hK1y4m.js} +2 -2
  68. package/dist/shapeRef.cjs +1 -1
  69. package/dist/shapeRef.js +1 -1
  70. package/dist/sketching.cjs +3 -3
  71. package/dist/sketching.js +3 -3
  72. package/dist/{solidBuilders-Bm4P-jGM.cjs → solidBuilders-BKSCyfzL.cjs} +6 -6
  73. package/dist/{solidBuilders-CIDWhMT6.js → solidBuilders-BiRBDuvG.js} +6 -6
  74. package/dist/{surfaceBuilders-BC3swenJ.js → surfaceBuilders-C_oBS19q.js} +3 -3
  75. package/dist/{surfaceBuilders-CxbTUaok.cjs → surfaceBuilders-aSFtcDr6.cjs} +3 -3
  76. package/dist/text.cjs +2 -2
  77. package/dist/text.js +2 -2
  78. package/dist/{textBlueprints-75GTk1vk.js → textBlueprints-BM_HzZ_Z.js} +8 -8
  79. package/dist/{textBlueprints-D1OMdDIP.cjs → textBlueprints-rWPsnXS2.cjs} +8 -8
  80. package/dist/{textMetrics-DCBkXf-H.js → textMetrics-BS2MIEXH.js} +2 -2
  81. package/dist/{textMetrics-J2bKijAB.cjs → textMetrics-CQi7r4K0.cjs} +2 -2
  82. package/dist/{threadFns-D55B4LJk.js → threadFns-B86t62TB.js} +7 -7
  83. package/dist/{threadFns-9Xvow5fk.cjs → threadFns-BhTaoFLm.cjs} +7 -7
  84. package/dist/topology.cjs +9 -9
  85. package/dist/topology.js +9 -9
  86. package/dist/{topologyQueryFns-G6xu8ExU.js → topologyQueryFns-Dxwm2jN-.js} +1 -1
  87. package/dist/{topologyQueryFns-nT3Ir1y-.cjs → topologyQueryFns-K7_UgEws.cjs} +1 -1
  88. package/dist/{validityTypes-OvTu-S-y.cjs → validityTypes-Det5YWSW.cjs} +1 -1
  89. package/dist/{validityTypes-seS7aZI9.js → validityTypes-T6dHSAOb.js} +1 -1
  90. package/dist/vectors.cjs +1 -1
  91. package/dist/vectors.js +1 -1
  92. package/package.json +1 -1
package/dist/brepjs.js CHANGED
@@ -1,39 +1,39 @@
1
1
  import { $ as prewarm, A as is2D, B as withArenaCheckpoint, C as isSolid, E as getShapeKind, F as getDisposalStats, G as getActiveKernelId, H as withScopeResult, I as isLive, J as getKernelCapabilities, K as getKernel, M as DisposalScope, N as createHandle, O as as2D, P as createKernelHandle, Q as initFromOC, R as resetDisposalStats, S as isShell, T as isWire, U as withScopeResultAsync, V as withScope, W as _usingCtx, X as init, Y as getKernelTier, Z as initFromManifold, _ as isCompound, a as castShape3D, at as BrepkitAdapter, b as isShape1D, c as createEdge, ct as currentQuality, d as createSolid, et as registerKernel, f as createVertex, h as disposeResultShape, i as castShape, it as withTier, j as is3D, k as as3D, l as createFace, lt as qualityDeflection, n as castResultShape, nt as withKernel, ot as getPerformanceStats, p as createWire, q as getKernel2D, rt as withQuality, s as createCompound, st as resetPerformanceStats, tt as registerKernelTier, u as createShell, v as isEdge, w as isVertex, x as isShape3D, y as isFace } from "./shapeTypes-JD6SSVwZ.js";
2
2
  import { A as EXACT_BREP_CAPABILITIES, k as DEFAULT_CAPABILITIES, t as OcctWasmAdapter } from "./occtWasmAdapter-Cu1SW10s.js";
3
3
  import { i as wasmIndex, n as bug, t as BrepBugError } from "./bug-BdOHwn_e.js";
4
- import { A as tap, C as mapBoth, D as or, E as ok, F as unwrapErr, I as unwrapOr, L as unwrapOrElse, M as tryCatch, N as tryCatchAsync, O as orElse, P as unwrap, R as zip, S as map, T as match, _ as flatMap, a as moduleInitError, b as isErr, c as sketcherStateError, d as validationError, f as OK, g as err, h as collect, i as kernelError, j as tapErr, k as pipeline, l as typeCastError, m as andThen, n as computationError, o as queryError, p as all, r as ioError, t as BrepErrorCode, u as unsupportedError, v as flatten, w as mapErr, x as isOk, y as fromNullable } from "./errors-MHLiNE-C.js";
5
- import { C as vertexPosition, E as kernelCallScoped, T as kernelCallRaw, _ as iterFaces, a as getCachedSurfaceType, b as iterVertices, c as getFaces, d as getSolids, f as getVertices, g as iterEdges, h as iterCompSolids, m as invalidateShapeCache, n as getBounds, o as getCompSolids, p as getWires, s as getEdges, t as describe$1, u as getShells, v as iterShells, w as kernelCall, x as iterWires, y as iterSolids } from "./topologyQueryFns-G6xu8ExU.js";
6
- import { a as isPlanarFace, c as manifoldShell, d as planarWire, f as validSolid, i as isOrientedFace, l as orientedFace, n as isClosedWire, o as isPlanarWire, r as isManifoldShell, s as isValidSolid, t as closedWire, u as planarFace } from "./validityTypes-seS7aZI9.js";
4
+ import { A as tap, C as mapBoth, D as or, E as ok, F as unwrapErr, I as unwrapOr, L as unwrapOrElse, M as tryCatch, N as tryCatchAsync, O as orElse, P as unwrap, R as zip, S as map, T as match, _ as flatMap, a as moduleInitError, b as isErr, c as sketcherStateError, d as validationError, f as OK, g as err, h as collect, i as kernelError, j as tapErr, k as pipeline, l as typeCastError, m as andThen, n as computationError, o as queryError, p as all, r as ioError, t as BrepErrorCode, u as unsupportedError, v as flatten, w as mapErr, x as isOk, y as fromNullable } from "./errors-CTn8i3lY.js";
5
+ import { C as vertexPosition, E as kernelCallScoped, T as kernelCallRaw, _ as iterFaces, a as getCachedSurfaceType, b as iterVertices, c as getFaces, d as getSolids, f as getVertices, g as iterEdges, h as iterCompSolids, m as invalidateShapeCache, n as getBounds, o as getCompSolids, p as getWires, s as getEdges, t as describe$1, u as getShells, v as iterShells, w as kernelCall, x as iterWires, y as iterSolids } from "./topologyQueryFns-Dxwm2jN-.js";
6
+ import { a as isPlanarFace, c as manifoldShell, d as planarWire, f as validSolid, i as isOrientedFace, l as orientedFace, n as isClosedWire, o as isPlanarWire, r as isManifoldShell, s as isValidSolid, t as closedWire, u as planarFace } from "./validityTypes-T6dHSAOb.js";
7
7
  import { n as HASH_CODE_MAX, r as RAD2DEG, t as DEG2RAD } from "./constants-ITRzCnCp.js";
8
8
  import { n as toVec2, r as toVec3, t as resolveDirection } from "./types-D24Y27N0.js";
9
9
  import { a as vecDot, c as vecLength, d as vecNormalize, f as vecProjectToPlane, g as vecSub, h as vecScale, i as vecDistance, l as vecLengthSq, m as vecRotate, n as vecAngle, o as vecEquals, p as vecRepr, r as vecCross, s as vecIsZero, t as vecAdd, u as vecNegate } from "./vecOps-SKPRvPH-.js";
10
- import { i as pivotPlane, n as createPlane, o as resolvePlane, r as makePlane, s as translatePlane, t as createNamedPlane } from "./planeOps-CQahLrCx.js";
11
- import { C as shapeType, S as iterTopo, _ as cast, a as faceOrientation, b as fromBREP, c as innerWires, d as pointOnSurface, f as projectPointOnFace, g as asTopo, h as uvCoordinates, i as faceGeomType, l as normalAt, m as uvBounds, n as faceAxis, o as flipFaceOrientation, p as removeHolesFromFace, r as faceCenter, s as getSurfaceType, t as classifyPointOnFace, u as outerWire, x as isCompSolid, y as downcast } from "./faceFns-C-SjeGpG.js";
12
- import { i as setShapeOrigin, t as getFaceOrigins } from "./originTrackingFns-BZwAfjbF.js";
13
- import { A as parseColor, D as colorShape, E as colorFaces, F as tagFaces, M as getFaceTags, N as getTagMetadata, O as getFaceColor, P as setTagMetadata, S as hasAnyMetadata, T as propagateMetadataThroughRelocation, _ as section$1, b as split$1, d as booleanPipeline, f as cut$2, g as intersect$2, h as fuseAll$2, j as findFacesByTag, k as getShapeColor, m as fuse$2, p as cutAll$2, r as makeCylinder, t as makeCompound, v as sectionToFace$1, y as slice$1 } from "./solidBuilders-CIDWhMT6.js";
14
- import { A as locate$1, C as threePointArc, D as wireLoop, E as wire, F as transformCopy$1, I as translate$2, M as resize, N as rotate$2, O as applyMatrix$1, P as scale$3, S as tangentArc, T as vertex, _ as polygon, a as circle, b as sphere$1, c as cylinder, d as ellipsoid, f as face, g as offsetFace, h as line, i as bsplineApprox, j as mirror$2, k as composeTransforms, l as ellipse, m as helix, n as bezier, o as compound, p as filledFace, r as box, s as cone, t as addHoles, u as ellipseArc, v as sewShells, w as torus$1, x as subFace, y as solid } from "./primitiveFns-p0NdUf-t.js";
15
- import { a as isSameShape, i as isEqualShape, n as getHashCode, o as simplify$1, r as isEmpty$2, s as toBREP$1, t as clone$1 } from "./shapeFns-BZnM8fRy.js";
16
- import { a as curveIsPeriodic, c as curvePointAt, d as flipOrientation, f as getCurveType, h as offsetWire2D, i as curveIsClosed, l as curveStartPoint, m as interpolateCurve, n as curveAxis, o as curveLength, p as getOrientation, r as curveEndPoint, s as curvePeriod, t as approximateCurve, u as curveTangentAt } from "./curveFns-CO0dlocY.js";
17
- import { a as meshEdges$1, c as meshMultiLOD, d as createMeshCache, i as mesh$1, l as buildMeshCacheKey, n as exportSTEP, o as meshLODs, r as exportSTL, s as meshLODsProgressive, t as exportIGES, u as clearMeshCache } from "./meshFns-D5_15Njg.js";
10
+ import { i as pivotPlane, n as createPlane, o as resolvePlane, r as makePlane, s as translatePlane, t as createNamedPlane } from "./planeOps-CkpMeheg.js";
11
+ import { C as shapeType, S as iterTopo, _ as cast, a as faceOrientation, b as fromBREP, c as innerWires, d as pointOnSurface, f as projectPointOnFace, g as asTopo, h as uvCoordinates, i as faceGeomType, l as normalAt, m as uvBounds, n as faceAxis, o as flipFaceOrientation, p as removeHolesFromFace, r as faceCenter, s as getSurfaceType, t as classifyPointOnFace, u as outerWire, x as isCompSolid, y as downcast } from "./faceFns-D4z1xEh3.js";
12
+ import { i as setShapeOrigin, t as getFaceOrigins } from "./originTrackingFns-Cd7Rrp9x.js";
13
+ import { A as parseColor, D as colorShape, E as colorFaces, F as tagFaces, M as getFaceTags, N as getTagMetadata, O as getFaceColor, P as setTagMetadata, S as hasAnyMetadata, T as propagateMetadataThroughRelocation, _ as section$1, b as split$1, d as booleanPipeline, f as cut$2, g as intersect$2, h as fuseAll$2, j as findFacesByTag, k as getShapeColor, m as fuse$2, p as cutAll$2, r as makeCylinder, t as makeCompound, v as sectionToFace$1, y as slice$1 } from "./solidBuilders-BiRBDuvG.js";
14
+ import { A as locate$1, C as threePointArc, D as wireLoop, E as wire, F as transformCopy$1, I as translate$2, M as resize, N as rotate$2, O as applyMatrix$1, P as scale$3, S as tangentArc, T as vertex, _ as polygon, a as circle, b as sphere$1, c as cylinder, d as ellipsoid, f as face, g as offsetFace, h as line, i as bsplineApprox, j as mirror$2, k as composeTransforms, l as ellipse, m as helix, n as bezier, o as compound, p as filledFace, r as box, s as cone, t as addHoles, u as ellipseArc, v as sewShells, w as torus$1, x as subFace, y as solid } from "./primitiveFns-B0iLpCEN.js";
15
+ import { a as isSameShape, i as isEqualShape, n as getHashCode, o as simplify$1, r as isEmpty$2, s as toBREP$1, t as clone$1 } from "./shapeFns-D0hK1y4m.js";
16
+ import { a as curveIsPeriodic, c as curvePointAt, d as flipOrientation, f as getCurveType, h as offsetWire2D, i as curveIsClosed, l as curveStartPoint, m as interpolateCurve, n as curveAxis, o as curveLength, p as getOrientation, r as curveEndPoint, s as curvePeriod, t as approximateCurve, u as curveTangentAt } from "./curveFns-U6vegvin.js";
17
+ import { a as meshEdges$1, c as meshMultiLOD, d as createMeshCache, i as mesh$1, l as buildMeshCacheKey, n as exportSTEP, o as meshLODs, r as exportSTL, s as meshLODsProgressive, t as exportIGES, u as clearMeshCache } from "./meshFns-FSW58GBR.js";
18
18
  import { n as getAtOrThrow, r as lastOrThrow, t as firstOrThrow } from "./arrayAccess-DrUGPADn.js";
19
- import { _ as makeThreePointArc, d as makeCircle, h as makeLine, l as makeBSplineInterpolation, n as fill, p as makeEllipseArc, r as makeFace, s as assembleWire, u as makeBezierCurve } from "./surfaceBuilders-BC3swenJ.js";
20
- import { A as toBufferGeometryData, C as chamfer$2, D as shell$2, E as offset$1, M as toLODGeometryData, N as toLODGeometryLevels, O as thicken$1, P as toLineGeometryData, S as chamferDistAngle, T as fillet$2, _ as checkBoolean, a as healFace, b as getNurbsCurveData, c as isValid$1, d as chamferWithEvolution, f as cutWithEvolution, g as shellWithEvolution, h as intersectWithEvolution, i as heal$1, j as toGroupedBufferGeometryData, k as variableFillet, l as solidFromShell, m as fuseWithEvolution, n as fixSelfIntersection, o as healSolid, p as filletWithEvolution, r as fixShape, s as healWire, t as autoHeal, u as positionOnCurve, v as cutAllBisect, w as draft$1, x as getNurbsSurfaceData, y as fuseAllBisect } from "./healingFns-BtrFRoK5.js";
21
- import { A as setJointValue, B as walkAssembly, C as cylindricalJoint, D as planarJoint, E as mechanismDOF, F as countNodes, G as quatFromAxisAngle, H as circularPattern, I as createAssemblyNode, J as quatRotate, K as quatFromTo, L as findNode, M as sphericalJoint, N as addChild, O as prismaticJoint, P as collectShapes, R as removeChild, S as addJoint, T as jointTransform, U as gridPattern, V as exportAssemblySTEP, W as linearPattern, Y as createAssembly, _ as exportURDF, a as deserializeHistory, b as inverseKinematics, c as modifyStep, d as replayFrom, f as replayHistory, g as undoLast, h as stepsFrom, i as createRegistry, j as setJointValues, k as revoluteJoint, l as registerOperation, m as stepCount, n as addStep, o as findStep, p as serializeHistory, q as quatMultiply, r as createHistory, s as getShape, t as thread, u as registerShape, v as importURDF, w as forwardKinematics, x as jointTrajectory, y as jointsFromDH, z as updateNode } from "./threadFns-D55B4LJk.js";
22
- import { n as BaseSketcher2d, r as organiseBlueprints, t as BlueprintSketcher } from "./blueprintSketcher-HsSFy10k.js";
23
- import { a as createTypedFinder, i as wireFinder, n as edgeFinder, r as faceFinder, t as getSingleFace } from "./helpers-BipNXMsi.js";
24
- import { _ as approximateAsSvgCompatibleCurve, o as ellipseArcFlags } from "./blueprint-Be2V1tdb.js";
25
- import { A as sketchEllipse, D as makeBaseBox, E as deserializeDrawing, F as sketchRectangle, I as sketchRoundedRectangle, L as FaceSketcher, M as sketchHelix, N as sketchParametricFunction, O as polysideInnerRadius, P as sketchPolysides, R as Sketcher, S as drawText, _ as drawPolysides, a as drawingIntersect, b as drawSingleCircle, c as rotateDrawing, d as drawFaceOutline, f as drawProjection, g as drawPointsInterpolation, h as drawParametricFunction, i as drawingFuse, j as sketchFaceOffset, k as sketchCircle, l as scaleDrawing, m as drawEllipse, n as drawingCut, o as drawingToSketchOnPlane, p as drawCircle, r as drawingFillet, s as mirrorDrawing, t as drawingChamfer, u as translateDrawing, v as drawRectangle, w as draw, x as drawSingleEllipse, y as drawRoundedRectangle } from "./drawFns-CVvt5Hmy.js";
26
- import { a as measureDistance, c as measureLinearProps, d as measureVolumeProps, i as measureCurvatureAtMid, l as measureSurfaceProps, n as measureArea, o as measureDistanceProps, r as measureCurvatureAt, s as measureLength, t as createDistanceQuery, u as measureVolume } from "./measureFns-D9lwC7kw.js";
27
- import { t as cornerFinder } from "./cornerFinder-D5doC-g3.js";
28
- import { a as fuseBlueprints, c as roundedRectangleBlueprint, i as cutBlueprints, n as fuse2D, o as intersectBlueprints, r as intersect2D, s as polysidesBlueprint, t as cut2D } from "./boolean2D-CwFJsT_T.js";
29
- import { S as reverseCurve, _ as curve2dIsOnCurve, a as isInside2D, b as curve2dSplitAt, c as scale2D, d as stretch2D, f as toSVGPathD, g as curve2dFirstPoint, h as curve2dDistanceFrom, i as getOrientation2D, l as sketchOnFace2D, m as curve2dBoundingBox, n as createCompoundBlueprint, o as mirror2D, p as translate2D, r as getBounds2D, s as rotate2D, t as createBlueprint, u as sketchOnPlane2D, v as curve2dLastPoint, x as curve2dTangentAt, y as curve2dParameter } from "./blueprintFns-DpZo8T6u.js";
30
- import { a as importSVG, c as blueprintToDXF, d as exportGltf, f as exportOBJ, i as exportSTEPConfigured, l as exportDXF, n as importSTEP, o as importSVGPathD, r as importSTL, s as exportThreeMF, t as importIGES, u as exportGlb } from "./importFns-lWFKWnCe.js";
31
- import { a as multiSectionSweep, c as twistExtrude, i as guidedSweep, n as loftAll, o as supportExtrude, r as complexExtrude, s as sweep$1, t as loft$2 } from "./loftFns-BNziMKOW.js";
32
- import { a as Sketch, b as extrudeAll, c as compoundSketchLoft, d as sketchFace, f as sketchLoft, h as sketchWires, i as Sketches, l as compoundSketchRevolve, m as sketchSweep, n as getFont, o as compoundSketchExtrude, p as sketchRevolve, r as loadFont, s as compoundSketchFace, t as textBlueprints, u as sketchExtrude, v as CompoundSketch, x as revolve$2, y as extrude$2 } from "./textBlueprints-75GTk1vk.js";
33
- import { _ as createRef, a as isVertexRef, b as defaultScorer, c as resolveRefParams, d as createVertexRef, f as resolveVertexRef, g as captureHint, h as assignRoles, i as isLineageRef, l as createDerivedFaceRef, m as resolveEdgeRef, n as isEdgeRef, o as resolveLineageRef, p as createEdgeRef, r as isFaceRef, s as resolveRefIn, t as isDerivedFaceRef, u as resolveDerivedFaceRef, v as resolveRef, y as updateRoles } from "./refResolveFns-Dnc4_49q.js";
34
- import { a as facesOfVertex, c as verticesOfFace, i as facesOfEdge, l as wiresOfFace, n as adjacentFaces, o as sharedEdges, r as edgesOfFace, s as verticesOfEdge } from "./adjacencyFns-ChpKOdJX.js";
35
- import { a as makeProjectedEdges, i as projectEdges, n as cameraLookAt, r as createCamera, s as isProjectionPlane, t as cameraFromPlane } from "./cameraFns-CWS3e1p_.js";
36
- import { n as textMetrics, r as sketchText, t as fontMetrics } from "./textMetrics-DCBkXf-H.js";
19
+ import { _ as makeThreePointArc, d as makeCircle, h as makeLine, l as makeBSplineInterpolation, n as fill, p as makeEllipseArc, r as makeFace, s as assembleWire, u as makeBezierCurve } from "./surfaceBuilders-C_oBS19q.js";
20
+ import { A as toBufferGeometryData, C as chamfer$2, D as shell$2, E as offset$1, M as toLODGeometryData, N as toLODGeometryLevels, O as thicken$1, P as toLineGeometryData, S as chamferDistAngle, T as fillet$2, _ as checkBoolean, a as healFace, b as getNurbsCurveData, c as isValid$1, d as chamferWithEvolution, f as cutWithEvolution, g as shellWithEvolution, h as intersectWithEvolution, i as heal$1, j as toGroupedBufferGeometryData, k as variableFillet, l as solidFromShell, m as fuseWithEvolution, n as fixSelfIntersection, o as healSolid, p as filletWithEvolution, r as fixShape, s as healWire, t as autoHeal, u as positionOnCurve, v as cutAllBisect, w as draft$1, x as getNurbsSurfaceData, y as fuseAllBisect } from "./healingFns-CN9ra8Kh.js";
21
+ import { A as setJointValue, B as walkAssembly, C as cylindricalJoint, D as planarJoint, E as mechanismDOF, F as countNodes, G as quatFromAxisAngle, H as circularPattern, I as createAssemblyNode, J as quatRotate, K as quatFromTo, L as findNode, M as sphericalJoint, N as addChild, O as prismaticJoint, P as collectShapes, R as removeChild, S as addJoint, T as jointTransform, U as gridPattern, V as exportAssemblySTEP, W as linearPattern, Y as createAssembly, _ as exportURDF, a as deserializeHistory, b as inverseKinematics, c as modifyStep, d as replayFrom, f as replayHistory, g as undoLast, h as stepsFrom, i as createRegistry, j as setJointValues, k as revoluteJoint, l as registerOperation, m as stepCount, n as addStep, o as findStep, p as serializeHistory, q as quatMultiply, r as createHistory, s as getShape, t as thread, u as registerShape, v as importURDF, w as forwardKinematics, x as jointTrajectory, y as jointsFromDH, z as updateNode } from "./threadFns-B86t62TB.js";
22
+ import { n as BaseSketcher2d, r as organiseBlueprints, t as BlueprintSketcher } from "./blueprintSketcher-CEw91ij9.js";
23
+ import { a as createTypedFinder, i as wireFinder, n as edgeFinder, r as faceFinder, t as getSingleFace } from "./helpers-DiOcrJ0A.js";
24
+ import { _ as approximateAsSvgCompatibleCurve, o as ellipseArcFlags } from "./blueprint-Dq3o62cF.js";
25
+ import { A as sketchEllipse, D as makeBaseBox, E as deserializeDrawing, F as sketchRectangle, I as sketchRoundedRectangle, L as FaceSketcher, M as sketchHelix, N as sketchParametricFunction, O as polysideInnerRadius, P as sketchPolysides, R as Sketcher, S as drawText, _ as drawPolysides, a as drawingIntersect, b as drawSingleCircle, c as rotateDrawing, d as drawFaceOutline, f as drawProjection, g as drawPointsInterpolation, h as drawParametricFunction, i as drawingFuse, j as sketchFaceOffset, k as sketchCircle, l as scaleDrawing, m as drawEllipse, n as drawingCut, o as drawingToSketchOnPlane, p as drawCircle, r as drawingFillet, s as mirrorDrawing, t as drawingChamfer, u as translateDrawing, v as drawRectangle, w as draw, x as drawSingleEllipse, y as drawRoundedRectangle } from "./drawFns-qbcjiKq-.js";
26
+ import { a as measureDistance, c as measureLinearProps, d as measureVolumeProps, i as measureCurvatureAtMid, l as measureSurfaceProps, n as measureArea, o as measureDistanceProps, r as measureCurvatureAt, s as measureLength, t as createDistanceQuery, u as measureVolume } from "./measureFns-DfgTyVBz.js";
27
+ import { t as cornerFinder } from "./cornerFinder-Bt1Ijr7a.js";
28
+ import { a as fuseBlueprints, c as roundedRectangleBlueprint, i as cutBlueprints, n as fuse2D, o as intersectBlueprints, r as intersect2D, s as polysidesBlueprint, t as cut2D } from "./boolean2D-CTN9BHhX.js";
29
+ import { S as reverseCurve, _ as curve2dIsOnCurve, a as isInside2D, b as curve2dSplitAt, c as scale2D, d as stretch2D, f as toSVGPathD, g as curve2dFirstPoint, h as curve2dDistanceFrom, i as getOrientation2D, l as sketchOnFace2D, m as curve2dBoundingBox, n as createCompoundBlueprint, o as mirror2D, p as translate2D, r as getBounds2D, s as rotate2D, t as createBlueprint, u as sketchOnPlane2D, v as curve2dLastPoint, x as curve2dTangentAt, y as curve2dParameter } from "./blueprintFns-B74C4tbO.js";
30
+ import { a as importSVG, c as blueprintToDXF, d as exportGltf, f as exportOBJ, i as exportSTEPConfigured, l as exportDXF, n as importSTEP, o as importSVGPathD, r as importSTL, s as exportThreeMF, t as importIGES, u as exportGlb } from "./importFns-DjS57JAv.js";
31
+ import { a as multiSectionSweep, c as twistExtrude, i as guidedSweep, n as loftAll, o as supportExtrude, r as complexExtrude, s as sweep$1, t as loft$2 } from "./loftFns-CvPetZyA.js";
32
+ import { a as Sketch, b as extrudeAll, c as compoundSketchLoft, d as sketchFace, f as sketchLoft, h as sketchWires, i as Sketches, l as compoundSketchRevolve, m as sketchSweep, n as getFont, o as compoundSketchExtrude, p as sketchRevolve, r as loadFont, s as compoundSketchFace, t as textBlueprints, u as sketchExtrude, v as CompoundSketch, x as revolve$2, y as extrude$2 } from "./textBlueprints-BM_HzZ_Z.js";
33
+ import { _ as createRef, a as isVertexRef, b as defaultScorer, c as resolveRefParams, d as createVertexRef, f as resolveVertexRef, g as captureHint, h as assignRoles, i as isLineageRef, l as createDerivedFaceRef, m as resolveEdgeRef, n as isEdgeRef, o as resolveLineageRef, p as createEdgeRef, r as isFaceRef, s as resolveRefIn, t as isDerivedFaceRef, u as resolveDerivedFaceRef, v as resolveRef, y as updateRoles } from "./refResolveFns-Bkm7htwc.js";
34
+ import { a as facesOfVertex, c as verticesOfFace, i as facesOfEdge, l as wiresOfFace, n as adjacentFaces, o as sharedEdges, r as edgesOfFace, s as verticesOfEdge } from "./adjacencyFns-oMRMitRE.js";
35
+ import { a as makeProjectedEdges, i as projectEdges, n as cameraLookAt, r as createCamera, s as isProjectionPlane, t as cameraFromPlane } from "./cameraFns-By4a7rrk.js";
36
+ import { n as textMetrics, r as sketchText, t as fontMetrics } from "./textMetrics-BS2MIEXH.js";
37
37
  import { _ as isSuccessResponse, a as createWorkerClient, c as enqueueTask, d as rejectAll, f as isBatchRequest, g as isOperationRequest, h as isInitRequest, i as registerHandler, l as isEmpty$1, m as isErrorResponse, n as createOperationRegistry, o as createTaskQueue, p as isDisposeRequest, r as createWorkerHandler, s as dequeueTask, t as createWorkerPool, u as pendingCount } from "./workerPool-XcYX2UZ0.js";
38
38
  //#region \0rolldown/runtime.js
39
39
  var __defProp = Object.defineProperty;
@@ -3365,6 +3365,20 @@ function relocateFaceGroups(faceGroups, innerHashes, placedHashes) {
3365
3365
  faceId: remap.get(g.faceId) ?? g.faceId
3366
3366
  }));
3367
3367
  }
3368
+ var SCALE_INVARIANT_DIAGONAL = 10;
3369
+ function scaleDefaultTolerance(base, shape) {
3370
+ let diagonal;
3371
+ try {
3372
+ const b = getBounds(shape);
3373
+ const dx = b.xMax - b.xMin;
3374
+ const dy = b.yMax - b.yMin;
3375
+ const dz = b.zMax - b.zMin;
3376
+ diagonal = Math.sqrt(dx * dx + dy * dy + dz * dz);
3377
+ } catch {
3378
+ return base;
3379
+ }
3380
+ return base * Math.max(1, diagonal / SCALE_INVARIANT_DIAGONAL);
3381
+ }
3368
3382
  var Evaluator = class {
3369
3383
  cache = /* @__PURE__ */ new Map();
3370
3384
  refCounts = /* @__PURE__ */ new Map();
@@ -3429,9 +3443,9 @@ var Evaluator = class {
3429
3443
  meshOpts.signal?.throwIfAborted();
3430
3444
  const useCache = meshOpts.cache ?? true;
3431
3445
  const quality = qualityDeflection();
3432
- const tolerance = meshOpts.tolerance ?? quality.tolerance;
3446
+ const explicitTolerance = meshOpts.tolerance;
3433
3447
  const angularTolerance = meshOpts.angularTolerance ?? quality.angularTolerance;
3434
- const meshKey = `${cacheKey(node, env, this.kernelId, this.defaultTolerance)}|${buildMeshCacheKey(tolerance, angularTolerance, meshOpts.skipNormals ?? false, meshOpts.includeUVs ?? false)}`;
3448
+ const meshKey = `${cacheKey(node, env, this.kernelId, this.defaultTolerance)}|${explicitTolerance === void 0 ? "rel|" : ""}${buildMeshCacheKey(explicitTolerance ?? quality.tolerance, angularTolerance, meshOpts.skipNormals ?? false, meshOpts.includeUVs ?? false)}`;
3435
3449
  if (useCache) {
3436
3450
  const cached = this.meshCache.get(meshKey);
3437
3451
  if (cached !== void 0) {
@@ -3465,15 +3479,38 @@ var Evaluator = class {
3465
3479
  }
3466
3480
  }
3467
3481
  }
3482
+ const tolerance = explicitTolerance ?? this.defaultToleranceFor(node, env, quality.tolerance);
3468
3483
  const shape = this.evaluate(node, env);
3469
3484
  if (!shape.ok) return shape;
3470
- const built = withKernel(this.kernelId, () => mesh$1(shape.value, meshOpts));
3485
+ const resolvedOpts = {
3486
+ ...meshOpts,
3487
+ tolerance,
3488
+ angularTolerance
3489
+ };
3490
+ let built;
3491
+ try {
3492
+ built = withKernel(this.kernelId, () => mesh$1(shape.value, resolvedOpts));
3493
+ } catch (e) {
3494
+ if (meshOpts.signal?.aborted) throw e;
3495
+ return err(kernelError(BrepErrorCode.MESH_FAILED, `evaluateMesh: ${e instanceof Error ? e.message : String(e)}`, e));
3496
+ }
3471
3497
  if (useCache) {
3472
3498
  this.meshCache.set(meshKey, built);
3473
3499
  if (this.maxMeshCacheEntries !== void 0) this.trimMeshCache(this.maxMeshCacheEntries);
3474
3500
  }
3475
3501
  return ok(built);
3476
3502
  }
3503
+ /** Scale-relative default deflection, derived from the placement-stripped
3504
+ * geometry so the resolved density is identical whether or not the
3505
+ * rigid-reuse path served the call: a rotated placement's axis-aligned
3506
+ * bounds inflate the diagonal by up to sqrt(3). The bounds are read while
3507
+ * the just-evaluated shape is live; only the number outlives it. */
3508
+ defaultToleranceFor(node, env, base) {
3509
+ const { inner } = peelRigid(node, env);
3510
+ const source = this.evaluate(inner, env);
3511
+ if (!source.ok) return base;
3512
+ return scaleDefaultTolerance(base, source.value);
3513
+ }
3477
3514
  evaluateInner(node, env) {
3478
3515
  const key = cacheKey(node, env, this.kernelId, this.defaultTolerance);
3479
3516
  const cached = this.cache.get(key);
@@ -4501,7 +4538,15 @@ function foldBuildVec(dim, comps) {
4501
4538
  nums[2]
4502
4539
  ]);
4503
4540
  }
4541
+ var optimized = /* @__PURE__ */ new WeakMap();
4504
4542
  function optimizeNode(n) {
4543
+ const cached = optimized.get(n);
4544
+ if (cached !== void 0) return cached;
4545
+ const out = rewriteNode(n);
4546
+ optimized.set(n, out);
4547
+ return out;
4548
+ }
4549
+ function rewriteNode(n) {
4505
4550
  switch (n.kind) {
4506
4551
  case "Box": return box$2(foldExpr(n.x), foldExpr(n.y), foldExpr(n.z));
4507
4552
  case "Sphere": return sphere$2(foldExpr(n.radius));
@@ -4619,13 +4664,16 @@ function optimizeTranslate(target, vector) {
4619
4664
  //#endregion
4620
4665
  //#region src/csg/edit.ts
4621
4666
  function replaceNode(root, pred, replacement) {
4622
- return walk(root, pred, replacement);
4667
+ return walk(root, pred, replacement, /* @__PURE__ */ new Map());
4623
4668
  }
4624
- function walk(node, pred, repl) {
4625
- if (pred(node)) return repl;
4626
- return rebuildChildren(node, pred, repl);
4669
+ function walk(node, pred, repl, memo) {
4670
+ const cached = memo.get(node);
4671
+ if (cached !== void 0) return cached;
4672
+ const out = pred(node) ? repl : rebuildChildren(node, pred, repl, memo);
4673
+ memo.set(node, out);
4674
+ return out;
4627
4675
  }
4628
- function rebuildChildren(n, pred, repl) {
4676
+ function rebuildChildren(n, pred, repl, memo) {
4629
4677
  switch (n.kind) {
4630
4678
  case "Box":
4631
4679
  case "Sphere":
@@ -4639,23 +4687,23 @@ function rebuildChildren(n, pred, repl) {
4639
4687
  case "Empty":
4640
4688
  case "Path":
4641
4689
  case "Profile": return n;
4642
- case "Fuse": return fuse$1(walk(n.a, pred, repl), walk(n.b, pred, repl), n.tolerance);
4643
- case "Cut": return cut$1(walk(n.a, pred, repl), walk(n.b, pred, repl), n.tolerance);
4644
- case "Intersect": return intersect$1(walk(n.a, pred, repl), walk(n.b, pred, repl), n.tolerance);
4645
- case "FuseAll": return fuseAll$1(n.shapes.map((c) => walk(c, pred, repl)), n.tolerance);
4646
- case "CutAll": return cutAll$1(walk(n.base, pred, repl), n.tools.map((c) => walk(c, pred, repl)), n.tolerance);
4647
- case "Translate": return translate$1(walk(n.target, pred, repl), n.vector);
4648
- case "Rotate": return rotate$1(walk(n.target, pred, repl), n.angle, {
4690
+ case "Fuse": return fuse$1(walk(n.a, pred, repl, memo), walk(n.b, pred, repl, memo), n.tolerance);
4691
+ case "Cut": return cut$1(walk(n.a, pred, repl, memo), walk(n.b, pred, repl, memo), n.tolerance);
4692
+ case "Intersect": return intersect$1(walk(n.a, pred, repl, memo), walk(n.b, pred, repl, memo), n.tolerance);
4693
+ case "FuseAll": return fuseAll$1(n.shapes.map((c) => walk(c, pred, repl, memo)), n.tolerance);
4694
+ case "CutAll": return cutAll$1(walk(n.base, pred, repl, memo), n.tools.map((c) => walk(c, pred, repl, memo)), n.tolerance);
4695
+ case "Translate": return translate$1(walk(n.target, pred, repl, memo), n.vector);
4696
+ case "Rotate": return rotate$1(walk(n.target, pred, repl, memo), n.angle, {
4649
4697
  axis: n.axis,
4650
4698
  at: n.at
4651
4699
  });
4652
- case "Scale": return scale$2(walk(n.target, pred, repl), n.factor, { center: n.center });
4653
- case "Mirror": return mirror$1(walk(n.target, pred, repl), {
4700
+ case "Scale": return scale$2(walk(n.target, pred, repl, memo), n.factor, { center: n.center });
4701
+ case "Mirror": return mirror$1(walk(n.target, pred, repl, memo), {
4654
4702
  normal: n.normal,
4655
4703
  at: n.at
4656
4704
  });
4657
- case "Compound": return compound$1(n.children.map((c) => walk(c, pred, repl)));
4658
- case "Instance": return instance$1(walk(n.source, pred, repl), n.placements, n.fuse);
4705
+ case "Compound": return compound$1(n.children.map((c) => walk(c, pred, repl, memo)));
4706
+ case "Instance": return instance$1(walk(n.source, pred, repl, memo), n.placements, n.fuse);
4659
4707
  case "Extrude":
4660
4708
  case "Revolve":
4661
4709
  case "Loft":
@@ -4663,27 +4711,35 @@ function rebuildChildren(n, pred, repl) {
4663
4711
  case "Color":
4664
4712
  case "Fillet":
4665
4713
  case "Chamfer":
4666
- case "Shell": return rebuildFeature(n, pred, repl);
4714
+ case "Shell": return rebuildFeature(n, pred, repl, memo);
4667
4715
  }
4668
4716
  }
4669
- function rebuildFeature(n, pred, repl) {
4717
+ function rebuildFeature(n, pred, repl, memo) {
4670
4718
  switch (n.kind) {
4671
- case "Extrude": return extrude$1(walk(n.profile, pred, repl), n.vector);
4672
- case "Revolve": return revolve$1(walk(n.profile, pred, repl), n.angle, {
4719
+ case "Extrude": return extrude$1(walk(n.profile, pred, repl, memo), n.vector);
4720
+ case "Revolve": return revolve$1(walk(n.profile, pred, repl, memo), n.angle, {
4673
4721
  axis: n.axis,
4674
4722
  at: n.at
4675
4723
  });
4676
- case "Loft": return loft$1(n.sections.map((s) => walk(s, pred, repl)), { ruled: n.ruled });
4677
- case "Sweep": return sweep$2(walk(n.profile, pred, repl), walk(n.spine, pred, repl), { frenet: n.frenet });
4678
- case "Color": return color(walk(n.target, pred, repl), [...n.color]);
4679
- case "Fillet": return fillet$1(walk(n.target, pred, repl), n.ref, n.radius);
4680
- case "Chamfer": return chamfer$1(walk(n.target, pred, repl), n.ref, n.distance);
4681
- case "Shell": return shell$1(walk(n.target, pred, repl), n.refs, n.thickness);
4724
+ case "Loft": return loft$1(n.sections.map((s) => walk(s, pred, repl, memo)), { ruled: n.ruled });
4725
+ case "Sweep": return sweep$2(walk(n.profile, pred, repl, memo), walk(n.spine, pred, repl, memo), { frenet: n.frenet });
4726
+ case "Color": return color(walk(n.target, pred, repl, memo), [...n.color]);
4727
+ case "Fillet": return fillet$1(walk(n.target, pred, repl, memo), n.ref, n.radius);
4728
+ case "Chamfer": return chamfer$1(walk(n.target, pred, repl, memo), n.ref, n.distance);
4729
+ case "Shell": return shell$1(walk(n.target, pred, repl, memo), n.refs, n.thickness);
4682
4730
  }
4683
4731
  }
4732
+ /** Visits each DISTINCT node once (identity-deduplicated), so a shared
4733
+ * subtree is reported once and a self-referencing DAG walks in linear time. */
4684
4734
  function forEachNode(root, fn) {
4685
- fn(root);
4686
- for (const child of childrenOf(root)) forEachNode(child, fn);
4735
+ const seen = /* @__PURE__ */ new Set();
4736
+ const visit = (node) => {
4737
+ if (seen.has(node)) return;
4738
+ seen.add(node);
4739
+ fn(node);
4740
+ for (const child of childrenOf(node)) visit(child);
4741
+ };
4742
+ visit(root);
4687
4743
  }
4688
4744
  function childrenOf(n) {
4689
4745
  switch (n.kind) {
@@ -1,8 +1,8 @@
1
1
  import { K as getKernel, W as _usingCtx, n as castResultShape } from "./shapeTypes-JD6SSVwZ.js";
2
- import { E as ok, P as unwrap, d as validationError, g as err } from "./errors-MHLiNE-C.js";
3
- import { s as getEdges } from "./topologyQueryFns-G6xu8ExU.js";
2
+ import { E as ok, P as unwrap, d as validationError, g as err } from "./errors-CTn8i3lY.js";
3
+ import { s as getEdges } from "./topologyQueryFns-Dxwm2jN-.js";
4
4
  import { c as vecLength, d as vecNormalize, g as vecSub, r as vecCross } from "./vecOps-SKPRvPH-.js";
5
- import { t as clone } from "./shapeFns-BZnM8fRy.js";
5
+ import { t as clone } from "./shapeFns-D0hK1y4m.js";
6
6
  //#region src/projection/projectionPlanes.ts
7
7
  /** Lookup table mapping each {@link ProjectionPlane} to its camera configuration. */
8
8
  var PROJECTION_PLANES = {
@@ -1,8 +1,8 @@
1
1
  const require_shapeTypes = require("./shapeTypes-Dq5ylbmP.cjs");
2
- const require_errors = require("./errors-RHkKO5bZ.cjs");
3
- const require_topologyQueryFns = require("./topologyQueryFns-nT3Ir1y-.cjs");
2
+ const require_errors = require("./errors-DWezb9DI.cjs");
3
+ const require_topologyQueryFns = require("./topologyQueryFns-K7_UgEws.cjs");
4
4
  const require_vecOps = require("./vecOps-CCnJt-yH.cjs");
5
- const require_shapeFns = require("./shapeFns-D65fk--y.cjs");
5
+ const require_shapeFns = require("./shapeFns-C3AFMiyv.cjs");
6
6
  //#region src/projection/projectionPlanes.ts
7
7
  /** Lookup table mapping each {@link ProjectionPlane} to its camera configuration. */
8
8
  var PROJECTION_PLANES = {
@@ -21,6 +21,7 @@ export declare const BrepErrorCode: {
21
21
  readonly FIX_SHAPE_FAILED: "FIX_SHAPE_FAILED";
22
22
  readonly SOLID_FROM_SHELL_FAILED: "SOLID_FROM_SHELL_FAILED";
23
23
  readonly FIX_SELF_INTERSECTION_FAILED: "FIX_SELF_INTERSECTION_FAILED";
24
+ readonly MESH_FAILED: "MESH_FAILED";
24
25
  readonly ELLIPSE_RADII: "ELLIPSE_RADII";
25
26
  readonly FUSE_ALL_EMPTY: "FUSE_ALL_EMPTY";
26
27
  readonly FILLET_NO_EDGES: "FILLET_NO_EDGES";
package/dist/core.cjs CHANGED
@@ -1,12 +1,12 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_shapeTypes = require("./shapeTypes-Dq5ylbmP.cjs");
3
3
  const require_bug = require("./bug-O02CsAmt.cjs");
4
- const require_errors = require("./errors-RHkKO5bZ.cjs");
5
- const require_validityTypes = require("./validityTypes-OvTu-S-y.cjs");
4
+ const require_errors = require("./errors-DWezb9DI.cjs");
5
+ const require_validityTypes = require("./validityTypes-Det5YWSW.cjs");
6
6
  const require_constants = require("./constants-BOVyEYGH.cjs");
7
7
  const require_types = require("./types-KjA8tY4Y.cjs");
8
8
  const require_vecOps = require("./vecOps-CCnJt-yH.cjs");
9
- const require_planeOps = require("./planeOps-VlFxtvzY.cjs");
9
+ const require_planeOps = require("./planeOps-CpupTCRM.cjs");
10
10
  exports.BrepBugError = require_bug.BrepBugError;
11
11
  exports.DEG2RAD = require_constants.DEG2RAD;
12
12
  exports.DisposalScope = require_shapeTypes.DisposalScope;
package/dist/core.js CHANGED
@@ -1,9 +1,9 @@
1
1
  import { A as is2D, C as isSolid, E as getShapeKind, H as withScopeResult, I as isLive, M as DisposalScope, N as createHandle, P as createKernelHandle, S as isShell, T as isWire, U as withScopeResultAsync, V as withScope, _ as isCompound, b as isShape1D, i as castShape, j as is3D, v as isEdge, w as isVertex, x as isShape3D, y as isFace } from "./shapeTypes-JD6SSVwZ.js";
2
2
  import { n as bug, t as BrepBugError } from "./bug-BdOHwn_e.js";
3
- import { E as ok, F as unwrapErr, I as unwrapOr, L as unwrapOrElse, M as tryCatch, N as tryCatchAsync, P as unwrap, S as map, T as match, _ as flatMap, a as moduleInitError, b as isErr, c as sketcherStateError, d as validationError, f as OK, g as err, h as collect, i as kernelError, l as typeCastError, m as andThen, n as computationError, o as queryError, r as ioError, u as unsupportedError, w as mapErr, x as isOk } from "./errors-MHLiNE-C.js";
4
- import { c as manifoldShell, f as validSolid, i as isOrientedFace, l as orientedFace, n as isClosedWire, r as isManifoldShell, s as isValidSolid, t as closedWire } from "./validityTypes-seS7aZI9.js";
3
+ import { E as ok, F as unwrapErr, I as unwrapOr, L as unwrapOrElse, M as tryCatch, N as tryCatchAsync, P as unwrap, S as map, T as match, _ as flatMap, a as moduleInitError, b as isErr, c as sketcherStateError, d as validationError, f as OK, g as err, h as collect, i as kernelError, l as typeCastError, m as andThen, n as computationError, o as queryError, r as ioError, u as unsupportedError, w as mapErr, x as isOk } from "./errors-CTn8i3lY.js";
4
+ import { c as manifoldShell, f as validSolid, i as isOrientedFace, l as orientedFace, n as isClosedWire, r as isManifoldShell, s as isValidSolid, t as closedWire } from "./validityTypes-T6dHSAOb.js";
5
5
  import { n as HASH_CODE_MAX, r as RAD2DEG, t as DEG2RAD } from "./constants-ITRzCnCp.js";
6
6
  import { n as toVec2, r as toVec3, t as resolveDirection } from "./types-D24Y27N0.js";
7
7
  import { a as vecDot, c as vecLength, d as vecNormalize, f as vecProjectToPlane, g as vecSub, h as vecScale, i as vecDistance, l as vecLengthSq, m as vecRotate, n as vecAngle, o as vecEquals, p as vecRepr, r as vecCross, s as vecIsZero, t as vecAdd, u as vecNegate } from "./vecOps-SKPRvPH-.js";
8
- import { i as pivotPlane, n as createPlane, o as resolvePlane, s as translatePlane, t as createNamedPlane } from "./planeOps-CQahLrCx.js";
8
+ import { i as pivotPlane, n as createPlane, o as resolvePlane, s as translatePlane, t as createNamedPlane } from "./planeOps-CkpMeheg.js";
9
9
  export { BrepBugError, DEG2RAD, DisposalScope, HASH_CODE_MAX, OK, RAD2DEG, andThen, bug, castShape, closedWire, collect, computationError, createHandle, createKernelHandle, createNamedPlane, createPlane, err, flatMap, getShapeKind, ioError, is2D, is3D, isClosedWire, isCompound, isEdge, isErr, isFace, isLive, isManifoldShell, isOk, isOrientedFace, isShape1D, isShape3D, isShell, isSolid, isValidSolid, isVertex, isWire, kernelError, manifoldShell, map, mapErr, match, moduleInitError, ok, orientedFace, pivotPlane, queryError, resolveDirection, resolvePlane, sketcherStateError, toVec2, toVec3, translatePlane, tryCatch, tryCatchAsync, typeCastError, unsupportedError, unwrap, unwrapErr, unwrapOr, unwrapOrElse, validSolid, validationError, vecAdd, vecAngle, vecCross, vecDistance, vecDot, vecEquals, vecIsZero, vecLength, vecLengthSq, vecNegate, vecNormalize, vecProjectToPlane, vecRepr, vecRotate, vecScale, vecSub, withScope, withScopeResult, withScopeResultAsync };
@@ -1,6 +1,6 @@
1
1
  import { t as DEG2RAD } from "./constants-ITRzCnCp.js";
2
2
  import { n as getAtOrThrow } from "./arrayAccess-DrUGPADn.js";
3
- import { p as distance2d, u as angle2d, v as samePoint } from "./helpers-BipNXMsi.js";
3
+ import { p as distance2d, u as angle2d, v as samePoint } from "./helpers-DiOcrJ0A.js";
4
4
  //#region src/query/cornerFinder.ts
5
5
  var PI_2 = 2 * Math.PI;
6
6
  function positiveHalfAngle(angle) {
@@ -1,6 +1,6 @@
1
1
  const require_constants = require("./constants-BOVyEYGH.cjs");
2
2
  const require_arrayAccess = require("./arrayAccess-e4H9cBfh.cjs");
3
- const require_helpers = require("./helpers-uUXFl5Pn.cjs");
3
+ const require_helpers = require("./helpers-HM_a__7P.cjs");
4
4
  //#region src/query/cornerFinder.ts
5
5
  var PI_2 = 2 * Math.PI;
6
6
  function positiveHalfAngle(angle) {
@@ -1,5 +1,7 @@
1
1
  import { IRNode } from './types.js';
2
2
  export type NodePredicate = (node: IRNode) => boolean;
3
3
  export declare function replaceNode(root: IRNode, pred: NodePredicate, replacement: IRNode): IRNode;
4
+ /** Visits each DISTINCT node once (identity-deduplicated), so a shared
5
+ * subtree is reported once and a self-referencing DAG walks in linear time. */
4
6
  export declare function forEachNode(root: IRNode, fn: (node: IRNode) => void): void;
5
7
  export declare function nodeCount(root: IRNode): number;
@@ -82,6 +82,12 @@ export declare class Evaluator implements Disposable {
82
82
  includeUVs?: boolean;
83
83
  cache?: boolean;
84
84
  }): Result<ShapeMesh>;
85
+ /** Scale-relative default deflection, derived from the placement-stripped
86
+ * geometry so the resolved density is identical whether or not the
87
+ * rigid-reuse path served the call: a rotated placement's axis-aligned
88
+ * bounds inflate the diagonal by up to sqrt(3). The bounds are read while
89
+ * the just-evaluated shape is live; only the number outlives it. */
90
+ private defaultToleranceFor;
85
91
  private evaluateInner;
86
92
  private releaseShape;
87
93
  private trimCache;
@@ -1,5 +1,5 @@
1
1
  const require_shapeTypes = require("./shapeTypes-Dq5ylbmP.cjs");
2
- const require_errors = require("./errors-RHkKO5bZ.cjs");
2
+ const require_errors = require("./errors-DWezb9DI.cjs");
3
3
  //#region src/topology/curveFns.ts
4
4
  /**
5
5
  * Curve and 1D shape functions — functional replacements for _1DShape/Curve methods.
@@ -1,5 +1,5 @@
1
1
  import { K as getKernel, T as isWire, h as disposeResultShape, n as castResultShape, v as isEdge } from "./shapeTypes-JD6SSVwZ.js";
2
- import { E as ok, g as err, l as typeCastError } from "./errors-MHLiNE-C.js";
2
+ import { E as ok, g as err, l as typeCastError } from "./errors-CTn8i3lY.js";
3
3
  //#region src/topology/curveFns.ts
4
4
  /**
5
5
  * Curve and 1D shape functions — functional replacements for _1DShape/Curve methods.
@@ -1,22 +1,22 @@
1
1
  const require_shapeTypes = require("./shapeTypes-Dq5ylbmP.cjs");
2
2
  const require_bug = require("./bug-O02CsAmt.cjs");
3
- const require_errors = require("./errors-RHkKO5bZ.cjs");
4
- const require_topologyQueryFns = require("./topologyQueryFns-nT3Ir1y-.cjs");
3
+ const require_errors = require("./errors-DWezb9DI.cjs");
4
+ const require_topologyQueryFns = require("./topologyQueryFns-K7_UgEws.cjs");
5
5
  const require_constants = require("./constants-BOVyEYGH.cjs");
6
6
  const require_types = require("./types-KjA8tY4Y.cjs");
7
7
  const require_vecOps = require("./vecOps-CCnJt-yH.cjs");
8
- const require_planeOps = require("./planeOps-VlFxtvzY.cjs");
9
- const require_faceFns = require("./faceFns-9lfp_6de.cjs");
10
- const require_curveFns = require("./curveFns-dXPHWXhw.cjs");
8
+ const require_planeOps = require("./planeOps-CpupTCRM.cjs");
9
+ const require_faceFns = require("./faceFns-ClDKjey7.cjs");
10
+ const require_curveFns = require("./curveFns-DTbY4aYG.cjs");
11
11
  const require_arrayAccess = require("./arrayAccess-e4H9cBfh.cjs");
12
- const require_surfaceBuilders = require("./surfaceBuilders-CxbTUaok.cjs");
13
- const require_blueprintSketcher = require("./blueprintSketcher-C9lVrRBr.cjs");
14
- const require_helpers = require("./helpers-uUXFl5Pn.cjs");
15
- const require_blueprint = require("./blueprint-SQlROOFK.cjs");
16
- const require_cornerFinder = require("./cornerFinder-B_6OVtcc.cjs");
17
- const require_boolean2D = require("./boolean2D-Bh07EPIS.cjs");
18
- const require_textBlueprints = require("./textBlueprints-D1OMdDIP.cjs");
19
- const require_cameraFns = require("./cameraFns-BYBavyGz.cjs");
12
+ const require_surfaceBuilders = require("./surfaceBuilders-aSFtcDr6.cjs");
13
+ const require_blueprintSketcher = require("./blueprintSketcher-AtKzjQzf.cjs");
14
+ const require_helpers = require("./helpers-HM_a__7P.cjs");
15
+ const require_blueprint = require("./blueprint-DT7TQoxE.cjs");
16
+ const require_cornerFinder = require("./cornerFinder-wCndsp-s.cjs");
17
+ const require_boolean2D = require("./boolean2D-C1TN_Tx_.cjs");
18
+ const require_textBlueprints = require("./textBlueprints-rWPsnXS2.cjs");
19
+ const require_cameraFns = require("./cameraFns-DvwFx7Zy.cjs");
20
20
  //#region src/2d/lib/stitching.ts
21
21
  /**
22
22
  * Group a flat list of curves into connected chains by matching endpoints.
@@ -1,22 +1,22 @@
1
1
  import { K as getKernel, M as DisposalScope, W as _usingCtx, c as createEdge, l as createFace, p as createWire } from "./shapeTypes-JD6SSVwZ.js";
2
2
  import { i as wasmIndex, n as bug } from "./bug-BdOHwn_e.js";
3
- import { P as unwrap, s as safeIndex } from "./errors-MHLiNE-C.js";
4
- import { s as getEdges } from "./topologyQueryFns-G6xu8ExU.js";
3
+ import { P as unwrap, s as safeIndex } from "./errors-CTn8i3lY.js";
4
+ import { s as getEdges } from "./topologyQueryFns-Dxwm2jN-.js";
5
5
  import { t as DEG2RAD } from "./constants-ITRzCnCp.js";
6
6
  import { r as toVec3 } from "./types-D24Y27N0.js";
7
7
  import { d as vecNormalize, g as vecSub, h as vecScale, m as vecRotate, r as vecCross } from "./vecOps-SKPRvPH-.js";
8
- import { a as planeToWorld, o as resolvePlane } from "./planeOps-CQahLrCx.js";
9
- import { d as pointOnSurface, l as normalAt, m as uvBounds, r as faceCenter, u as outerWire, v as copyShape, y as downcast } from "./faceFns-C-SjeGpG.js";
10
- import { h as offsetWire2D, i as curveIsClosed, l as curveStartPoint } from "./curveFns-CO0dlocY.js";
8
+ import { a as planeToWorld, o as resolvePlane } from "./planeOps-CkpMeheg.js";
9
+ import { d as pointOnSurface, l as normalAt, m as uvBounds, r as faceCenter, u as outerWire, v as copyShape, y as downcast } from "./faceFns-D4z1xEh3.js";
10
+ import { h as offsetWire2D, i as curveIsClosed, l as curveStartPoint } from "./curveFns-U6vegvin.js";
11
11
  import { n as getAtOrThrow, r as lastOrThrow, t as firstOrThrow } from "./arrayAccess-DrUGPADn.js";
12
- import { c as makeBSplineApproximation, d as makeCircle, f as makeEllipse, m as makeHelix, r as makeFace, s as assembleWire } from "./surfaceBuilders-BC3swenJ.js";
13
- import { a as Blueprints, c as make2dOffset, i as CompoundBlueprint, l as intersectCurves, n as BaseSketcher2d, o as chamferCurves, s as filletCurves, u as Flatbush } from "./blueprintSketcher-HsSFy10k.js";
14
- import { b as squareDistance2d, l as add2d, s as PRECISION_OFFSET, v as samePoint$1, x as subtract2d } from "./helpers-BipNXMsi.js";
15
- import { _ as approximateAsSvgCompatibleCurve, a as edgeToCurve, f as make2dInerpolatedBSplineCurve, i as curvesAsEdgesOnPlane, l as make2dCircle, p as make2dSegmentCurve, s as make2dArcFromCenter, t as Blueprint, u as make2dEllipse, v as Curve2D, x as BoundingBox2d, y as deserializeCurve2D } from "./blueprint-Be2V1tdb.js";
16
- import { t as cornerFinder } from "./cornerFinder-D5doC-g3.js";
17
- import { c as roundedRectangleBlueprint, n as fuse2D, r as intersect2D, s as polysidesBlueprint, t as cut2D } from "./boolean2D-CwFJsT_T.js";
18
- import { _ as wrapSketchDataArray, a as Sketch, g as wrapSketchData, i as Sketches, t as textBlueprints } from "./textBlueprints-75GTk1vk.js";
19
- import { i as projectEdges, t as cameraFromPlane } from "./cameraFns-CWS3e1p_.js";
12
+ import { c as makeBSplineApproximation, d as makeCircle, f as makeEllipse, m as makeHelix, r as makeFace, s as assembleWire } from "./surfaceBuilders-C_oBS19q.js";
13
+ import { a as Blueprints, c as make2dOffset, i as CompoundBlueprint, l as intersectCurves, n as BaseSketcher2d, o as chamferCurves, s as filletCurves, u as Flatbush } from "./blueprintSketcher-CEw91ij9.js";
14
+ import { b as squareDistance2d, l as add2d, s as PRECISION_OFFSET, v as samePoint$1, x as subtract2d } from "./helpers-DiOcrJ0A.js";
15
+ import { _ as approximateAsSvgCompatibleCurve, a as edgeToCurve, f as make2dInerpolatedBSplineCurve, i as curvesAsEdgesOnPlane, l as make2dCircle, p as make2dSegmentCurve, s as make2dArcFromCenter, t as Blueprint, u as make2dEllipse, v as Curve2D, x as BoundingBox2d, y as deserializeCurve2D } from "./blueprint-Dq3o62cF.js";
16
+ import { t as cornerFinder } from "./cornerFinder-Bt1Ijr7a.js";
17
+ import { c as roundedRectangleBlueprint, n as fuse2D, r as intersect2D, s as polysidesBlueprint, t as cut2D } from "./boolean2D-CTN9BHhX.js";
18
+ import { _ as wrapSketchDataArray, a as Sketch, g as wrapSketchData, i as Sketches, t as textBlueprints } from "./textBlueprints-BM_HzZ_Z.js";
19
+ import { i as projectEdges, t as cameraFromPlane } from "./cameraFns-By4a7rrk.js";
20
20
  //#region src/2d/lib/stitching.ts
21
21
  /**
22
22
  * Group a flat list of curves into connected chains by matching endpoints.
@@ -189,6 +189,7 @@ var BrepErrorCode = {
189
189
  FIX_SHAPE_FAILED: "FIX_SHAPE_FAILED",
190
190
  SOLID_FROM_SHELL_FAILED: "SOLID_FROM_SHELL_FAILED",
191
191
  FIX_SELF_INTERSECTION_FAILED: "FIX_SELF_INTERSECTION_FAILED",
192
+ MESH_FAILED: "MESH_FAILED",
192
193
  ELLIPSE_RADII: "ELLIPSE_RADII",
193
194
  FUSE_ALL_EMPTY: "FUSE_ALL_EMPTY",
194
195
  FILLET_NO_EDGES: "FILLET_NO_EDGES",
@@ -189,6 +189,7 @@ var BrepErrorCode = {
189
189
  FIX_SHAPE_FAILED: "FIX_SHAPE_FAILED",
190
190
  SOLID_FROM_SHELL_FAILED: "SOLID_FROM_SHELL_FAILED",
191
191
  FIX_SELF_INTERSECTION_FAILED: "FIX_SELF_INTERSECTION_FAILED",
192
+ MESH_FAILED: "MESH_FAILED",
192
193
  ELLIPSE_RADII: "ELLIPSE_RADII",
193
194
  FUSE_ALL_EMPTY: "FUSE_ALL_EMPTY",
194
195
  FILLET_NO_EDGES: "FILLET_NO_EDGES",
@@ -1,6 +1,6 @@
1
1
  const require_shapeTypes = require("./shapeTypes-Dq5ylbmP.cjs");
2
- const require_errors = require("./errors-RHkKO5bZ.cjs");
3
- const require_topologyQueryFns = require("./topologyQueryFns-nT3Ir1y-.cjs");
2
+ const require_errors = require("./errors-DWezb9DI.cjs");
3
+ const require_topologyQueryFns = require("./topologyQueryFns-K7_UgEws.cjs");
4
4
  const require_types = require("./types-KjA8tY4Y.cjs");
5
5
  //#region src/topology/cast.ts
6
6
  var TOPO_ENUM = {
@@ -1,6 +1,6 @@
1
1
  import { K as getKernel, i as castShape } from "./shapeTypes-JD6SSVwZ.js";
2
- import { E as ok, P as unwrap, g as err, l as typeCastError } from "./errors-MHLiNE-C.js";
3
- import { a as getCachedSurfaceType } from "./topologyQueryFns-G6xu8ExU.js";
2
+ import { E as ok, P as unwrap, g as err, l as typeCastError } from "./errors-CTn8i3lY.js";
3
+ import { a as getCachedSurfaceType } from "./topologyQueryFns-Dxwm2jN-.js";
4
4
  import { r as toVec3 } from "./types-D24Y27N0.js";
5
5
  //#region src/topology/cast.ts
6
6
  var TOPO_ENUM = {
@@ -1,9 +1,9 @@
1
1
  import { C as isSolid, E as getShapeKind, K as getKernel, T as isWire, h as disposeResultShape, i as castShape, m as disposeDowncastSource, n as castResultShape, x as isShape3D, y as isFace } from "./shapeTypes-JD6SSVwZ.js";
2
- import { E as ok, b as isErr, d as validationError, g as err, i as kernelError, l as typeCastError, t as BrepErrorCode, x as isOk } from "./errors-MHLiNE-C.js";
3
- import { c as getFaces, i as getCachedIsValid, m as invalidateShapeCache, p as getWires, s as getEdges } from "./topologyQueryFns-G6xu8ExU.js";
2
+ import { E as ok, b as isErr, d as validationError, g as err, i as kernelError, l as typeCastError, t as BrepErrorCode, x as isOk } from "./errors-CTn8i3lY.js";
3
+ import { c as getFaces, i as getCachedIsValid, m as invalidateShapeCache, p as getWires, s as getEdges } from "./topologyQueryFns-Dxwm2jN-.js";
4
4
  import { n as HASH_CODE_MAX } from "./constants-ITRzCnCp.js";
5
- import { y as downcast } from "./faceFns-C-SjeGpG.js";
6
- import { C as propagateAllMetadata, f as cut, h as fuseAll, m as fuse, p as cutAll, x as collectInputFaceHashes } from "./solidBuilders-CIDWhMT6.js";
5
+ import { y as downcast } from "./faceFns-D4z1xEh3.js";
6
+ import { C as propagateAllMetadata, f as cut, h as fuseAll, m as fuse, p as cutAll, x as collectInputFaceHashes } from "./solidBuilders-BiRBDuvG.js";
7
7
  import { t as firstOrThrow } from "./arrayAccess-DrUGPADn.js";
8
8
  //#region src/topology/threeHelpers.ts
9
9
  /**
@@ -1,9 +1,9 @@
1
1
  const require_shapeTypes = require("./shapeTypes-Dq5ylbmP.cjs");
2
- const require_errors = require("./errors-RHkKO5bZ.cjs");
3
- const require_topologyQueryFns = require("./topologyQueryFns-nT3Ir1y-.cjs");
2
+ const require_errors = require("./errors-DWezb9DI.cjs");
3
+ const require_topologyQueryFns = require("./topologyQueryFns-K7_UgEws.cjs");
4
4
  const require_constants = require("./constants-BOVyEYGH.cjs");
5
- const require_faceFns = require("./faceFns-9lfp_6de.cjs");
6
- const require_solidBuilders = require("./solidBuilders-Bm4P-jGM.cjs");
5
+ const require_faceFns = require("./faceFns-ClDKjey7.cjs");
6
+ const require_solidBuilders = require("./solidBuilders-BKSCyfzL.cjs");
7
7
  const require_arrayAccess = require("./arrayAccess-e4H9cBfh.cjs");
8
8
  //#region src/topology/threeHelpers.ts
9
9
  /**
@@ -1,12 +1,12 @@
1
1
  import { K as getKernel, y as isFace } from "./shapeTypes-JD6SSVwZ.js";
2
- import { E as ok, g as err, o as queryError, x as isOk } from "./errors-MHLiNE-C.js";
3
- import { c as getFaces, f as getVertices, p as getWires, s as getEdges } from "./topologyQueryFns-G6xu8ExU.js";
2
+ import { E as ok, g as err, o as queryError, x as isOk } from "./errors-CTn8i3lY.js";
3
+ import { c as getFaces, f as getVertices, p as getWires, s as getEdges } from "./topologyQueryFns-Dxwm2jN-.js";
4
4
  import { t as DEG2RAD } from "./constants-ITRzCnCp.js";
5
5
  import { a as vecDot, d as vecNormalize } from "./vecOps-SKPRvPH-.js";
6
- import { l as normalAt, s as getSurfaceType } from "./faceFns-C-SjeGpG.js";
7
- import { a as isSameShape, n as getHashCode } from "./shapeFns-BZnM8fRy.js";
8
- import { f as getCurveType, i as curveIsClosed, o as curveLength } from "./curveFns-CO0dlocY.js";
9
- import { n as measureArea } from "./measureFns-D9lwC7kw.js";
6
+ import { l as normalAt, s as getSurfaceType } from "./faceFns-D4z1xEh3.js";
7
+ import { a as isSameShape, n as getHashCode } from "./shapeFns-D0hK1y4m.js";
8
+ import { f as getCurveType, i as curveIsClosed, o as curveLength } from "./curveFns-U6vegvin.js";
9
+ import { n as measureArea } from "./measureFns-DfgTyVBz.js";
10
10
  //#region src/utils/vec2d.ts
11
11
  /** Precision for curve intersection and parameter operations. */
12
12
  var PRECISION_INTERSECTION = 1e-9;