brepjs 20.12.12 → 20.12.14

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 (98) hide show
  1. package/dist/2d.cjs +6 -6
  2. package/dist/2d.js +6 -6
  3. package/dist/{adjacencyFns-DfPO5LGP.js → adjacencyFns-DT8YVOtE.js} +3 -3
  4. package/dist/{adjacencyFns-DSGyqGyy.cjs → adjacencyFns-DyHi1paM.cjs} +3 -3
  5. package/dist/{blueprint-BYXwa2cF.js → blueprint-BzgIBZly.js} +5 -5
  6. package/dist/{blueprint-DtPRNDEu.cjs → blueprint-CGBIm-Xk.cjs} +5 -5
  7. package/dist/{blueprintFns-YuJQgywS.js → blueprintFns-CN6koAgD.js} +2 -2
  8. package/dist/{blueprintFns-y2oH3LOO.cjs → blueprintFns-Crktz0-W.cjs} +2 -2
  9. package/dist/{blueprintSketcher-DPP1g95U.js → blueprintSketcher-C28vnWYu.js} +3 -3
  10. package/dist/{blueprintSketcher-zQgjgodb.cjs → blueprintSketcher-C5Nn6Yi7.cjs} +3 -3
  11. package/dist/{boolean2D-BJFpEXix.cjs → boolean2D-BRmFbYsb.cjs} +4 -4
  12. package/dist/{boolean2D-CNf7lVXV.js → boolean2D-BWpQMVia.js} +4 -4
  13. package/dist/{booleanFns-CkcJ8WB7.cjs → booleanFns-CvBttd1y.cjs} +5 -5
  14. package/dist/{booleanFns-B9RvEpHB.js → booleanFns-Dcv_aMcv.js} +5 -5
  15. package/dist/brepjs.cjs +54 -50
  16. package/dist/brepjs.js +54 -50
  17. package/dist/{cameraFns-B9xKg36U.cjs → cameraFns-Ds_tNjP7.cjs} +3 -3
  18. package/dist/{cameraFns-CLkNCsYU.js → cameraFns-xIy84D75.js} +3 -3
  19. package/dist/core.cjs +2 -2
  20. package/dist/core.js +2 -2
  21. package/dist/{cornerFinder-DgVMDBCo.js → cornerFinder-BEUeERZd.js} +1 -1
  22. package/dist/{cornerFinder-Dzsi68w-.cjs → cornerFinder-BUj9Ms_n.cjs} +1 -1
  23. package/dist/{curveFns-EsJgIpc6.js → curveFns-DR1JAITD.js} +1 -1
  24. package/dist/{curveFns-B8mm5cou.cjs → curveFns-Dneh4D9N.cjs} +1 -1
  25. package/dist/{drawFns-Bht1ceeH.js → drawFns-BPskIgvL.js} +12 -12
  26. package/dist/{drawFns-CLJog-Xp.cjs → drawFns-CkHnrB4o.cjs} +12 -12
  27. package/dist/{faceFns-Jo9hMVqL.cjs → faceFns-ClpZLuHU.cjs} +2 -2
  28. package/dist/{faceFns-2jGPfqvB.js → faceFns-Ek2vnYA8.js} +2 -2
  29. package/dist/{healingFns-DvuJr4RS.js → healingFns-CTPsDQkF.js} +40 -15
  30. package/dist/{healingFns-DGc2hk9z.cjs → healingFns-CVGVC3-a.cjs} +40 -15
  31. package/dist/{helpers-D7Y4Vxhf.cjs → helpers-ClWqvNl5.cjs} +6 -6
  32. package/dist/{helpers-BuI9lh-t.js → helpers-TeE5hIEo.js} +6 -6
  33. package/dist/{importFns-Dwlc0KtB.cjs → importFns-1qi--R8S.cjs} +479 -57
  34. package/dist/{importFns-TKzj4FaZ.js → importFns-DTyCvMc3.js} +479 -57
  35. package/dist/io/importFns.d.ts +6 -4
  36. package/dist/io/ioUtils.d.ts +23 -5
  37. package/dist/io/meshNesting.d.ts +25 -4
  38. package/dist/io/meshTopology.d.ts +33 -0
  39. package/dist/io/stlTriangles.d.ts +10 -0
  40. package/dist/io/threemfImportFns.d.ts +9 -6
  41. package/dist/io.cjs +2 -2
  42. package/dist/io.js +2 -2
  43. package/dist/kernel/capabilities.d.ts +9 -1
  44. package/dist/kernel/occtWasm/occtWasmAdapter.cjs +1 -1
  45. package/dist/kernel/occtWasm/occtWasmAdapter.js +1 -1
  46. package/dist/{loftFns-CnerVgTM.cjs → loftFns-BqA5gWFR.cjs} +1 -1
  47. package/dist/{loftFns-jnQL_zpD.js → loftFns-DbXEtPKz.js} +1 -1
  48. package/dist/{measureFns--UKrACtx.js → measureFns-NLCrquKi.js} +3 -3
  49. package/dist/{measureFns-D8uSDn-8.cjs → measureFns-_Q-bggOu.cjs} +3 -3
  50. package/dist/measurement.cjs +2 -2
  51. package/dist/measurement.js +2 -2
  52. package/dist/{meshFns-Bo4EQJFO.js → meshFns-DBN_h_7v.js} +4 -4
  53. package/dist/{meshFns-Cs_qrlXI.cjs → meshFns-DmKYxmT_.cjs} +4 -4
  54. package/dist/{occtWasmAdapter-C-Qi-jxS.js → occtWasmAdapter-Be-xZvbQ.js} +3 -2
  55. package/dist/{occtWasmAdapter-BK--kx4R.cjs → occtWasmAdapter-TX9M5rkb.cjs} +3 -2
  56. package/dist/operations.cjs +2 -2
  57. package/dist/operations.js +2 -2
  58. package/dist/{primitiveFns-DPqHA3sX.js → primitiveFns-D53I6iYC.js} +5 -5
  59. package/dist/{primitiveFns-CZqSRhm8.cjs → primitiveFns-u5Vnoanh.cjs} +5 -5
  60. package/dist/{principalBoxFns-C3SQMyG5.js → principalBoxFns-B3NAkStp.js} +3 -3
  61. package/dist/{principalBoxFns-Cozj46sS.cjs → principalBoxFns-Cs3z4CmX.cjs} +3 -3
  62. package/dist/projection.cjs +1 -1
  63. package/dist/projection.js +1 -1
  64. package/dist/query.cjs +2 -2
  65. package/dist/query.js +2 -2
  66. package/dist/{refResolveFns-DBY8yC6n.cjs → refResolveFns-CEx0Xso0.cjs} +6 -6
  67. package/dist/{refResolveFns-DtztzO1g.js → refResolveFns-LMvuE8em.js} +6 -6
  68. package/dist/{shapeFns-kFm-m8jh.js → shapeFns-24B0u4KE.js} +2 -2
  69. package/dist/{shapeFns-D47cmLG8.cjs → shapeFns-CahtmyZr.cjs} +2 -2
  70. package/dist/shapeRef.cjs +1 -1
  71. package/dist/shapeRef.js +1 -1
  72. package/dist/{shapeTypes-C06KHgTm.cjs → shapeTypes-6tBG0xrR.cjs} +12 -15
  73. package/dist/{shapeTypes-DoPnZHn_.js → shapeTypes-DZGS7hgn.js} +12 -15
  74. package/dist/sketching.cjs +3 -3
  75. package/dist/sketching.js +3 -3
  76. package/dist/{solidBuilders-ZDGdvaTU.js → solidBuilders-BHGa-BWa.js} +3 -3
  77. package/dist/{solidBuilders-Dwm0hXn5.cjs → solidBuilders-Dl6d8fGZ.cjs} +3 -3
  78. package/dist/{surfaceBuilders-BBs6D6Km.js → surfaceBuilders-BVyLEFoG.js} +3 -3
  79. package/dist/{surfaceBuilders-D5kFAV1i.cjs → surfaceBuilders-BtYpRGXh.cjs} +3 -3
  80. package/dist/text.cjs +2 -2
  81. package/dist/text.js +2 -2
  82. package/dist/{textBlueprints-BPrPhg5b.cjs → textBlueprints-C1aPqvXX.cjs} +8 -8
  83. package/dist/{textBlueprints-Dq3pUNSr.js → textBlueprints-CihV6AGR.js} +8 -8
  84. package/dist/{textMetrics-4xkjKmD1.cjs → textMetrics-BhTII8oU.cjs} +1 -1
  85. package/dist/{textMetrics-JN70dV5x.js → textMetrics-CTA6sIE_.js} +1 -1
  86. package/dist/{threadFns-D7D_qR7t.js → threadFns-B2Foaws1.js} +7 -7
  87. package/dist/{threadFns-Dq_Gff0C.cjs → threadFns-BK2TDl2R.cjs} +7 -7
  88. package/dist/topology/apiTypes.d.ts +4 -2
  89. package/dist/topology/chamferAngleFns.d.ts +6 -4
  90. package/dist/topology/evolutionFns.d.ts +2 -0
  91. package/dist/topology/modifierFns.d.ts +8 -0
  92. package/dist/topology.cjs +9 -9
  93. package/dist/topology.js +9 -9
  94. package/dist/{topologyQueryFns-yOGEI9hO.js → topologyQueryFns-BRXpZFCi.js} +1 -1
  95. package/dist/{topologyQueryFns-BUhKY2Kj.cjs → topologyQueryFns-t8CbgIAS.cjs} +1 -1
  96. package/dist/{validityTypes-lfyOkCQm.cjs → validityTypes-CT2goK1c.cjs} +1 -1
  97. package/dist/{validityTypes-CGrEOscY.js → validityTypes-OSx482aJ.js} +1 -1
  98. package/package.json +1 -1
package/dist/core.js CHANGED
@@ -1,7 +1,7 @@
1
- import { C as isSolid, D as getShapeKind, E as GeometryCleanupError, F as createKernelHandle, H as withScope, L as isLive, M as is3D, N as DisposalScope, P as createHandle, S as isShell, T as isWire, U as withScopeResult, W as withScopeResultAsync, _ as isCompound, b as isShape1D, i as castShape, j as is2D, v as isEdge, w as isVertex, x as isShape3D, y as isFace } from "./shapeTypes-DoPnZHn_.js";
1
+ import { C as isSolid, D as getShapeKind, E as GeometryCleanupError, F as createKernelHandle, H as withScope, L as isLive, M as is3D, N as DisposalScope, P as createHandle, S as isShell, T as isWire, U as withScopeResult, W as withScopeResultAsync, _ as isCompound, b as isShape1D, i as castShape, j as is2D, v as isEdge, w as isVertex, x as isShape3D, y as isFace } from "./shapeTypes-DZGS7hgn.js";
2
2
  import { n as bug, t as BrepBugError } from "./bug-ClMTAJhe.js";
3
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-BTccWbtE.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-CGrEOscY.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-OSx482aJ.js";
5
5
  import { n as HASH_CODE_MAX, r as RAD2DEG, t as DEG2RAD } from "./constants-iraOnb2p.js";
6
6
  import { n as toVec2, r as toVec3, t as resolveDirection } from "./types-CKXsIm9-.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-S-m9H_fe.js";
@@ -1,6 +1,6 @@
1
1
  import { t as DEG2RAD } from "./constants-iraOnb2p.js";
2
2
  import { n as getAtOrThrow } from "./arrayAccess-BpgouNir.js";
3
- import { p as distance2d, u as angle2d, v as samePoint } from "./helpers-BuI9lh-t.js";
3
+ import { p as distance2d, u as angle2d, v as samePoint } from "./helpers-TeE5hIEo.js";
4
4
  // 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-oee0S_x6.cjs");
2
2
  const require_arrayAccess = require("./arrayAccess-DpJYARwv.cjs");
3
- const require_helpers = require("./helpers-D7Y4Vxhf.cjs");
3
+ const require_helpers = require("./helpers-ClWqvNl5.cjs");
4
4
  // src/query/cornerFinder.ts
5
5
  var PI_2 = 2 * Math.PI;
6
6
  function positiveHalfAngle(angle) {
@@ -1,4 +1,4 @@
1
- import { T as isWire, h as disposeResultShape, n as castResultShape, q as getKernel, v as isEdge } from "./shapeTypes-DoPnZHn_.js";
1
+ import { T as isWire, h as disposeResultShape, n as castResultShape, q as getKernel, v as isEdge } from "./shapeTypes-DZGS7hgn.js";
2
2
  import { E as ok, g as err, l as typeCastError } from "./errors-BTccWbtE.js";
3
3
  // src/topology/curveFns.ts
4
4
  /**
@@ -1,4 +1,4 @@
1
- const require_shapeTypes = require("./shapeTypes-C06KHgTm.cjs");
1
+ const require_shapeTypes = require("./shapeTypes-6tBG0xrR.cjs");
2
2
  const require_errors = require("./errors-O_blYTWT.cjs");
3
3
  // src/topology/curveFns.ts
4
4
  /**
@@ -1,22 +1,22 @@
1
- import { G as _usingCtx, N as DisposalScope, c as createEdge, l as createFace, p as createWire, q as getKernel } from "./shapeTypes-DoPnZHn_.js";
1
+ import { G as _usingCtx, N as DisposalScope, c as createEdge, l as createFace, p as createWire, q as getKernel } from "./shapeTypes-DZGS7hgn.js";
2
2
  import { i as wasmIndex, n as bug } from "./bug-ClMTAJhe.js";
3
3
  import { P as unwrap, s as safeIndex } from "./errors-BTccWbtE.js";
4
- import { s as getEdges } from "./topologyQueryFns-yOGEI9hO.js";
4
+ import { s as getEdges } from "./topologyQueryFns-BRXpZFCi.js";
5
5
  import { t as DEG2RAD } from "./constants-iraOnb2p.js";
6
6
  import { r as toVec3 } from "./types-CKXsIm9-.js";
7
7
  import { d as vecNormalize, g as vecSub, h as vecScale, m as vecRotate, r as vecCross } from "./vecOps-S-m9H_fe.js";
8
8
  import { a as planeToWorld, o as resolvePlane } from "./planeOps-D3yDuMux.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-2jGPfqvB.js";
10
- import { h as offsetWire2D, i as curveIsClosed, l as curveStartPoint } from "./curveFns-EsJgIpc6.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-Ek2vnYA8.js";
10
+ import { h as offsetWire2D, i as curveIsClosed, l as curveStartPoint } from "./curveFns-DR1JAITD.js";
11
11
  import { n as getAtOrThrow, r as lastOrThrow, t as firstOrThrow } from "./arrayAccess-BpgouNir.js";
12
- import { c as makeBSplineApproximation, d as makeCircle, f as makeEllipse, m as makeHelix, r as makeFace, s as assembleWire } from "./surfaceBuilders-BBs6D6Km.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-DPP1g95U.js";
14
- import { b as squareDistance2d, l as add2d, s as PRECISION_OFFSET, v as samePoint$1, x as subtract2d } from "./helpers-BuI9lh-t.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-BYXwa2cF.js";
16
- import { t as cornerFinder } from "./cornerFinder-DgVMDBCo.js";
17
- import { c as roundedRectangleBlueprint, n as fuse2D, r as intersect2D, s as polysidesBlueprint, t as cut2D } from "./boolean2D-CNf7lVXV.js";
18
- import { _ as wrapSketchData, a as Sketches, o as Sketch, t as textBlueprints, v as wrapSketchDataArray } from "./textBlueprints-Dq3pUNSr.js";
19
- import { i as projectEdges, t as cameraFromPlane } from "./cameraFns-CLkNCsYU.js";
12
+ import { c as makeBSplineApproximation, d as makeCircle, f as makeEllipse, m as makeHelix, r as makeFace, s as assembleWire } from "./surfaceBuilders-BVyLEFoG.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-C28vnWYu.js";
14
+ import { b as squareDistance2d, l as add2d, s as PRECISION_OFFSET, v as samePoint$1, x as subtract2d } from "./helpers-TeE5hIEo.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-BzgIBZly.js";
16
+ import { t as cornerFinder } from "./cornerFinder-BEUeERZd.js";
17
+ import { c as roundedRectangleBlueprint, n as fuse2D, r as intersect2D, s as polysidesBlueprint, t as cut2D } from "./boolean2D-BWpQMVia.js";
18
+ import { _ as wrapSketchData, a as Sketches, o as Sketch, t as textBlueprints, v as wrapSketchDataArray } from "./textBlueprints-CihV6AGR.js";
19
+ import { i as projectEdges, t as cameraFromPlane } from "./cameraFns-xIy84D75.js";
20
20
  // 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
- const require_shapeTypes = require("./shapeTypes-C06KHgTm.cjs");
1
+ const require_shapeTypes = require("./shapeTypes-6tBG0xrR.cjs");
2
2
  const require_bug = require("./bug-CBcpIPuf.cjs");
3
3
  const require_errors = require("./errors-O_blYTWT.cjs");
4
- const require_topologyQueryFns = require("./topologyQueryFns-BUhKY2Kj.cjs");
4
+ const require_topologyQueryFns = require("./topologyQueryFns-t8CbgIAS.cjs");
5
5
  const require_constants = require("./constants-oee0S_x6.cjs");
6
6
  const require_types = require("./types-CjF9Rofr.cjs");
7
7
  const require_vecOps = require("./vecOps-CrGEPPQM.cjs");
8
8
  const require_planeOps = require("./planeOps-DZfLToKZ.cjs");
9
- const require_faceFns = require("./faceFns-Jo9hMVqL.cjs");
10
- const require_curveFns = require("./curveFns-B8mm5cou.cjs");
9
+ const require_faceFns = require("./faceFns-ClpZLuHU.cjs");
10
+ const require_curveFns = require("./curveFns-Dneh4D9N.cjs");
11
11
  const require_arrayAccess = require("./arrayAccess-DpJYARwv.cjs");
12
- const require_surfaceBuilders = require("./surfaceBuilders-D5kFAV1i.cjs");
13
- const require_blueprintSketcher = require("./blueprintSketcher-zQgjgodb.cjs");
14
- const require_helpers = require("./helpers-D7Y4Vxhf.cjs");
15
- const require_blueprint = require("./blueprint-DtPRNDEu.cjs");
16
- const require_cornerFinder = require("./cornerFinder-Dzsi68w-.cjs");
17
- const require_boolean2D = require("./boolean2D-BJFpEXix.cjs");
18
- const require_textBlueprints = require("./textBlueprints-BPrPhg5b.cjs");
19
- const require_cameraFns = require("./cameraFns-B9xKg36U.cjs");
12
+ const require_surfaceBuilders = require("./surfaceBuilders-BtYpRGXh.cjs");
13
+ const require_blueprintSketcher = require("./blueprintSketcher-C5Nn6Yi7.cjs");
14
+ const require_helpers = require("./helpers-ClWqvNl5.cjs");
15
+ const require_blueprint = require("./blueprint-CGBIm-Xk.cjs");
16
+ const require_cornerFinder = require("./cornerFinder-BUj9Ms_n.cjs");
17
+ const require_boolean2D = require("./boolean2D-BRmFbYsb.cjs");
18
+ const require_textBlueprints = require("./textBlueprints-C1aPqvXX.cjs");
19
+ const require_cameraFns = require("./cameraFns-Ds_tNjP7.cjs");
20
20
  // src/2d/lib/stitching.ts
21
21
  /**
22
22
  * Group a flat list of curves into connected chains by matching endpoints.
@@ -1,6 +1,6 @@
1
- const require_shapeTypes = require("./shapeTypes-C06KHgTm.cjs");
1
+ const require_shapeTypes = require("./shapeTypes-6tBG0xrR.cjs");
2
2
  const require_errors = require("./errors-O_blYTWT.cjs");
3
- const require_topologyQueryFns = require("./topologyQueryFns-BUhKY2Kj.cjs");
3
+ const require_topologyQueryFns = require("./topologyQueryFns-t8CbgIAS.cjs");
4
4
  const require_types = require("./types-CjF9Rofr.cjs");
5
5
  // src/topology/cast.ts
6
6
  var TOPO_ENUM = {
@@ -1,6 +1,6 @@
1
- import { O as getOrQueryType, i as castShape, q as getKernel } from "./shapeTypes-DoPnZHn_.js";
1
+ import { O as getOrQueryType, i as castShape, q as getKernel } from "./shapeTypes-DZGS7hgn.js";
2
2
  import { E as ok, P as unwrap, g as err, l as typeCastError } from "./errors-BTccWbtE.js";
3
- import { a as getCachedSurfaceType } from "./topologyQueryFns-yOGEI9hO.js";
3
+ import { a as getCachedSurfaceType } from "./topologyQueryFns-BRXpZFCi.js";
4
4
  import { r as toVec3 } from "./types-CKXsIm9-.js";
5
5
  // src/topology/cast.ts
6
6
  var TOPO_ENUM = {
@@ -1,10 +1,10 @@
1
- import { C as isSolid, D as getShapeKind, T as isWire, Y as getKernelCapabilities, h as disposeResultShape, i as castShape, m as disposeDowncastSource, n as castResultShape, q as getKernel, r as castResultShapeWithKnownType, x as isShape3D, y as isFace } from "./shapeTypes-DoPnZHn_.js";
2
- import { j as isUnsupportedKernelOperationError, n as faultyEdgeIndexesOf } from "./occtWasmAdapter-C-Qi-jxS.js";
1
+ import { C as isSolid, D as getShapeKind, T as isWire, Y as getKernelCapabilities, h as disposeResultShape, i as castShape, m as disposeDowncastSource, n as castResultShape, q as getKernel, r as castResultShapeWithKnownType, x as isShape3D, y as isFace } from "./shapeTypes-DZGS7hgn.js";
2
+ import { j as isUnsupportedKernelOperationError, n as faultyEdgeIndexesOf } from "./occtWasmAdapter-Be-xZvbQ.js";
3
3
  import { E as ok, b as isErr, d as validationError, g as err, i as kernelError, l as typeCastError, t as BrepErrorCode, u as unsupportedError, x as isOk } from "./errors-BTccWbtE.js";
4
- import { C as subShapeHashes, O as getSuggestionForCode, c as getFaces, i as getCachedIsValid, m as invalidateShapeCache, p as getWires, s as getEdges } from "./topologyQueryFns-yOGEI9hO.js";
4
+ import { C as subShapeHashes, O as getSuggestionForCode, c as getFaces, i as getCachedIsValid, m as invalidateShapeCache, p as getWires, s as getEdges } from "./topologyQueryFns-BRXpZFCi.js";
5
5
  import { n as HASH_CODE_MAX } from "./constants-iraOnb2p.js";
6
- import { y as downcast } from "./faceFns-2jGPfqvB.js";
7
- import { a as fuse, f as collectInputFaceHashes, h as propagateMetadataByHash, i as cutAll, m as propagateAllMetadata, n as copyAsBooleanResult, o as fuseAll, r as cut } from "./booleanFns-B9RvEpHB.js";
6
+ import { y as downcast } from "./faceFns-Ek2vnYA8.js";
7
+ import { a as fuse, f as collectInputFaceHashes, h as propagateMetadataByHash, i as cutAll, m as propagateAllMetadata, n as copyAsBooleanResult, o as fuseAll, r as cut } from "./booleanFns-Dcv_aMcv.js";
8
8
  import { t as firstOrThrow } from "./arrayAccess-BpgouNir.js";
9
9
  // src/topology/threeHelpers.ts
10
10
  /**
@@ -386,11 +386,25 @@ function edgeTreatmentError(operation, e, edges, metadata) {
386
386
  }, failedEdges && failedEdges.length > 0 ? `The ${operation} could not be built on metadata.failedEdges: use a smaller size there, or leave those edges out` : void 0);
387
387
  }
388
388
  /**
389
+ * `UNSUPPORTED_CAPABILITY` for a chamfer the kernel cannot build as asked
390
+ * (asymmetric or per-edge distances), from its `UnsupportedKernelOperationError`.
391
+ */
392
+ function chamferUnsupportedError(e) {
393
+ const kernelId = getKernel().kernelId;
394
+ const raw = e instanceof Error ? e.message : String(e);
395
+ return unsupportedError(BrepErrorCode.UNSUPPORTED_CAPABILITY, `chamfer: the ${kernelId} kernel cannot build this chamfer (${raw})`, e, {
396
+ kernel: kernelId,
397
+ operation: "chamfer"
398
+ }, "Use one symmetric distance for every edge, or use the occt-wasm kernel (5.9.0 or later)");
399
+ }
400
+ /**
389
401
  * Apply a chamfer (beveled edge) to selected edges of a 3D shape.
390
402
  *
391
403
  * @param shape - The shape to modify.
392
404
  * @param edges - Edges to chamfer. Pass `undefined` to chamfer all edges.
393
405
  * @param distance - Symmetric distance, asymmetric `[d1, d2]`, or per-edge callback.
406
+ * @returns Err `UNSUPPORTED_CAPABILITY` when the kernel cannot build the
407
+ * distances asked for (brepkit has no asymmetric chamfer).
394
408
  */
395
409
  function chamfer(shape, edges, distance) {
396
410
  const check = validateNotNull$1(shape, "chamfer: shape");
@@ -421,6 +435,7 @@ function chamfer(shape, edges, distance) {
421
435
  const { shape: resultShape, evolution } = getKernel().chamferWithHistory(shape.wrapped, filteredEdges.map((e) => e.wrapped), kernelDistance, inputFaceHashes, HASH_CODE_MAX);
422
436
  return finalizeShape3D(evolution, resultShape, [shape], BrepErrorCode.CHAMFER_NOT_3D, "Chamfer result is not a 3D shape");
423
437
  } catch (e) {
438
+ if (isUnsupportedKernelOperationError(e)) return err(chamferUnsupportedError(e));
424
439
  return err(edgeTreatmentError("chamfer", e, filteredEdges, {
425
440
  edgeCount: selectedEdges.length,
426
441
  distance
@@ -730,8 +745,11 @@ function chamferAngleFailed(operation, e, edges, metadata) {
730
745
  ...failedEdges ? { failedEdges } : {}
731
746
  }, failedEdges && failedEdges.length > 0 ? "The chamfer could not be built on metadata.failedEdges: use a smaller distance there, or leave those edges out" : void 0));
732
747
  }
733
- /** Cast a fresh kernel result to a 3D shape, releasing every intermediate slot. */
734
- function castChamferResult(raw) {
748
+ /**
749
+ * Cast a fresh kernel result to a 3D shape, releasing every intermediate slot,
750
+ * and carry the face origins of `input` over to it.
751
+ */
752
+ function castChamferResult(input, raw) {
735
753
  const downcastResult = downcast(raw);
736
754
  if (isErr(downcastResult)) {
737
755
  getKernel().dispose(raw);
@@ -743,6 +761,7 @@ function castChamferResult(raw) {
743
761
  disposeResultShape(wrapped);
744
762
  return err(typeCastError("CHAMFER_ANGLE_NOT_3D", "chamferDistAngle did not produce a 3D shape"));
745
763
  }
764
+ propagateMetadataByHash([input], wrapped);
746
765
  return ok(wrapped);
747
766
  }
748
767
  /**
@@ -755,7 +774,9 @@ function castChamferResult(raw) {
755
774
  * @param edges - Edges to chamfer (must not be empty).
756
775
  * @param distance - Chamfer distance along the face (must be positive).
757
776
  * @param angleDeg - Chamfer angle in degrees (must be in range (0, 90)).
758
- * @returns Ok with the chamfered shape, or Err on invalid input or kernel failure.
777
+ * @returns Ok with the chamfered shape, or Err on invalid input or kernel
778
+ * failure. A kernel without a distance-angle chamfer (brepkit) returns
779
+ * `UNSUPPORTED_CAPABILITY`.
759
780
  *
760
781
  * @remarks Uses `BRepFilletAPI_MakeChamfer.AddDA(dist, angle, edge, face)` internally.
761
782
  */
@@ -763,30 +784,31 @@ function chamferDistAngle(shape, edges, distance, angleDeg) {
763
784
  if (edges.length === 0) return err(validationError("CHAMFER_ANGLE_NO_EDGES", "chamferDistAngle requires at least one edge", void 0, { edgeCount: 0 }));
764
785
  const invalid = validateDistAngle(distance, angleDeg);
765
786
  if (invalid) return invalid;
787
+ const kernel = getKernel();
766
788
  let raw;
767
789
  try {
768
- const kernel = getKernel();
769
790
  const rawEdges = edges.map((e) => e.wrapped);
770
791
  raw = kernel.chamferDistAngle(shape.wrapped, rawEdges, distance, angleDeg);
771
792
  } catch (e) {
793
+ if (isUnsupportedKernelOperationError(e)) return err(unsupportedError(BrepErrorCode.UNSUPPORTED_CAPABILITY, `chamferDistAngle: the ${kernel.kernelId} kernel has no distance-angle chamfer`, e, { kernel: kernel.kernelId }, "Chamfer by one symmetric distance instead, or use the occt-wasm kernel"));
772
794
  return chamferAngleFailed("chamferDistAngle", e, edges, {
773
795
  distance,
774
796
  angleDeg,
775
797
  edgeCount: edges.length
776
798
  });
777
799
  }
778
- return castChamferResult(raw);
800
+ return castChamferResult(shape, raw);
779
801
  }
780
802
  function perEdgeUnsupported(kernelId, cause) {
781
- return err(unsupportedError(BrepErrorCode.UNSUPPORTED_CAPABILITY, `chamferDistAngles: the ${kernelId} kernel cannot give each edge its own distance and angle`, cause, { kernel: kernelId }, "Give every edge the same { distance, angle }, or use the occt-wasm kernel (5.9.0 or later)"));
803
+ return err(unsupportedError(BrepErrorCode.UNSUPPORTED_CAPABILITY, `chamferDistAngles: the ${kernelId} kernel cannot give each edge its own distance and angle`, cause, { kernel: kernelId }, "Use the occt-wasm kernel (5.9.0 or later), or give every edge the same { distance, angle } on a kernel that has a distance-angle chamfer"));
782
804
  }
783
805
  /**
784
806
  * Chamfer each edge by its own distance and angle, in one operation.
785
807
  *
786
808
  * Edges that all share one distance and angle go through
787
- * {@link chamferDistAngle}, which every kernel provides. Different values need
788
- * a kernel with a per-edge distance-angle chamfer (occt-wasm 5.9.0 or later);
789
- * on any other kernel the result is an `UNSUPPORTED_CAPABILITY` error. On
809
+ * {@link chamferDistAngle}, which every kernel but brepkit provides. Different
810
+ * values need a kernel with a per-edge distance-angle chamfer (occt-wasm 5.9.0
811
+ * or later); on any other kernel the result is an `UNSUPPORTED_CAPABILITY` error. On
790
812
  * occt-wasm the edges of one tangent-continuous contour must share their
791
813
  * distance and angle, or the result is `CHAMFER_ANGLE_FAILED`.
792
814
  *
@@ -818,7 +840,7 @@ function chamferDistAngles(shape, entries) {
818
840
  if (isUnsupportedKernelOperationError(e)) return perEdgeUnsupported(kernel.kernelId, e);
819
841
  return chamferAngleFailed("chamferDistAngles", e, edges, { edgeCount: entries.length });
820
842
  }
821
- return castChamferResult(raw);
843
+ return castChamferResult(shape, raw);
822
844
  }
823
845
  // src/topology/nurbsFns.ts
824
846
  /**
@@ -1208,6 +1230,8 @@ function filletWithEvolution(shape, edges, radius) {
1208
1230
  * @param shape - The shape to modify.
1209
1231
  * @param edges - Edges to chamfer. Pass `undefined` to chamfer all edges.
1210
1232
  * @param distance - Symmetric distance, asymmetric `[d1, d2]`, or per-edge callback.
1233
+ * @returns Err `UNSUPPORTED_CAPABILITY` when the kernel cannot build the
1234
+ * distances asked for (brepkit has no asymmetric chamfer).
1211
1235
  */
1212
1236
  function chamferWithEvolution(shape, edges, distance) {
1213
1237
  const check = validateNotNull(shape, "chamferWithEvolution: shape");
@@ -1241,6 +1265,7 @@ function chamferWithEvolution(shape, edges, distance) {
1241
1265
  evolution
1242
1266
  });
1243
1267
  } catch (e) {
1268
+ if (isUnsupportedKernelOperationError(e)) return err(chamferUnsupportedError(e));
1244
1269
  const raw = e instanceof Error ? e.message : String(e);
1245
1270
  return err(kernelError("CHAMFER_FAILED", `Chamfer operation failed: ${raw}`, e, {
1246
1271
  operation: "chamfer",
@@ -1,10 +1,10 @@
1
- const require_shapeTypes = require("./shapeTypes-C06KHgTm.cjs");
2
- const require_occtWasmAdapter = require("./occtWasmAdapter-BK--kx4R.cjs");
1
+ const require_shapeTypes = require("./shapeTypes-6tBG0xrR.cjs");
2
+ const require_occtWasmAdapter = require("./occtWasmAdapter-TX9M5rkb.cjs");
3
3
  const require_errors = require("./errors-O_blYTWT.cjs");
4
- const require_topologyQueryFns = require("./topologyQueryFns-BUhKY2Kj.cjs");
4
+ const require_topologyQueryFns = require("./topologyQueryFns-t8CbgIAS.cjs");
5
5
  const require_constants = require("./constants-oee0S_x6.cjs");
6
- const require_faceFns = require("./faceFns-Jo9hMVqL.cjs");
7
- const require_booleanFns = require("./booleanFns-CkcJ8WB7.cjs");
6
+ const require_faceFns = require("./faceFns-ClpZLuHU.cjs");
7
+ const require_booleanFns = require("./booleanFns-CvBttd1y.cjs");
8
8
  const require_arrayAccess = require("./arrayAccess-DpJYARwv.cjs");
9
9
  // src/topology/threeHelpers.ts
10
10
  /**
@@ -386,11 +386,25 @@ function edgeTreatmentError(operation, e, edges, metadata) {
386
386
  }, failedEdges && failedEdges.length > 0 ? `The ${operation} could not be built on metadata.failedEdges: use a smaller size there, or leave those edges out` : void 0);
387
387
  }
388
388
  /**
389
+ * `UNSUPPORTED_CAPABILITY` for a chamfer the kernel cannot build as asked
390
+ * (asymmetric or per-edge distances), from its `UnsupportedKernelOperationError`.
391
+ */
392
+ function chamferUnsupportedError(e) {
393
+ const kernelId = require_shapeTypes.getKernel().kernelId;
394
+ const raw = e instanceof Error ? e.message : String(e);
395
+ return require_errors.unsupportedError(require_errors.BrepErrorCode.UNSUPPORTED_CAPABILITY, `chamfer: the ${kernelId} kernel cannot build this chamfer (${raw})`, e, {
396
+ kernel: kernelId,
397
+ operation: "chamfer"
398
+ }, "Use one symmetric distance for every edge, or use the occt-wasm kernel (5.9.0 or later)");
399
+ }
400
+ /**
389
401
  * Apply a chamfer (beveled edge) to selected edges of a 3D shape.
390
402
  *
391
403
  * @param shape - The shape to modify.
392
404
  * @param edges - Edges to chamfer. Pass `undefined` to chamfer all edges.
393
405
  * @param distance - Symmetric distance, asymmetric `[d1, d2]`, or per-edge callback.
406
+ * @returns Err `UNSUPPORTED_CAPABILITY` when the kernel cannot build the
407
+ * distances asked for (brepkit has no asymmetric chamfer).
394
408
  */
395
409
  function chamfer(shape, edges, distance) {
396
410
  const check = validateNotNull$1(shape, "chamfer: shape");
@@ -421,6 +435,7 @@ function chamfer(shape, edges, distance) {
421
435
  const { shape: resultShape, evolution } = require_shapeTypes.getKernel().chamferWithHistory(shape.wrapped, filteredEdges.map((e) => e.wrapped), kernelDistance, inputFaceHashes, require_constants.HASH_CODE_MAX);
422
436
  return finalizeShape3D(evolution, resultShape, [shape], require_errors.BrepErrorCode.CHAMFER_NOT_3D, "Chamfer result is not a 3D shape");
423
437
  } catch (e) {
438
+ if (require_occtWasmAdapter.isUnsupportedKernelOperationError(e)) return require_errors.err(chamferUnsupportedError(e));
424
439
  return require_errors.err(edgeTreatmentError("chamfer", e, filteredEdges, {
425
440
  edgeCount: selectedEdges.length,
426
441
  distance
@@ -730,8 +745,11 @@ function chamferAngleFailed(operation, e, edges, metadata) {
730
745
  ...failedEdges ? { failedEdges } : {}
731
746
  }, failedEdges && failedEdges.length > 0 ? "The chamfer could not be built on metadata.failedEdges: use a smaller distance there, or leave those edges out" : void 0));
732
747
  }
733
- /** Cast a fresh kernel result to a 3D shape, releasing every intermediate slot. */
734
- function castChamferResult(raw) {
748
+ /**
749
+ * Cast a fresh kernel result to a 3D shape, releasing every intermediate slot,
750
+ * and carry the face origins of `input` over to it.
751
+ */
752
+ function castChamferResult(input, raw) {
735
753
  const downcastResult = require_faceFns.downcast(raw);
736
754
  if (require_errors.isErr(downcastResult)) {
737
755
  require_shapeTypes.getKernel().dispose(raw);
@@ -743,6 +761,7 @@ function castChamferResult(raw) {
743
761
  require_shapeTypes.disposeResultShape(wrapped);
744
762
  return require_errors.err(require_errors.typeCastError("CHAMFER_ANGLE_NOT_3D", "chamferDistAngle did not produce a 3D shape"));
745
763
  }
764
+ require_booleanFns.propagateMetadataByHash([input], wrapped);
746
765
  return require_errors.ok(wrapped);
747
766
  }
748
767
  /**
@@ -755,7 +774,9 @@ function castChamferResult(raw) {
755
774
  * @param edges - Edges to chamfer (must not be empty).
756
775
  * @param distance - Chamfer distance along the face (must be positive).
757
776
  * @param angleDeg - Chamfer angle in degrees (must be in range (0, 90)).
758
- * @returns Ok with the chamfered shape, or Err on invalid input or kernel failure.
777
+ * @returns Ok with the chamfered shape, or Err on invalid input or kernel
778
+ * failure. A kernel without a distance-angle chamfer (brepkit) returns
779
+ * `UNSUPPORTED_CAPABILITY`.
759
780
  *
760
781
  * @remarks Uses `BRepFilletAPI_MakeChamfer.AddDA(dist, angle, edge, face)` internally.
761
782
  */
@@ -763,30 +784,31 @@ function chamferDistAngle(shape, edges, distance, angleDeg) {
763
784
  if (edges.length === 0) return require_errors.err(require_errors.validationError("CHAMFER_ANGLE_NO_EDGES", "chamferDistAngle requires at least one edge", void 0, { edgeCount: 0 }));
764
785
  const invalid = validateDistAngle(distance, angleDeg);
765
786
  if (invalid) return invalid;
787
+ const kernel = require_shapeTypes.getKernel();
766
788
  let raw;
767
789
  try {
768
- const kernel = require_shapeTypes.getKernel();
769
790
  const rawEdges = edges.map((e) => e.wrapped);
770
791
  raw = kernel.chamferDistAngle(shape.wrapped, rawEdges, distance, angleDeg);
771
792
  } catch (e) {
793
+ if (require_occtWasmAdapter.isUnsupportedKernelOperationError(e)) return require_errors.err(require_errors.unsupportedError(require_errors.BrepErrorCode.UNSUPPORTED_CAPABILITY, `chamferDistAngle: the ${kernel.kernelId} kernel has no distance-angle chamfer`, e, { kernel: kernel.kernelId }, "Chamfer by one symmetric distance instead, or use the occt-wasm kernel"));
772
794
  return chamferAngleFailed("chamferDistAngle", e, edges, {
773
795
  distance,
774
796
  angleDeg,
775
797
  edgeCount: edges.length
776
798
  });
777
799
  }
778
- return castChamferResult(raw);
800
+ return castChamferResult(shape, raw);
779
801
  }
780
802
  function perEdgeUnsupported(kernelId, cause) {
781
- return require_errors.err(require_errors.unsupportedError(require_errors.BrepErrorCode.UNSUPPORTED_CAPABILITY, `chamferDistAngles: the ${kernelId} kernel cannot give each edge its own distance and angle`, cause, { kernel: kernelId }, "Give every edge the same { distance, angle }, or use the occt-wasm kernel (5.9.0 or later)"));
803
+ return require_errors.err(require_errors.unsupportedError(require_errors.BrepErrorCode.UNSUPPORTED_CAPABILITY, `chamferDistAngles: the ${kernelId} kernel cannot give each edge its own distance and angle`, cause, { kernel: kernelId }, "Use the occt-wasm kernel (5.9.0 or later), or give every edge the same { distance, angle } on a kernel that has a distance-angle chamfer"));
782
804
  }
783
805
  /**
784
806
  * Chamfer each edge by its own distance and angle, in one operation.
785
807
  *
786
808
  * Edges that all share one distance and angle go through
787
- * {@link chamferDistAngle}, which every kernel provides. Different values need
788
- * a kernel with a per-edge distance-angle chamfer (occt-wasm 5.9.0 or later);
789
- * on any other kernel the result is an `UNSUPPORTED_CAPABILITY` error. On
809
+ * {@link chamferDistAngle}, which every kernel but brepkit provides. Different
810
+ * values need a kernel with a per-edge distance-angle chamfer (occt-wasm 5.9.0
811
+ * or later); on any other kernel the result is an `UNSUPPORTED_CAPABILITY` error. On
790
812
  * occt-wasm the edges of one tangent-continuous contour must share their
791
813
  * distance and angle, or the result is `CHAMFER_ANGLE_FAILED`.
792
814
  *
@@ -818,7 +840,7 @@ function chamferDistAngles(shape, entries) {
818
840
  if (require_occtWasmAdapter.isUnsupportedKernelOperationError(e)) return perEdgeUnsupported(kernel.kernelId, e);
819
841
  return chamferAngleFailed("chamferDistAngles", e, edges, { edgeCount: entries.length });
820
842
  }
821
- return castChamferResult(raw);
843
+ return castChamferResult(shape, raw);
822
844
  }
823
845
  // src/topology/nurbsFns.ts
824
846
  /**
@@ -1208,6 +1230,8 @@ function filletWithEvolution(shape, edges, radius) {
1208
1230
  * @param shape - The shape to modify.
1209
1231
  * @param edges - Edges to chamfer. Pass `undefined` to chamfer all edges.
1210
1232
  * @param distance - Symmetric distance, asymmetric `[d1, d2]`, or per-edge callback.
1233
+ * @returns Err `UNSUPPORTED_CAPABILITY` when the kernel cannot build the
1234
+ * distances asked for (brepkit has no asymmetric chamfer).
1211
1235
  */
1212
1236
  function chamferWithEvolution(shape, edges, distance) {
1213
1237
  const check = validateNotNull(shape, "chamferWithEvolution: shape");
@@ -1241,6 +1265,7 @@ function chamferWithEvolution(shape, edges, distance) {
1241
1265
  evolution
1242
1266
  });
1243
1267
  } catch (e) {
1268
+ if (require_occtWasmAdapter.isUnsupportedKernelOperationError(e)) return require_errors.err(chamferUnsupportedError(e));
1244
1269
  const raw = e instanceof Error ? e.message : String(e);
1245
1270
  return require_errors.err(require_errors.kernelError("CHAMFER_FAILED", `Chamfer operation failed: ${raw}`, e, {
1246
1271
  operation: "chamfer",
@@ -1,12 +1,12 @@
1
- const require_shapeTypes = require("./shapeTypes-C06KHgTm.cjs");
1
+ const require_shapeTypes = require("./shapeTypes-6tBG0xrR.cjs");
2
2
  const require_errors = require("./errors-O_blYTWT.cjs");
3
- const require_topologyQueryFns = require("./topologyQueryFns-BUhKY2Kj.cjs");
3
+ const require_topologyQueryFns = require("./topologyQueryFns-t8CbgIAS.cjs");
4
4
  const require_constants = require("./constants-oee0S_x6.cjs");
5
5
  const require_vecOps = require("./vecOps-CrGEPPQM.cjs");
6
- const require_faceFns = require("./faceFns-Jo9hMVqL.cjs");
7
- const require_shapeFns = require("./shapeFns-D47cmLG8.cjs");
8
- const require_curveFns = require("./curveFns-B8mm5cou.cjs");
9
- const require_measureFns = require("./measureFns-D8uSDn-8.cjs");
6
+ const require_faceFns = require("./faceFns-ClpZLuHU.cjs");
7
+ const require_shapeFns = require("./shapeFns-CahtmyZr.cjs");
8
+ const require_curveFns = require("./curveFns-Dneh4D9N.cjs");
9
+ const require_measureFns = require("./measureFns-_Q-bggOu.cjs");
10
10
  // src/utils/vec2d.ts
11
11
  /** Precision for curve intersection and parameter operations. */
12
12
  var PRECISION_INTERSECTION = 1e-9;
@@ -1,12 +1,12 @@
1
- import { q as getKernel, y as isFace } from "./shapeTypes-DoPnZHn_.js";
1
+ import { q as getKernel, y as isFace } from "./shapeTypes-DZGS7hgn.js";
2
2
  import { E as ok, g as err, o as queryError, x as isOk } from "./errors-BTccWbtE.js";
3
- import { c as getFaces, f as getVertices, p as getWires, s as getEdges } from "./topologyQueryFns-yOGEI9hO.js";
3
+ import { c as getFaces, f as getVertices, p as getWires, s as getEdges } from "./topologyQueryFns-BRXpZFCi.js";
4
4
  import { t as DEG2RAD } from "./constants-iraOnb2p.js";
5
5
  import { a as vecDot, d as vecNormalize } from "./vecOps-S-m9H_fe.js";
6
- import { l as normalAt, s as getSurfaceType } from "./faceFns-2jGPfqvB.js";
7
- import { a as isSameShape, n as getHashCode } from "./shapeFns-kFm-m8jh.js";
8
- import { f as getCurveType, i as curveIsClosed, o as curveLength } from "./curveFns-EsJgIpc6.js";
9
- import { n as measureArea } from "./measureFns--UKrACtx.js";
6
+ import { l as normalAt, s as getSurfaceType } from "./faceFns-Ek2vnYA8.js";
7
+ import { a as isSameShape, n as getHashCode } from "./shapeFns-24B0u4KE.js";
8
+ import { f as getCurveType, i as curveIsClosed, o as curveLength } from "./curveFns-DR1JAITD.js";
9
+ import { n as measureArea } from "./measureFns-NLCrquKi.js";
10
10
  // src/utils/vec2d.ts
11
11
  /** Precision for curve intersection and parameter operations. */
12
12
  var PRECISION_INTERSECTION = 1e-9;