brepjs 20.12.9 → 20.12.11

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 (95) hide show
  1. package/dist/2d.cjs +6 -6
  2. package/dist/2d.js +6 -6
  3. package/dist/{adjacencyFns-CfhGIMeR.cjs → adjacencyFns-DSGyqGyy.cjs} +3 -3
  4. package/dist/{adjacencyFns-1Cmjb2ot.js → adjacencyFns-DfPO5LGP.js} +3 -3
  5. package/dist/{blueprint-DbJVzU9F.cjs → blueprint-BY2aygt_.cjs} +5 -5
  6. package/dist/{blueprint-BVcuEefs.js → blueprint-DbNFPHzC.js} +5 -5
  7. package/dist/{blueprintFns-DePTHG1I.cjs → blueprintFns-AfHtvBKP.cjs} +2 -2
  8. package/dist/{blueprintFns-mD4pDyFP.js → blueprintFns-dU5V5WcD.js} +2 -2
  9. package/dist/{blueprintSketcher-B5CFmhjg.cjs → blueprintSketcher-DHp6AeEM.cjs} +3 -3
  10. package/dist/{blueprintSketcher-BrGmq-65.js → blueprintSketcher-nBI9PlsW.js} +3 -3
  11. package/dist/{boolean2D-CFKg1FJ_.cjs → boolean2D-C6TS6oFP.cjs} +4 -4
  12. package/dist/{boolean2D-BrHrY60M.js → boolean2D-DuWgyjOR.js} +4 -4
  13. package/dist/{booleanFns-CKDyqKz0.js → booleanFns-BwzBRGqj.js} +4 -4
  14. package/dist/{booleanFns-C640CeaY.cjs → booleanFns-D0qfjH0a.cjs} +4 -4
  15. package/dist/brepjs.cjs +72 -55
  16. package/dist/brepjs.js +72 -55
  17. package/dist/{cameraFns-hXUKJkLg.cjs → cameraFns-B9xKg36U.cjs} +3 -3
  18. package/dist/{cameraFns-DIbua1lC.js → cameraFns-CLkNCsYU.js} +3 -3
  19. package/dist/core.cjs +2 -2
  20. package/dist/core.js +2 -2
  21. package/dist/{cornerFinder-BYDkloVc.js → cornerFinder-CeyQ5JMA.js} +1 -1
  22. package/dist/{cornerFinder-ByBGU0r7.cjs → cornerFinder-Da8Dv4bp.cjs} +1 -1
  23. package/dist/{curveFns-Cqgtmhr0.cjs → curveFns-B8mm5cou.cjs} +1 -1
  24. package/dist/{curveFns-DphpaoQ4.js → curveFns-EsJgIpc6.js} +1 -1
  25. package/dist/{drawFns-Ch3ah8K9.js → drawFns-BQIHgHQg.js} +12 -12
  26. package/dist/{drawFns-GwVZX47o.cjs → drawFns-JZV96JGO.cjs} +12 -12
  27. package/dist/{faceFns-D4cDeMRf.js → faceFns-2jGPfqvB.js} +2 -2
  28. package/dist/{faceFns-BDqVGEoB.cjs → faceFns-Jo9hMVqL.cjs} +2 -2
  29. package/dist/{healingFns--vBKh5pa.js → healingFns-D6mUhe0Z.js} +85 -22
  30. package/dist/{healingFns-Fu7Xl8fu.cjs → healingFns-qioD81Of.cjs} +91 -22
  31. package/dist/{helpers-Wnq-YPWv.cjs → helpers-BvYkHZK7.cjs} +6 -6
  32. package/dist/{helpers-CroIo2SI.js → helpers-CsHdKbfF.js} +6 -6
  33. package/dist/{importFns-tHr15Lhm.cjs → importFns-BzzUvnKA.cjs} +5 -5
  34. package/dist/{importFns-D5Bt_44J.js → importFns-C8yUNPzJ.js} +5 -5
  35. package/dist/io/stepConfigFns.d.ts +1 -1
  36. package/dist/io.cjs +2 -2
  37. package/dist/io.js +2 -2
  38. package/dist/kernel/interfaces/modifierOps.d.ts +12 -0
  39. package/dist/kernel/occtWasm/helpers.d.ts +1 -0
  40. package/dist/kernel/occtWasm/modifierOps.d.ts +8 -0
  41. package/dist/kernel/occtWasm/occtWasmAdapter.cjs +1 -1
  42. package/dist/kernel/occtWasm/occtWasmAdapter.d.ts +5 -0
  43. package/dist/kernel/occtWasm/occtWasmAdapter.js +1 -1
  44. package/dist/kernel/occtWasm/occtWasmTypes.d.ts +4 -0
  45. package/dist/{loftFns-T0GxcPlB.cjs → loftFns-CnerVgTM.cjs} +1 -1
  46. package/dist/{loftFns-Bh_RuF7a.js → loftFns-jnQL_zpD.js} +1 -1
  47. package/dist/{measureFns-C3TZ5Fj9.js → measureFns-D3egqKcW.js} +3 -3
  48. package/dist/{measureFns-DGm6ndQY.cjs → measureFns-R85865k9.cjs} +3 -3
  49. package/dist/measurement.cjs +2 -2
  50. package/dist/measurement.js +2 -2
  51. package/dist/{meshFns-Go1XSyUh.js → meshFns-Bo4EQJFO.js} +4 -4
  52. package/dist/{meshFns-DDgZ3vpr.cjs → meshFns-Cs_qrlXI.cjs} +4 -4
  53. package/dist/{occtWasmAdapter-CZPZnpCe.cjs → occtWasmAdapter-BK--kx4R.cjs} +62 -12
  54. package/dist/{occtWasmAdapter-EM3EhKwk.js → occtWasmAdapter-C-Qi-jxS.js} +62 -12
  55. package/dist/operations.cjs +2 -2
  56. package/dist/operations.js +2 -2
  57. package/dist/{primitiveFns-CeRc4Sls.js → primitiveFns-NxbTqKy7.js} +5 -5
  58. package/dist/{primitiveFns-Dg_XWYtp.cjs → primitiveFns-eiM6OjWU.cjs} +5 -5
  59. package/dist/{principalBoxFns-BuK-ueAB.js → principalBoxFns-BgetPvvQ.js} +3 -3
  60. package/dist/{principalBoxFns-B5zdek3y.cjs → principalBoxFns-DepJW5im.cjs} +3 -3
  61. package/dist/projection.cjs +1 -1
  62. package/dist/projection.js +1 -1
  63. package/dist/query.cjs +2 -2
  64. package/dist/query.js +2 -2
  65. package/dist/{refResolveFns-WRcvVhV-.js → refResolveFns-Bl10yOGJ.js} +6 -6
  66. package/dist/{refResolveFns-CFwsYCKA.cjs → refResolveFns-DpWvqRm0.cjs} +6 -6
  67. package/dist/{shapeFns-DuxfaqTw.cjs → shapeFns-D47cmLG8.cjs} +2 -2
  68. package/dist/{shapeFns-CYjU8PsF.js → shapeFns-kFm-m8jh.js} +2 -2
  69. package/dist/shapeRef.cjs +1 -1
  70. package/dist/shapeRef.js +1 -1
  71. package/dist/{shapeTypes--7XBFlOD.cjs → shapeTypes-C06KHgTm.cjs} +1 -1
  72. package/dist/{shapeTypes-DvzbSivn.js → shapeTypes-DoPnZHn_.js} +1 -1
  73. package/dist/sketching.cjs +3 -3
  74. package/dist/sketching.js +3 -3
  75. package/dist/{solidBuilders-D0bIZX9K.cjs → solidBuilders-Dwm0hXn5.cjs} +3 -3
  76. package/dist/{solidBuilders-BqSVC4cB.js → solidBuilders-ZDGdvaTU.js} +3 -3
  77. package/dist/{surfaceBuilders--HOoTQad.js → surfaceBuilders-BBs6D6Km.js} +3 -3
  78. package/dist/{surfaceBuilders-CPQHyL_5.cjs → surfaceBuilders-D5kFAV1i.cjs} +3 -3
  79. package/dist/text.cjs +2 -2
  80. package/dist/text.js +2 -2
  81. package/dist/{textBlueprints-plsbHqiI.js → textBlueprints-BvZNjVwM.js} +8 -8
  82. package/dist/{textBlueprints-B4HzJzZM.cjs → textBlueprints-D3XhH1kb.cjs} +8 -8
  83. package/dist/{textMetrics-IIS6DUTr.js → textMetrics-BGPUxjiq.js} +1 -1
  84. package/dist/{textMetrics-CBwUIDI7.cjs → textMetrics-zk48vXsM.cjs} +1 -1
  85. package/dist/{threadFns-CmZFykpi.js → threadFns-CEr8JDsu.js} +7 -7
  86. package/dist/{threadFns-e8_26ZYw.cjs → threadFns-DNFoBBrH.cjs} +7 -7
  87. package/dist/topology/apiTypes.d.ts +6 -2
  88. package/dist/topology/chamferAngleFns.d.ts +24 -0
  89. package/dist/topology.cjs +9 -9
  90. package/dist/topology.js +9 -9
  91. package/dist/{topologyQueryFns-NszVx8a0.cjs → topologyQueryFns-BUhKY2Kj.cjs} +1 -1
  92. package/dist/{topologyQueryFns-BUzMuIs5.js → topologyQueryFns-yOGEI9hO.js} +1 -1
  93. package/dist/{validityTypes-CdY06B8c.js → validityTypes-CGrEOscY.js} +1 -1
  94. package/dist/{validityTypes-Ds4zNICF.cjs → validityTypes-lfyOkCQm.cjs} +1 -1
  95. package/package.json +2 -2
package/dist/2d.cjs CHANGED
@@ -1,11 +1,11 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_shapeTypes = require("./shapeTypes--7XBFlOD.cjs");
2
+ const require_shapeTypes = require("./shapeTypes-C06KHgTm.cjs");
3
3
  const require_errors = require("./errors-O_blYTWT.cjs");
4
- const require_topologyQueryFns = require("./topologyQueryFns-NszVx8a0.cjs");
5
- const require_blueprintSketcher = require("./blueprintSketcher-B5CFmhjg.cjs");
6
- const require_blueprint = require("./blueprint-DbJVzU9F.cjs");
7
- const require_boolean2D = require("./boolean2D-CFKg1FJ_.cjs");
8
- const require_blueprintFns = require("./blueprintFns-DePTHG1I.cjs");
4
+ const require_topologyQueryFns = require("./topologyQueryFns-BUhKY2Kj.cjs");
5
+ const require_blueprintSketcher = require("./blueprintSketcher-DHp6AeEM.cjs");
6
+ const require_blueprint = require("./blueprint-BY2aygt_.cjs");
7
+ const require_boolean2D = require("./boolean2D-C6TS6oFP.cjs");
8
+ const require_blueprintFns = require("./blueprintFns-AfHtvBKP.cjs");
9
9
  // src/core/curve2dHandle.ts
10
10
  /**
11
11
  * Wrap a raw kernel 2D curve handle with brand + disposal tracking.
package/dist/2d.js CHANGED
@@ -1,10 +1,10 @@
1
- import { F as createKernelHandle, J as getKernel2D, c as createEdge } from "./shapeTypes-DvzbSivn.js";
1
+ import { F as createKernelHandle, J as getKernel2D, c as createEdge } from "./shapeTypes-DoPnZHn_.js";
2
2
  import { E as ok, d as validationError, g as err, t as BrepErrorCode } from "./errors-BTccWbtE.js";
3
- import { E as kernelCallRaw } from "./topologyQueryFns-BUzMuIs5.js";
4
- import { a as Blueprints, i as CompoundBlueprint, r as organiseBlueprints } from "./blueprintSketcher-BrGmq-65.js";
5
- import { t as Blueprint, v as Curve2D, x as BoundingBox2d } from "./blueprint-BVcuEefs.js";
6
- 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-BrHrY60M.js";
7
- 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, 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-mD4pDyFP.js";
3
+ import { E as kernelCallRaw } from "./topologyQueryFns-yOGEI9hO.js";
4
+ import { a as Blueprints, i as CompoundBlueprint, r as organiseBlueprints } from "./blueprintSketcher-nBI9PlsW.js";
5
+ import { t as Blueprint, v as Curve2D, x as BoundingBox2d } from "./blueprint-DbNFPHzC.js";
6
+ 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-DuWgyjOR.js";
7
+ 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, 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-dU5V5WcD.js";
8
8
  // src/core/curve2dHandle.ts
9
9
  /**
10
10
  * Wrap a raw kernel 2D curve handle with brand + disposal tracking.
@@ -1,6 +1,6 @@
1
- const require_shapeTypes = require("./shapeTypes--7XBFlOD.cjs");
2
- const require_occtWasmAdapter = require("./occtWasmAdapter-CZPZnpCe.cjs");
3
- const require_topologyQueryFns = require("./topologyQueryFns-NszVx8a0.cjs");
1
+ const require_shapeTypes = require("./shapeTypes-C06KHgTm.cjs");
2
+ const require_occtWasmAdapter = require("./occtWasmAdapter-BK--kx4R.cjs");
3
+ const require_topologyQueryFns = require("./topologyQueryFns-BUhKY2Kj.cjs");
4
4
  const require_constants = require("./constants-oee0S_x6.cjs");
5
5
  // src/topology/adjacencyFns.ts
6
6
  /**
@@ -1,6 +1,6 @@
1
- import { E as GeometryCleanupError, K as getActiveKernelId, q as getKernel, r as castResultShapeWithKnownType, t as borrowShapeWithKnownType } from "./shapeTypes-DvzbSivn.js";
2
- import { j as isUnsupportedKernelOperationError } from "./occtWasmAdapter-EM3EhKwk.js";
3
- import { c as getFaces, f as getVertices, l as getOrCreateCache, s as getEdges } from "./topologyQueryFns-BUzMuIs5.js";
1
+ import { E as GeometryCleanupError, K as getActiveKernelId, q as getKernel, r as castResultShapeWithKnownType, t as borrowShapeWithKnownType } from "./shapeTypes-DoPnZHn_.js";
2
+ import { j as isUnsupportedKernelOperationError } from "./occtWasmAdapter-C-Qi-jxS.js";
3
+ import { c as getFaces, f as getVertices, l as getOrCreateCache, s as getEdges } from "./topologyQueryFns-yOGEI9hO.js";
4
4
  import { n as HASH_CODE_MAX } from "./constants-iraOnb2p.js";
5
5
  // src/topology/adjacencyFns.ts
6
6
  /**
@@ -1,14 +1,14 @@
1
- const require_shapeTypes = require("./shapeTypes--7XBFlOD.cjs");
1
+ const require_shapeTypes = require("./shapeTypes-C06KHgTm.cjs");
2
2
  const require_bug = require("./bug-CBcpIPuf.cjs");
3
3
  const require_errors = require("./errors-O_blYTWT.cjs");
4
4
  const require_constants = require("./constants-oee0S_x6.cjs");
5
5
  const require_types = require("./types-CjF9Rofr.cjs");
6
6
  const require_planeOps = require("./planeOps-DZfLToKZ.cjs");
7
- const require_faceFns = require("./faceFns-BDqVGEoB.cjs");
8
- const require_curveFns = require("./curveFns-Cqgtmhr0.cjs");
7
+ const require_faceFns = require("./faceFns-Jo9hMVqL.cjs");
8
+ const require_curveFns = require("./curveFns-B8mm5cou.cjs");
9
9
  const require_arrayAccess = require("./arrayAccess-DpJYARwv.cjs");
10
- const require_surfaceBuilders = require("./surfaceBuilders-CPQHyL_5.cjs");
11
- const require_helpers = require("./helpers-Wnq-YPWv.cjs");
10
+ const require_surfaceBuilders = require("./surfaceBuilders-D5kFAV1i.cjs");
11
+ const require_helpers = require("./helpers-BvYkHZK7.cjs");
12
12
  // src/2d/lib/definitions.ts
13
13
  /** Type guard that checks whether a value is a `Point2D`. */
14
14
  function isPoint2D(point) {
@@ -1,14 +1,14 @@
1
- import { B as unregisterFromCleanup, J as getKernel2D, R as registerForCleanup, c as createEdge, p as createWire, q as getKernel } from "./shapeTypes-DvzbSivn.js";
1
+ import { B as unregisterFromCleanup, J as getKernel2D, R as registerForCleanup, c as createEdge, p as createWire, q as getKernel } from "./shapeTypes-DoPnZHn_.js";
2
2
  import { i as wasmIndex, n as bug } from "./bug-ClMTAJhe.js";
3
3
  import { E as ok, P as unwrap, d as validationError, g as err, n as computationError } from "./errors-BTccWbtE.js";
4
4
  import { r as RAD2DEG, t as DEG2RAD } from "./constants-iraOnb2p.js";
5
5
  import { r as toVec3 } from "./types-CKXsIm9-.js";
6
6
  import { r as makePlane } from "./planeOps-D3yDuMux.js";
7
- import { _ as cast, h as uvCoordinates, i as faceGeomType, m as uvBounds, r as faceCenter } from "./faceFns-D4cDeMRf.js";
8
- import { p as getOrientation } from "./curveFns-DphpaoQ4.js";
7
+ import { _ as cast, h as uvCoordinates, i as faceGeomType, m as uvBounds, r as faceCenter } from "./faceFns-2jGPfqvB.js";
8
+ import { p as getOrientation } from "./curveFns-EsJgIpc6.js";
9
9
  import { n as getAtOrThrow, r as lastOrThrow, t as firstOrThrow } from "./arrayAccess-BpgouNir.js";
10
- import { r as makeFace } from "./surfaceBuilders--HOoTQad.js";
11
- import { l as add2d, m as normalize2d$1, p as distance2d, t as getSingleFace, v as samePoint, x as subtract2d, y as scalarMultiply2d } from "./helpers-CroIo2SI.js";
10
+ import { r as makeFace } from "./surfaceBuilders-BBs6D6Km.js";
11
+ import { l as add2d, m as normalize2d$1, p as distance2d, t as getSingleFace, v as samePoint, x as subtract2d, y as scalarMultiply2d } from "./helpers-CsHdKbfF.js";
12
12
  // src/2d/lib/definitions.ts
13
13
  /** Type guard that checks whether a value is a `Point2D`. */
14
14
  function isPoint2D(point) {
@@ -1,6 +1,6 @@
1
1
  const require_errors = require("./errors-O_blYTWT.cjs");
2
- const require_blueprintSketcher = require("./blueprintSketcher-B5CFmhjg.cjs");
3
- const require_blueprint = require("./blueprint-DbJVzU9F.cjs");
2
+ const require_blueprintSketcher = require("./blueprintSketcher-DHp6AeEM.cjs");
3
+ const require_blueprint = require("./blueprint-BY2aygt_.cjs");
4
4
  // src/2d/lib/curve2dFns.ts
5
5
  /**
6
6
  * Return a reversed copy of the curve (non-mutating).
@@ -1,6 +1,6 @@
1
1
  import { E as ok, d as validationError, g as err, t as BrepErrorCode } from "./errors-BTccWbtE.js";
2
- import { i as CompoundBlueprint } from "./blueprintSketcher-BrGmq-65.js";
3
- import { t as Blueprint } from "./blueprint-BVcuEefs.js";
2
+ import { i as CompoundBlueprint } from "./blueprintSketcher-nBI9PlsW.js";
3
+ import { t as Blueprint } from "./blueprint-DbNFPHzC.js";
4
4
  // src/2d/lib/curve2dFns.ts
5
5
  /**
6
6
  * Return a reversed copy of the curve (non-mutating).
@@ -1,10 +1,10 @@
1
- const require_shapeTypes = require("./shapeTypes--7XBFlOD.cjs");
1
+ const require_shapeTypes = require("./shapeTypes-C06KHgTm.cjs");
2
2
  const require_bug = require("./bug-CBcpIPuf.cjs");
3
3
  const require_errors = require("./errors-O_blYTWT.cjs");
4
4
  const require_constants = require("./constants-oee0S_x6.cjs");
5
5
  const require_arrayAccess = require("./arrayAccess-DpJYARwv.cjs");
6
- const require_helpers = require("./helpers-Wnq-YPWv.cjs");
7
- const require_blueprint = require("./blueprint-DbJVzU9F.cjs");
6
+ const require_helpers = require("./helpers-BvYkHZK7.cjs");
7
+ const require_blueprint = require("./blueprint-BY2aygt_.cjs");
8
8
  // node_modules/flatqueue/index.js
9
9
  /**
10
10
  * @typedef {Float64ArrayConstructor | Float32ArrayConstructor |
@@ -1,10 +1,10 @@
1
- import { J as getKernel2D, q as getKernel } from "./shapeTypes-DvzbSivn.js";
1
+ import { J as getKernel2D, q as getKernel } from "./shapeTypes-DoPnZHn_.js";
2
2
  import { i as wasmIndex, n as bug } from "./bug-ClMTAJhe.js";
3
3
  import { E as ok, P as unwrap, g as err, n as computationError, s as safeIndex, x as isOk } from "./errors-BTccWbtE.js";
4
4
  import { r as RAD2DEG, t as DEG2RAD } from "./constants-iraOnb2p.js";
5
5
  import { t as firstOrThrow } from "./arrayAccess-BpgouNir.js";
6
- import { _ as rotate2d, b as squareDistance2d, d as cartesianToPolar, f as crossProduct2d, g as polarToCartesian, h as polarAngle2d, l as add2d, p as distance2d, v as samePoint, x as subtract2d, y as scalarMultiply2d } from "./helpers-CroIo2SI.js";
7
- import { C as isPoint2D, b as normalize2d, c as make2dBezierCurve, d as make2dEllipseArc, g as approximateAsBSpline, h as make2dThreePointArc, l as make2dCircle, m as make2dTangentArc, n as asSVG, p as make2dSegmentCurve, r as viewbox, s as make2dArcFromCenter, t as Blueprint, v as Curve2D, x as BoundingBox2d } from "./blueprint-BVcuEefs.js";
6
+ import { _ as rotate2d, b as squareDistance2d, d as cartesianToPolar, f as crossProduct2d, g as polarToCartesian, h as polarAngle2d, l as add2d, p as distance2d, v as samePoint, x as subtract2d, y as scalarMultiply2d } from "./helpers-CsHdKbfF.js";
7
+ import { C as isPoint2D, b as normalize2d, c as make2dBezierCurve, d as make2dEllipseArc, g as approximateAsBSpline, h as make2dThreePointArc, l as make2dCircle, m as make2dTangentArc, n as asSVG, p as make2dSegmentCurve, r as viewbox, s as make2dArcFromCenter, t as Blueprint, v as Curve2D, x as BoundingBox2d } from "./blueprint-DbNFPHzC.js";
8
8
  // node_modules/flatqueue/index.js
9
9
  /**
10
10
  * @typedef {Float64ArrayConstructor | Float32ArrayConstructor |
@@ -1,10 +1,10 @@
1
1
  const require_bug = require("./bug-CBcpIPuf.cjs");
2
2
  const require_errors = require("./errors-O_blYTWT.cjs");
3
3
  const require_arrayAccess = require("./arrayAccess-DpJYARwv.cjs");
4
- const require_surfaceBuilders = require("./surfaceBuilders-CPQHyL_5.cjs");
5
- const require_blueprintSketcher = require("./blueprintSketcher-B5CFmhjg.cjs");
6
- const require_helpers = require("./helpers-Wnq-YPWv.cjs");
7
- const require_blueprint = require("./blueprint-DbJVzU9F.cjs");
4
+ const require_surfaceBuilders = require("./surfaceBuilders-D5kFAV1i.cjs");
5
+ const require_blueprintSketcher = require("./blueprintSketcher-DHp6AeEM.cjs");
6
+ const require_helpers = require("./helpers-BvYkHZK7.cjs");
7
+ const require_blueprint = require("./blueprint-BY2aygt_.cjs");
8
8
  // src/2d/blueprints/cannedBlueprints.ts
9
9
  /**
10
10
  * Create a regular polygon blueprint inscribed in a circle of the given radius.
@@ -1,10 +1,10 @@
1
1
  import { i as wasmIndex, n as bug } from "./bug-ClMTAJhe.js";
2
2
  import { P as unwrap, s as safeIndex } from "./errors-BTccWbtE.js";
3
3
  import { r as lastOrThrow } from "./arrayAccess-BpgouNir.js";
4
- import { v as zip } from "./surfaceBuilders--HOoTQad.js";
5
- import { a as Blueprints, i as CompoundBlueprint, l as intersectCurves, r as organiseBlueprints, t as BlueprintSketcher, u as Flatbush } from "./blueprintSketcher-BrGmq-65.js";
6
- import { f as crossProduct2d, o as PRECISION_INTERSECTION, v as samePoint$1, x as subtract2d } from "./helpers-CroIo2SI.js";
7
- import { S as removeDuplicatePoints, p as make2dSegmentCurve, t as Blueprint } from "./blueprint-BVcuEefs.js";
4
+ import { v as zip } from "./surfaceBuilders-BBs6D6Km.js";
5
+ import { a as Blueprints, i as CompoundBlueprint, l as intersectCurves, r as organiseBlueprints, t as BlueprintSketcher, u as Flatbush } from "./blueprintSketcher-nBI9PlsW.js";
6
+ import { f as crossProduct2d, o as PRECISION_INTERSECTION, v as samePoint$1, x as subtract2d } from "./helpers-CsHdKbfF.js";
7
+ import { S as removeDuplicatePoints, p as make2dSegmentCurve, t as Blueprint } from "./blueprint-DbNFPHzC.js";
8
8
  // src/2d/blueprints/cannedBlueprints.ts
9
9
  /**
10
10
  * Create a regular polygon blueprint inscribed in a circle of the given radius.
@@ -1,13 +1,13 @@
1
- import { D as getShapeKind, E as GeometryCleanupError, G as _usingCtx, h as disposeResultShape, n as castResultShape, q as getKernel, x as isShape3D } from "./shapeTypes-DvzbSivn.js";
1
+ import { D as getShapeKind, E as GeometryCleanupError, G as _usingCtx, h as disposeResultShape, n as castResultShape, q as getKernel, x as isShape3D } from "./shapeTypes-DoPnZHn_.js";
2
2
  import { E as ok, P as unwrap, b as isErr, d as validationError, g as err, i as kernelError, l as typeCastError, t as BrepErrorCode } from "./errors-BTccWbtE.js";
3
- import { C as subShapeHashes, c as getFaces, f as getVertices, p as getWires, s as getEdges } from "./topologyQueryFns-BUzMuIs5.js";
3
+ import { C as subShapeHashes, c as getFaces, f as getVertices, p as getWires, s as getEdges } from "./topologyQueryFns-yOGEI9hO.js";
4
4
  import { n as HASH_CODE_MAX } from "./constants-iraOnb2p.js";
5
5
  import { a as vecDot, g as vecSub, h as vecScale, t as vecAdd } from "./vecOps-S-m9H_fe.js";
6
6
  import { o as resolvePlane } from "./planeOps-D3yDuMux.js";
7
- import { d as getFaceOrigins, f as propagateOriginsByHash, p as propagateOriginsFromEvolution } from "./solidBuilders-BqSVC4cB.js";
7
+ import { d as getFaceOrigins, f as propagateOriginsByHash, p as propagateOriginsFromEvolution } from "./solidBuilders-ZDGdvaTU.js";
8
8
  import { n as hasFaceRoles, r as propagateFaceRolesFromEvolution } from "./faceRoleFns-BPxzQF-n.js";
9
9
  import { n as getAtOrThrow, t as firstOrThrow } from "./arrayAccess-BpgouNir.js";
10
- import { r as makeFace } from "./surfaceBuilders--HOoTQad.js";
10
+ import { r as makeFace } from "./surfaceBuilders-BBs6D6Km.js";
11
11
  // src/topology/metadata/faceTagFns.ts
12
12
  var shapeTagStore = /* @__PURE__ */ new WeakMap();
13
13
  var tagMetadataStore = /* @__PURE__ */ new WeakMap();
@@ -1,13 +1,13 @@
1
- const require_shapeTypes = require("./shapeTypes--7XBFlOD.cjs");
1
+ const require_shapeTypes = require("./shapeTypes-C06KHgTm.cjs");
2
2
  const require_errors = require("./errors-O_blYTWT.cjs");
3
- const require_topologyQueryFns = require("./topologyQueryFns-NszVx8a0.cjs");
3
+ const require_topologyQueryFns = require("./topologyQueryFns-BUhKY2Kj.cjs");
4
4
  const require_constants = require("./constants-oee0S_x6.cjs");
5
5
  const require_vecOps = require("./vecOps-CrGEPPQM.cjs");
6
6
  const require_planeOps = require("./planeOps-DZfLToKZ.cjs");
7
- const require_solidBuilders = require("./solidBuilders-D0bIZX9K.cjs");
7
+ const require_solidBuilders = require("./solidBuilders-Dwm0hXn5.cjs");
8
8
  const require_faceRoleFns = require("./faceRoleFns-Db5bYj4Q.cjs");
9
9
  const require_arrayAccess = require("./arrayAccess-DpJYARwv.cjs");
10
- const require_surfaceBuilders = require("./surfaceBuilders-CPQHyL_5.cjs");
10
+ const require_surfaceBuilders = require("./surfaceBuilders-D5kFAV1i.cjs");
11
11
  // src/topology/metadata/faceTagFns.ts
12
12
  var shapeTagStore = /* @__PURE__ */ new WeakMap();
13
13
  var tagMetadataStore = /* @__PURE__ */ new WeakMap();
package/dist/brepjs.cjs CHANGED
@@ -1,42 +1,42 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_rolldown_runtime = require("./rolldown-runtime-BW-eSwOZ.cjs");
3
- const require_shapeTypes = require("./shapeTypes--7XBFlOD.cjs");
4
- const require_occtWasmAdapter = require("./occtWasmAdapter-CZPZnpCe.cjs");
3
+ const require_shapeTypes = require("./shapeTypes-C06KHgTm.cjs");
4
+ const require_occtWasmAdapter = require("./occtWasmAdapter-BK--kx4R.cjs");
5
5
  const require_bug = require("./bug-CBcpIPuf.cjs");
6
6
  const require_errors = require("./errors-O_blYTWT.cjs");
7
- const require_topologyQueryFns = require("./topologyQueryFns-NszVx8a0.cjs");
8
- const require_validityTypes = require("./validityTypes-Ds4zNICF.cjs");
7
+ const require_topologyQueryFns = require("./topologyQueryFns-BUhKY2Kj.cjs");
8
+ const require_validityTypes = require("./validityTypes-lfyOkCQm.cjs");
9
9
  const require_constants = require("./constants-oee0S_x6.cjs");
10
10
  const require_types = require("./types-CjF9Rofr.cjs");
11
11
  const require_vecOps = require("./vecOps-CrGEPPQM.cjs");
12
12
  const require_planeOps = require("./planeOps-DZfLToKZ.cjs");
13
- const require_faceFns = require("./faceFns-BDqVGEoB.cjs");
14
- const require_solidBuilders = require("./solidBuilders-D0bIZX9K.cjs");
15
- const require_booleanFns = require("./booleanFns-C640CeaY.cjs");
16
- const require_primitiveFns = require("./primitiveFns-Dg_XWYtp.cjs");
17
- const require_shapeFns = require("./shapeFns-DuxfaqTw.cjs");
18
- const require_curveFns = require("./curveFns-Cqgtmhr0.cjs");
19
- const require_meshFns = require("./meshFns-DDgZ3vpr.cjs");
13
+ const require_faceFns = require("./faceFns-Jo9hMVqL.cjs");
14
+ const require_solidBuilders = require("./solidBuilders-Dwm0hXn5.cjs");
15
+ const require_booleanFns = require("./booleanFns-D0qfjH0a.cjs");
16
+ const require_primitiveFns = require("./primitiveFns-eiM6OjWU.cjs");
17
+ const require_shapeFns = require("./shapeFns-D47cmLG8.cjs");
18
+ const require_curveFns = require("./curveFns-B8mm5cou.cjs");
19
+ const require_meshFns = require("./meshFns-Cs_qrlXI.cjs");
20
20
  const require_arrayAccess = require("./arrayAccess-DpJYARwv.cjs");
21
- const require_surfaceBuilders = require("./surfaceBuilders-CPQHyL_5.cjs");
22
- const require_healingFns = require("./healingFns-Fu7Xl8fu.cjs");
23
- const require_threadFns = require("./threadFns-e8_26ZYw.cjs");
24
- const require_blueprintSketcher = require("./blueprintSketcher-B5CFmhjg.cjs");
25
- const require_helpers = require("./helpers-Wnq-YPWv.cjs");
26
- const require_blueprint = require("./blueprint-DbJVzU9F.cjs");
27
- const require_drawFns = require("./drawFns-GwVZX47o.cjs");
28
- const require_measureFns = require("./measureFns-DGm6ndQY.cjs");
29
- const require_cornerFinder = require("./cornerFinder-ByBGU0r7.cjs");
30
- const require_boolean2D = require("./boolean2D-CFKg1FJ_.cjs");
31
- const require_blueprintFns = require("./blueprintFns-DePTHG1I.cjs");
32
- const require_importFns = require("./importFns-tHr15Lhm.cjs");
33
- const require_textBlueprints = require("./textBlueprints-B4HzJzZM.cjs");
34
- const require_loftFns = require("./loftFns-T0GxcPlB.cjs");
35
- const require_refResolveFns = require("./refResolveFns-CFwsYCKA.cjs");
36
- const require_adjacencyFns = require("./adjacencyFns-CfhGIMeR.cjs");
37
- const require_cameraFns = require("./cameraFns-hXUKJkLg.cjs");
38
- const require_textMetrics = require("./textMetrics-CBwUIDI7.cjs");
39
- const require_principalBoxFns = require("./principalBoxFns-B5zdek3y.cjs");
21
+ const require_surfaceBuilders = require("./surfaceBuilders-D5kFAV1i.cjs");
22
+ const require_healingFns = require("./healingFns-qioD81Of.cjs");
23
+ const require_threadFns = require("./threadFns-DNFoBBrH.cjs");
24
+ const require_blueprintSketcher = require("./blueprintSketcher-DHp6AeEM.cjs");
25
+ const require_helpers = require("./helpers-BvYkHZK7.cjs");
26
+ const require_blueprint = require("./blueprint-BY2aygt_.cjs");
27
+ const require_drawFns = require("./drawFns-JZV96JGO.cjs");
28
+ const require_measureFns = require("./measureFns-R85865k9.cjs");
29
+ const require_cornerFinder = require("./cornerFinder-Da8Dv4bp.cjs");
30
+ const require_boolean2D = require("./boolean2D-C6TS6oFP.cjs");
31
+ const require_blueprintFns = require("./blueprintFns-AfHtvBKP.cjs");
32
+ const require_importFns = require("./importFns-BzzUvnKA.cjs");
33
+ const require_textBlueprints = require("./textBlueprints-D3XhH1kb.cjs");
34
+ const require_loftFns = require("./loftFns-CnerVgTM.cjs");
35
+ const require_refResolveFns = require("./refResolveFns-DpWvqRm0.cjs");
36
+ const require_adjacencyFns = require("./adjacencyFns-DSGyqGyy.cjs");
37
+ const require_cameraFns = require("./cameraFns-B9xKg36U.cjs");
38
+ const require_textMetrics = require("./textMetrics-zk48vXsM.cjs");
39
+ const require_principalBoxFns = require("./principalBoxFns-DepJW5im.cjs");
40
40
  const require_workerPool = require("./workerPool-D5tiNXrI.cjs");
41
41
  // src/kernel/types.ts
42
42
  /** Check if the kernel supports hidden-line-removal projection. */
@@ -7919,28 +7919,45 @@ function resolveFaces(facesOrFn, shape) {
7919
7919
  if (typeof facesOrFn === "object" && "findAll" in facesOrFn) return facesOrFn.findAll(shape);
7920
7920
  return facesOrFn(require_helpers.faceFinder()).findAll(shape);
7921
7921
  }
7922
- function normalizeChamferDistance(distance) {
7923
- if (typeof distance === "object" && !Array.isArray(distance) && typeof distance !== "function") return {
7924
- mode: "distAngle",
7925
- distance: distance.distance,
7926
- angle: distance.angle
7927
- };
7928
- if (typeof distance === "function") {
7929
- const wrappedFn = (edge) => {
7930
- const val = distance(edge);
7931
- if (val === null) return null;
7932
- if (typeof val === "object" && !Array.isArray(val)) return val.distance;
7933
- return val;
7934
- };
7935
- return {
7936
- mode: "standard",
7937
- distance: wrappedFn
7938
- };
7922
+ function isDistAngle(value) {
7923
+ return typeof value === "object" && value !== null && !Array.isArray(value);
7924
+ }
7925
+ function skipsEdge(value) {
7926
+ return typeof value === "number" ? value <= 0 : value[0] <= 0 || value[1] <= 0;
7927
+ }
7928
+ /**
7929
+ * Chamfer with a per-edge callback, run once per edge. One kernel operation
7930
+ * takes either distances or distance-angle pairs, so a callback that keeps
7931
+ * edges of both kinds is rejected: two chamfers in sequence would not meet the
7932
+ * way one does where those edges share a vertex.
7933
+ */
7934
+ function chamferEachEdge(shape, edges, distanceOf) {
7935
+ const distances = /* @__PURE__ */ new Map();
7936
+ const distAngles = [];
7937
+ try {
7938
+ for (const edge of edges) {
7939
+ const value = distanceOf(edge);
7940
+ if (value === null) continue;
7941
+ if (!isDistAngle(value)) distances.set(edge, value);
7942
+ else if (value.distance > 0) distAngles.push({
7943
+ edge,
7944
+ ...value
7945
+ });
7946
+ }
7947
+ } catch (e) {
7948
+ const raw = e instanceof Error ? e.message : String(e);
7949
+ return require_errors.err(require_errors.kernelError("CHAMFER_FAILED", `Chamfer operation failed: ${raw}`, e, {
7950
+ operation: "chamfer",
7951
+ edgeCount: edges.length
7952
+ }));
7939
7953
  }
7940
- return {
7941
- mode: "standard",
7942
- distance
7943
- };
7954
+ if (distAngles.length === 0) return require_healingFns.chamfer(shape, edges, (edge) => distances.get(edge) ?? null);
7955
+ const plainCount = [...distances.values()].filter((v) => !skipsEdge(v)).length;
7956
+ if (plainCount > 0) return require_errors.err(require_errors.validationError(require_errors.BrepErrorCode.INVALID_CHAMFER_DISTANCE, `chamfer: the distance callback returned a plain distance for ${plainCount} edge(s) and { distance, angle } for ${distAngles.length}; one chamfer cannot mix the two`, void 0, {
7957
+ plainEdgeCount: plainCount,
7958
+ distAngleEdgeCount: distAngles.length
7959
+ }, "Return { distance, angle } for every edge, or chamfer the two groups of edges in separate calls"));
7960
+ return require_healingFns.chamferDistAngles(shape, distAngles);
7944
7961
  }
7945
7962
  function fillet(shape, edgesOrRadius, maybeRadius) {
7946
7963
  const s = resolve(shape);
@@ -7968,12 +7985,12 @@ function chamfer(shape, edgesOrDistance, maybeDistance) {
7968
7985
  edges = void 0;
7969
7986
  distance = edgesOrDistance;
7970
7987
  }
7971
- const normalized = normalizeChamferDistance(distance);
7972
- if (normalized.mode === "distAngle") {
7988
+ if (typeof distance === "function") return chamferEachEdge(s, edges ?? require_topologyQueryFns.getEdges(s), distance);
7989
+ if (isDistAngle(distance)) {
7973
7990
  const selectedEdges = edges ?? require_topologyQueryFns.getEdges(s);
7974
- return require_healingFns.chamferDistAngle(s, [...selectedEdges], normalized.distance, normalized.angle);
7991
+ return require_healingFns.chamferDistAngle(s, [...selectedEdges], distance.distance, distance.angle);
7975
7992
  }
7976
- return require_healingFns.chamfer(s, edges, normalized.distance);
7993
+ return require_healingFns.chamfer(s, edges, distance);
7977
7994
  }
7978
7995
  /** Create a hollow shell by removing faces and offsetting remaining walls. */
7979
7996
  function shell(shape, faces, thickness, options) {
package/dist/brepjs.js CHANGED
@@ -1,40 +1,40 @@
1
- import { $ as initFromOC, A as as3D, C as isSolid, D as getShapeKind, E as GeometryCleanupError, F as createKernelHandle, G as _usingCtx, H as withScope, I as getDisposalStats, J as getKernel2D, K as getActiveKernelId, L as isLive, M as is3D, N as DisposalScope, P as createHandle, Q as initFromManifold, S as isShell, T as isWire, U as withScopeResult, V as withArenaCheckpoint, W as withScopeResultAsync, X as getKernelTier, Y as getKernelCapabilities, Z as init, _ as isCompound, a as castShape3D, at as withTier, b as isShape1D, c as createEdge, ct as resetPerformanceStats, d as createSolid, et as prewarm, f as createVertex, h as disposeResultShape, i as castShape, it as withQuality, j as is2D, k as as2D, l as createFace, lt as currentQuality, n as castResultShape, nt as registerKernelTier, ot as BrepkitAdapter, p as createWire, q as getKernel, rt as withKernel, s as createCompound, st as getPerformanceStats, tt as registerKernel, u as createShell, ut as qualityDeflection, v as isEdge, w as isVertex, x as isShape3D, y as isFace, z as resetDisposalStats } from "./shapeTypes-DvzbSivn.js";
2
- import { M as DEFAULT_CAPABILITIES, N as EXACT_BREP_CAPABILITIES, t as OcctWasmAdapter } from "./occtWasmAdapter-EM3EhKwk.js";
1
+ import { $ as initFromOC, A as as3D, C as isSolid, D as getShapeKind, E as GeometryCleanupError, F as createKernelHandle, G as _usingCtx, H as withScope, I as getDisposalStats, J as getKernel2D, K as getActiveKernelId, L as isLive, M as is3D, N as DisposalScope, P as createHandle, Q as initFromManifold, S as isShell, T as isWire, U as withScopeResult, V as withArenaCheckpoint, W as withScopeResultAsync, X as getKernelTier, Y as getKernelCapabilities, Z as init, _ as isCompound, a as castShape3D, at as withTier, b as isShape1D, c as createEdge, ct as resetPerformanceStats, d as createSolid, et as prewarm, f as createVertex, h as disposeResultShape, i as castShape, it as withQuality, j as is2D, k as as2D, l as createFace, lt as currentQuality, n as castResultShape, nt as registerKernelTier, ot as BrepkitAdapter, p as createWire, q as getKernel, rt as withKernel, s as createCompound, st as getPerformanceStats, tt as registerKernel, u as createShell, ut as qualityDeflection, v as isEdge, w as isVertex, x as isShape3D, y as isFace, z as resetDisposalStats } from "./shapeTypes-DoPnZHn_.js";
2
+ import { M as DEFAULT_CAPABILITIES, N as EXACT_BREP_CAPABILITIES, t as OcctWasmAdapter } from "./occtWasmAdapter-C-Qi-jxS.js";
3
3
  import { i as wasmIndex, n as bug, t as BrepBugError } from "./bug-ClMTAJhe.js";
4
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-BTccWbtE.js";
5
- import { D as kernelCallScoped, E as kernelCallRaw, T as kernelCall, _ 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 vertexPosition, x as iterWires, y as iterSolids } from "./topologyQueryFns-BUzMuIs5.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-CdY06B8c.js";
5
+ import { D as kernelCallScoped, E as kernelCallRaw, T as kernelCall, _ 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 vertexPosition, x as iterWires, y as iterSolids } from "./topologyQueryFns-yOGEI9hO.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-CGrEOscY.js";
7
7
  import { n as HASH_CODE_MAX, r as RAD2DEG, t as DEG2RAD } from "./constants-iraOnb2p.js";
8
8
  import { n as toVec2, r as toVec3, t as resolveDirection } from "./types-CKXsIm9-.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-S-m9H_fe.js";
10
10
  import { i as pivotPlane, n as createPlane, o as resolvePlane, r as makePlane, s as translatePlane, t as createNamedPlane } from "./planeOps-D3yDuMux.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-D4cDeMRf.js";
12
- import { d as getFaceOrigins, m as setShapeOrigin, r as makeCylinder, t as makeCompound } from "./solidBuilders-BqSVC4cB.js";
13
- import { C as getTagMetadata, S as getFaceTags, T as tagFaces, _ as colorShape, a as fuseAll$2, b as parseColor, c as sectionToFace$1, f as hasAnyMetadata, g as colorFaces, h as propagateMetadataThroughRelocation, i as fuse$2, l as slice$1, n as cut$2, o as intersect$2, r as cutAll$2, s as section$1, t as booleanPipeline, u as split$1, v as getFaceColor, w as setTagMetadata, x as findFacesByTag, y as getShapeColor } from "./booleanFns-CKDyqKz0.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-CeRc4Sls.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-CYjU8PsF.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-DphpaoQ4.js";
17
- import { a as meshEdges$1, c as meshMultiLOD, d as buildMeshCacheKey, f as clearMeshCache, i as mesh$1, l as scaleDefaultTolerance, n as exportSTEP, o as meshLODs, p as createMeshCache, r as exportSTL, s as meshLODsProgressive, t as exportIGES } from "./meshFns-Go1XSyUh.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-2jGPfqvB.js";
12
+ import { d as getFaceOrigins, m as setShapeOrigin, r as makeCylinder, t as makeCompound } from "./solidBuilders-ZDGdvaTU.js";
13
+ import { C as getTagMetadata, S as getFaceTags, T as tagFaces, _ as colorShape, a as fuseAll$2, b as parseColor, c as sectionToFace$1, f as hasAnyMetadata, g as colorFaces, h as propagateMetadataThroughRelocation, i as fuse$2, l as slice$1, n as cut$2, o as intersect$2, r as cutAll$2, s as section$1, t as booleanPipeline, u as split$1, v as getFaceColor, w as setTagMetadata, x as findFacesByTag, y as getShapeColor } from "./booleanFns-BwzBRGqj.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-NxbTqKy7.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-kFm-m8jh.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-EsJgIpc6.js";
17
+ import { a as meshEdges$1, c as meshMultiLOD, d as buildMeshCacheKey, f as clearMeshCache, i as mesh$1, l as scaleDefaultTolerance, n as exportSTEP, o as meshLODs, p as createMeshCache, r as exportSTL, s as meshLODsProgressive, t as exportIGES } from "./meshFns-Bo4EQJFO.js";
18
18
  import { n as getAtOrThrow, r as lastOrThrow, t as firstOrThrow } from "./arrayAccess-BpgouNir.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--HOoTQad.js";
20
- import { A as variableFillet, C as chamfer$2, D as removeFaces$1, E as offset$1, F as toLineGeometryData, M as toGroupedBufferGeometryData, N as toLODGeometryData, O as shell$2, P as toLODGeometryLevels, 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 toBufferGeometryData, k as thicken$1, 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--vBKh5pa.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-CmZFykpi.js";
22
- import { n as BaseSketcher2d, r as organiseBlueprints, t as BlueprintSketcher } from "./blueprintSketcher-BrGmq-65.js";
23
- import { a as createTypedFinder, i as wireFinder, n as edgeFinder, r as faceFinder, t as getSingleFace } from "./helpers-CroIo2SI.js";
24
- import { _ as approximateAsSvgCompatibleCurve, o as ellipseArcFlags } from "./blueprint-BVcuEefs.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-Ch3ah8K9.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-C3TZ5Fj9.js";
27
- import { t as cornerFinder } from "./cornerFinder-BYDkloVc.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-BrHrY60M.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-mD4pDyFP.js";
30
- import { a as exportSTEPConfigured, c as exportThreeMF, d as exportGlb, f as exportGltf, i as sewMeshToSolid, l as blueprintToDXF, n as importSTEP, o as importSVG, p as exportOBJ, r as importSTL, s as importSVGPathD, t as importIGES, u as exportDXF } from "./importFns-D5Bt_44J.js";
31
- import { S as revolve$2, a as Sketches, b as extrude$2, c as compoundSketchFace, d as sketchExtrude, f as sketchFace, g as sketchWires, h as sketchSweep, i as setFallbackFont, l as compoundSketchLoft, m as sketchRevolve, n as getFont, o as Sketch, p as sketchLoft, r as loadFont, s as compoundSketchExtrude, t as textBlueprints, u as compoundSketchRevolve, x as extrudeAll, y as CompoundSketch } from "./textBlueprints-plsbHqiI.js";
32
- 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-Bh_RuF7a.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-WRcvVhV-.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-1Cmjb2ot.js";
35
- import { a as makeProjectedEdges, i as projectEdges, n as cameraLookAt, r as createCamera, s as isProjectionPlane, t as cameraFromPlane } from "./cameraFns-DIbua1lC.js";
36
- import { n as textMetrics, r as sketchText, t as fontMetrics } from "./textMetrics-IIS6DUTr.js";
37
- import { t as principalBoundingBox } from "./principalBoxFns-BuK-ueAB.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-BBs6D6Km.js";
20
+ import { A as thicken$1, C as chamferDistAngles, D as offset$1, E as fillet$2, F as toLODGeometryLevels, I as toLineGeometryData, M as toBufferGeometryData, N as toGroupedBufferGeometryData, O as removeFaces$1, P as toLODGeometryData, S as chamferDistAngle, T as draft$1, _ 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 variableFillet, k as shell$2, 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 chamfer$2, x as getNurbsSurfaceData, y as fuseAllBisect } from "./healingFns-D6mUhe0Z.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-CEr8JDsu.js";
22
+ import { n as BaseSketcher2d, r as organiseBlueprints, t as BlueprintSketcher } from "./blueprintSketcher-nBI9PlsW.js";
23
+ import { a as createTypedFinder, i as wireFinder, n as edgeFinder, r as faceFinder, t as getSingleFace } from "./helpers-CsHdKbfF.js";
24
+ import { _ as approximateAsSvgCompatibleCurve, o as ellipseArcFlags } from "./blueprint-DbNFPHzC.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-BQIHgHQg.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-D3egqKcW.js";
27
+ import { t as cornerFinder } from "./cornerFinder-CeyQ5JMA.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-DuWgyjOR.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-dU5V5WcD.js";
30
+ import { a as exportSTEPConfigured, c as exportThreeMF, d as exportGlb, f as exportGltf, i as sewMeshToSolid, l as blueprintToDXF, n as importSTEP, o as importSVG, p as exportOBJ, r as importSTL, s as importSVGPathD, t as importIGES, u as exportDXF } from "./importFns-C8yUNPzJ.js";
31
+ import { S as revolve$2, a as Sketches, b as extrude$2, c as compoundSketchFace, d as sketchExtrude, f as sketchFace, g as sketchWires, h as sketchSweep, i as setFallbackFont, l as compoundSketchLoft, m as sketchRevolve, n as getFont, o as Sketch, p as sketchLoft, r as loadFont, s as compoundSketchExtrude, t as textBlueprints, u as compoundSketchRevolve, x as extrudeAll, y as CompoundSketch } from "./textBlueprints-BvZNjVwM.js";
32
+ 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-jnQL_zpD.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-Bl10yOGJ.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-DfPO5LGP.js";
35
+ import { a as makeProjectedEdges, i as projectEdges, n as cameraLookAt, r as createCamera, s as isProjectionPlane, t as cameraFromPlane } from "./cameraFns-CLkNCsYU.js";
36
+ import { n as textMetrics, r as sketchText, t as fontMetrics } from "./textMetrics-BGPUxjiq.js";
37
+ import { t as principalBoundingBox } from "./principalBoxFns-BgetPvvQ.js";
38
38
  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-Bc5hmJc4.js";
39
39
  // \0rolldown/runtime.js
40
40
  var __defProp = Object.defineProperty;
@@ -7928,28 +7928,45 @@ function resolveFaces(facesOrFn, shape) {
7928
7928
  if (typeof facesOrFn === "object" && "findAll" in facesOrFn) return facesOrFn.findAll(shape);
7929
7929
  return facesOrFn(faceFinder()).findAll(shape);
7930
7930
  }
7931
- function normalizeChamferDistance(distance) {
7932
- if (typeof distance === "object" && !Array.isArray(distance) && typeof distance !== "function") return {
7933
- mode: "distAngle",
7934
- distance: distance.distance,
7935
- angle: distance.angle
7936
- };
7937
- if (typeof distance === "function") {
7938
- const wrappedFn = (edge) => {
7939
- const val = distance(edge);
7940
- if (val === null) return null;
7941
- if (typeof val === "object" && !Array.isArray(val)) return val.distance;
7942
- return val;
7943
- };
7944
- return {
7945
- mode: "standard",
7946
- distance: wrappedFn
7947
- };
7931
+ function isDistAngle(value) {
7932
+ return typeof value === "object" && value !== null && !Array.isArray(value);
7933
+ }
7934
+ function skipsEdge(value) {
7935
+ return typeof value === "number" ? value <= 0 : value[0] <= 0 || value[1] <= 0;
7936
+ }
7937
+ /**
7938
+ * Chamfer with a per-edge callback, run once per edge. One kernel operation
7939
+ * takes either distances or distance-angle pairs, so a callback that keeps
7940
+ * edges of both kinds is rejected: two chamfers in sequence would not meet the
7941
+ * way one does where those edges share a vertex.
7942
+ */
7943
+ function chamferEachEdge(shape, edges, distanceOf) {
7944
+ const distances = /* @__PURE__ */ new Map();
7945
+ const distAngles = [];
7946
+ try {
7947
+ for (const edge of edges) {
7948
+ const value = distanceOf(edge);
7949
+ if (value === null) continue;
7950
+ if (!isDistAngle(value)) distances.set(edge, value);
7951
+ else if (value.distance > 0) distAngles.push({
7952
+ edge,
7953
+ ...value
7954
+ });
7955
+ }
7956
+ } catch (e) {
7957
+ const raw = e instanceof Error ? e.message : String(e);
7958
+ return err(kernelError("CHAMFER_FAILED", `Chamfer operation failed: ${raw}`, e, {
7959
+ operation: "chamfer",
7960
+ edgeCount: edges.length
7961
+ }));
7948
7962
  }
7949
- return {
7950
- mode: "standard",
7951
- distance
7952
- };
7963
+ if (distAngles.length === 0) return chamfer$2(shape, edges, (edge) => distances.get(edge) ?? null);
7964
+ const plainCount = [...distances.values()].filter((v) => !skipsEdge(v)).length;
7965
+ if (plainCount > 0) return err(validationError(BrepErrorCode.INVALID_CHAMFER_DISTANCE, `chamfer: the distance callback returned a plain distance for ${plainCount} edge(s) and { distance, angle } for ${distAngles.length}; one chamfer cannot mix the two`, void 0, {
7966
+ plainEdgeCount: plainCount,
7967
+ distAngleEdgeCount: distAngles.length
7968
+ }, "Return { distance, angle } for every edge, or chamfer the two groups of edges in separate calls"));
7969
+ return chamferDistAngles(shape, distAngles);
7953
7970
  }
7954
7971
  function fillet(shape, edgesOrRadius, maybeRadius) {
7955
7972
  const s = resolve(shape);
@@ -7977,12 +7994,12 @@ function chamfer(shape, edgesOrDistance, maybeDistance) {
7977
7994
  edges = void 0;
7978
7995
  distance = edgesOrDistance;
7979
7996
  }
7980
- const normalized = normalizeChamferDistance(distance);
7981
- if (normalized.mode === "distAngle") {
7997
+ if (typeof distance === "function") return chamferEachEdge(s, edges ?? getEdges(s), distance);
7998
+ if (isDistAngle(distance)) {
7982
7999
  const selectedEdges = edges ?? getEdges(s);
7983
- return chamferDistAngle(s, [...selectedEdges], normalized.distance, normalized.angle);
8000
+ return chamferDistAngle(s, [...selectedEdges], distance.distance, distance.angle);
7984
8001
  }
7985
- return chamfer$2(s, edges, normalized.distance);
8002
+ return chamfer$2(s, edges, distance);
7986
8003
  }
7987
8004
  /** Create a hollow shell by removing faces and offsetting remaining walls. */
7988
8005
  function shell(shape, faces, thickness, options) {
@@ -1,8 +1,8 @@
1
- const require_shapeTypes = require("./shapeTypes--7XBFlOD.cjs");
1
+ const require_shapeTypes = require("./shapeTypes-C06KHgTm.cjs");
2
2
  const require_errors = require("./errors-O_blYTWT.cjs");
3
- const require_topologyQueryFns = require("./topologyQueryFns-NszVx8a0.cjs");
3
+ const require_topologyQueryFns = require("./topologyQueryFns-BUhKY2Kj.cjs");
4
4
  const require_vecOps = require("./vecOps-CrGEPPQM.cjs");
5
- const require_shapeFns = require("./shapeFns-DuxfaqTw.cjs");
5
+ const require_shapeFns = require("./shapeFns-D47cmLG8.cjs");
6
6
  // src/projection/projectionPlanes.ts
7
7
  /** Lookup table mapping each {@link ProjectionPlane} to its camera configuration. */
8
8
  var PROJECTION_PLANES = {