brepjs 18.128.0 → 18.129.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/brepjs.cjs +76 -13
  2. package/dist/brepjs.js +76 -13
  3. package/dist/csg/builders.d.ts +8 -1
  4. package/dist/csg/evaluators/color.d.ts +5 -0
  5. package/dist/csg/index.d.ts +2 -2
  6. package/dist/csg/serialize.d.ts +1 -1
  7. package/dist/csg/types.d.ts +7 -1
  8. package/dist/{drawFns-DNekh4DS.js → drawFns-BFktlDIi.js} +1 -1
  9. package/dist/{drawFns-CQYR1jpa.cjs → drawFns-CP82Xdma.cjs} +1 -1
  10. package/dist/{healingFns-Digw1d6D.js → healingFns-BptGY1Th.js} +1 -1
  11. package/dist/{healingFns-CfSU0G7V.cjs → healingFns-DTr6cgTb.cjs} +1 -1
  12. package/dist/operations.cjs +1 -1
  13. package/dist/operations.js +1 -1
  14. package/dist/{primitiveFns-5E__ejiB.js → primitiveFns-BSMbMRf1.js} +1 -1
  15. package/dist/{primitiveFns-CBxF87wn.cjs → primitiveFns-C6Trlz8m.cjs} +1 -1
  16. package/dist/sketching.cjs +2 -2
  17. package/dist/sketching.js +2 -2
  18. package/dist/{solidBuilders-BWLoWRk1.cjs → solidBuilders-CgW7Ge_s.cjs} +8 -0
  19. package/dist/{solidBuilders-BSIOdrR5.js → solidBuilders-Devga1Vk.js} +3 -1
  20. package/dist/text.cjs +2 -2
  21. package/dist/text.js +2 -2
  22. package/dist/{textBlueprints-Cv-lkXnr.cjs → textBlueprints-BMvBJ79v.cjs} +1 -1
  23. package/dist/{textBlueprints-C1aMaWLc.js → textBlueprints-myJW6Fzl.js} +1 -1
  24. package/dist/{textMetrics-DQauYgh5.cjs → textMetrics-Byfb_37y.cjs} +1 -1
  25. package/dist/{textMetrics-DH3YPwVC.js → textMetrics-CPFqh2a1.js} +1 -1
  26. package/dist/{threadFns-B027FAdl.js → threadFns-B6-3UeCZ.js} +2 -2
  27. package/dist/{threadFns-CY1DC7fY.cjs → threadFns-BQIE5dO9.cjs} +2 -2
  28. package/dist/topology/metadata/colorFns.d.ts +3 -0
  29. package/dist/topology.cjs +3 -3
  30. package/dist/topology.js +3 -3
  31. package/package.json +1 -1
package/dist/brepjs.cjs CHANGED
@@ -12,28 +12,28 @@ const require_vecOps = require("./vecOps-CCnJt-yH.cjs");
12
12
  const require_planeOps = require("./planeOps-VlFxtvzY.cjs");
13
13
  const require_faceFns = require("./faceFns-C0A8O-2a.cjs");
14
14
  const require_originTrackingFns = require("./originTrackingFns-CKKmLIUH.cjs");
15
- const require_solidBuilders = require("./solidBuilders-BWLoWRk1.cjs");
16
- const require_primitiveFns = require("./primitiveFns-CBxF87wn.cjs");
15
+ const require_solidBuilders = require("./solidBuilders-CgW7Ge_s.cjs");
16
+ const require_primitiveFns = require("./primitiveFns-C6Trlz8m.cjs");
17
17
  const require_shapeFns = require("./shapeFns-DDTLk0mJ.cjs");
18
18
  const require_curveFns = require("./curveFns-jmKL1KZp.cjs");
19
19
  const require_meshFns = require("./meshFns-CB7HsxzB.cjs");
20
20
  const require_arrayAccess = require("./arrayAccess-e4H9cBfh.cjs");
21
21
  const require_surfaceBuilders = require("./surfaceBuilders-DUTDN2Ay.cjs");
22
- const require_healingFns = require("./healingFns-CfSU0G7V.cjs");
23
- const require_threadFns = require("./threadFns-CY1DC7fY.cjs");
22
+ const require_healingFns = require("./healingFns-DTr6cgTb.cjs");
23
+ const require_threadFns = require("./threadFns-BQIE5dO9.cjs");
24
24
  const require_blueprintSketcher = require("./blueprintSketcher-B5UqD0FO.cjs");
25
25
  const require_helpers = require("./helpers-DLZUxawd.cjs");
26
26
  const require_blueprint = require("./blueprint-BgbVmx4L.cjs");
27
- const require_drawFns = require("./drawFns-CQYR1jpa.cjs");
27
+ const require_drawFns = require("./drawFns-CP82Xdma.cjs");
28
28
  const require_measureFns = require("./measureFns-CaEuNAZO.cjs");
29
29
  const require_cornerFinder = require("./cornerFinder-DIe6pMPU.cjs");
30
30
  const require_boolean2D = require("./boolean2D-p7RMNFtG.cjs");
31
31
  const require_blueprintFns = require("./blueprintFns-oatmkSjh.cjs");
32
32
  const require_importFns = require("./importFns-ncp_0vEl.cjs");
33
33
  const require_loftFns = require("./loftFns-u-yPHpJ9.cjs");
34
- const require_textBlueprints = require("./textBlueprints-Cv-lkXnr.cjs");
34
+ const require_textBlueprints = require("./textBlueprints-BMvBJ79v.cjs");
35
35
  const require_cameraFns = require("./cameraFns-i1otOZ0V.cjs");
36
- const require_textMetrics = require("./textMetrics-DQauYgh5.cjs");
36
+ const require_textMetrics = require("./textMetrics-Byfb_37y.cjs");
37
37
  const require_adjacencyFns = require("./adjacencyFns-BhdfZany.cjs");
38
38
  const require_refResolveFns = require("./refResolveFns-c7RWIsZy.cjs");
39
39
  const require_workerPool = require("./workerPool-D30NsiIW.cjs");
@@ -1794,6 +1794,23 @@ function extrude$1(profile, vector) {
1794
1794
  freeParams: depsOf(profile, ve)
1795
1795
  };
1796
1796
  }
1797
+ /** Attach a color (hex string or RGB/RGBA tuple, canonicalized to RGBA) to
1798
+ * the evaluated result of `target`. Metadata rides beside the geometry: the
1799
+ * evaluator re-tags the shared target materialization with an independent
1800
+ * handle before coloring, so plain consumers of the same subtree stay
1801
+ * metadata-free. */
1802
+ function color(target, input) {
1803
+ const rgba = require_solidBuilders.parseColor(input).map((c) => Math.min(1, Math.max(0, c)));
1804
+ let h = mix(startHash("Color"), target);
1805
+ for (const c of rgba) h = fnvMixNumber(h, c);
1806
+ return {
1807
+ kind: "Color",
1808
+ target,
1809
+ color: rgba,
1810
+ structuralHash: h,
1811
+ freeParams: target.freeParams
1812
+ };
1813
+ }
1797
1814
  /** Planar face from a closed outline contour with optional first-class holes.
1798
1815
  * Contours auto-close at evaluation when the final segment does not return
1799
1816
  * to the start point. */
@@ -1923,7 +1940,8 @@ function outputKindOf(node) {
1923
1940
  case "Translate":
1924
1941
  case "Rotate":
1925
1942
  case "Scale":
1926
- case "Mirror": return outputKindOf(node.target);
1943
+ case "Mirror":
1944
+ case "Color": return outputKindOf(node.target);
1927
1945
  case "Extrude":
1928
1946
  case "Revolve":
1929
1947
  case "Loft":
@@ -2913,6 +2931,27 @@ function evalProfile(node, ctx) {
2913
2931
  }
2914
2932
  }
2915
2933
  //#endregion
2934
+ //#region src/csg/evaluators/color.ts
2935
+ function evalColor(node, ctx) {
2936
+ const t = ctx.evalNode(node.target);
2937
+ if (!t.ok) return t;
2938
+ const kernel = require_shapeTypes.getKernel();
2939
+ const { handle, dispose } = kernel.composeTransform([{
2940
+ type: "translate",
2941
+ x: 0,
2942
+ y: 0,
2943
+ z: 0
2944
+ }]);
2945
+ let moved;
2946
+ try {
2947
+ moved = require_shapeTypes.castResultShape(kernel.locate(t.value.wrapped, handle));
2948
+ } finally {
2949
+ dispose();
2950
+ }
2951
+ if (require_solidBuilders.hasAnyMetadata(t.value)) require_solidBuilders.propagateMetadataThroughRelocation(t.value, moved);
2952
+ return require_errors.ok(require_solidBuilders.colorShape(moved, [...node.color]));
2953
+ }
2954
+ //#endregion
2916
2955
  //#region src/csg/evaluate.ts
2917
2956
  function dispatch(node, ctx) {
2918
2957
  switch (node.kind) {
@@ -2943,6 +2982,7 @@ function dispatch(node, ctx) {
2943
2982
  case "Path": return evalPath(node, ctx);
2944
2983
  case "Sweep": return evalSweep(node, ctx);
2945
2984
  case "Profile": return evalProfile(node, ctx);
2985
+ case "Color": return evalColor(node, ctx);
2946
2986
  }
2947
2987
  }
2948
2988
  function hashExprValue(h, v) {
@@ -3352,7 +3392,7 @@ function withEvaluator(options, fn) {
3352
3392
  var MIN_CSG_VERSION = 1;
3353
3393
  function toJSON(node) {
3354
3394
  return {
3355
- csgVersion: 3,
3395
+ csgVersion: 4,
3356
3396
  root: nodeToJson(node)
3357
3397
  };
3358
3398
  }
@@ -3577,6 +3617,11 @@ function nodeToJson(n) {
3577
3617
  outline: contourToJson(n.outline),
3578
3618
  holes: n.holes.map(contourToJson)
3579
3619
  };
3620
+ if (n.kind === "Color") return {
3621
+ kind: "Color",
3622
+ target: nodeToJson(n.target),
3623
+ color: [...n.color]
3624
+ };
3580
3625
  if (n.kind === "Compound") return {
3581
3626
  kind: "Compound",
3582
3627
  children: n.children.map(nodeToJson)
@@ -3620,7 +3665,7 @@ function readVec2(v, where) {
3620
3665
  function fromJSON(envelope) {
3621
3666
  if (!isObj(envelope)) return bad("input is not an object");
3622
3667
  const v = envelope["csgVersion"];
3623
- if (typeof v !== "number" || !Number.isInteger(v) || v < MIN_CSG_VERSION || v > 3) return bad(`unsupported csgVersion ${String(v)} (expected ${MIN_CSG_VERSION}..3)`);
3668
+ if (typeof v !== "number" || !Number.isInteger(v) || v < MIN_CSG_VERSION || v > 4) return bad(`unsupported csgVersion ${String(v)} (expected ${MIN_CSG_VERSION}..4)`);
3624
3669
  const root = envelope["root"];
3625
3670
  return readNode(root);
3626
3671
  }
@@ -3734,6 +3779,7 @@ function readNode(j) {
3734
3779
  case "Path": return readPath(j);
3735
3780
  case "Sweep": return readSweep(j);
3736
3781
  case "Profile": return readProfile(j);
3782
+ case "Color": return readColor(j);
3737
3783
  default: return bad(`unknown node kind: ${String(kind)}`);
3738
3784
  }
3739
3785
  }
@@ -3983,6 +4029,18 @@ function readContour(j, where) {
3983
4029
  }
3984
4030
  return require_errors.ok(contour(start.value, segments));
3985
4031
  }
4032
+ function readColor(j) {
4033
+ const target = readNode(j["target"]);
4034
+ if (!target.ok) return target;
4035
+ const c = j["color"];
4036
+ if (!Array.isArray(c) || c.length !== 4 || !c.every((v) => isNumber$1(v) && v >= 0 && v <= 1)) return bad("Color.color: expected an RGBA array of 4 numbers in [0, 1]");
4037
+ return require_errors.ok(color(target.value, [
4038
+ c[0],
4039
+ c[1],
4040
+ c[2],
4041
+ c[3]
4042
+ ]));
4043
+ }
3986
4044
  function readProfile(j) {
3987
4045
  const outline = readContour(j["outline"], "Profile.outline");
3988
4046
  if (!outline.ok) return outline;
@@ -4134,7 +4192,8 @@ function optimizeNode(n) {
4134
4192
  case "Loft":
4135
4193
  case "Sweep":
4136
4194
  case "Profile":
4137
- case "Path": return optimizeFeature(n);
4195
+ case "Path":
4196
+ case "Color": return optimizeFeature(n);
4138
4197
  }
4139
4198
  }
4140
4199
  function optimizeFeature(n) {
@@ -4148,6 +4207,7 @@ function optimizeFeature(n) {
4148
4207
  case "Sweep": return sweep$2(optimizeNode(n.profile), optimizeNode(n.spine), { frenet: n.frenet });
4149
4208
  case "Profile": return profile(foldContour(n.outline, foldExpr), n.holes.map((hole) => foldContour(hole, foldExpr)));
4150
4209
  case "Path": return path(foldExpr(n.start), n.segments.map((s) => foldSegment(s, foldExpr)));
4210
+ case "Color": return color(optimizeNode(n.target), [...n.color]);
4151
4211
  }
4152
4212
  }
4153
4213
  function optimizeFuse(a, b, tol) {
@@ -4247,6 +4307,7 @@ function rebuildChildren(n, pred, repl) {
4247
4307
  });
4248
4308
  case "Loft": return loft$1(n.sections.map((s) => walk(s, pred, repl)), { ruled: n.ruled });
4249
4309
  case "Sweep": return sweep$2(walk(n.profile, pred, repl), walk(n.spine, pred, repl), { frenet: n.frenet });
4310
+ case "Color": return color(walk(n.target, pred, repl), [...n.color]);
4250
4311
  }
4251
4312
  }
4252
4313
  function forEachNode(root, fn) {
@@ -4275,7 +4336,8 @@ function childrenOf(n) {
4275
4336
  case "Translate":
4276
4337
  case "Rotate":
4277
4338
  case "Scale":
4278
- case "Mirror": return [n.target];
4339
+ case "Mirror":
4340
+ case "Color": return [n.target];
4279
4341
  case "Compound": return n.children;
4280
4342
  case "Instance": return [n.source];
4281
4343
  case "Extrude":
@@ -8286,7 +8348,7 @@ var patterns_exports = /* @__PURE__ */ require_rolldown_runtime.__exportAll({
8286
8348
  //#endregion
8287
8349
  //#region src/ns/csg.ts
8288
8350
  var csg_exports = /* @__PURE__ */ require_rolldown_runtime.__exportAll({
8289
- CSG_VERSION: () => 3,
8351
+ CSG_VERSION: () => 4,
8290
8352
  Evaluator: () => Evaluator,
8291
8353
  add: () => add$1,
8292
8354
  arbitraryClosedProfile: () => arbitraryClosedProfile,
@@ -8304,6 +8366,7 @@ var csg_exports = /* @__PURE__ */ require_rolldown_runtime.__exportAll({
8304
8366
  circle: () => circle$1,
8305
8367
  circleHollowProfile: () => circleHollowProfile,
8306
8368
  circularProfile: () => circularProfile,
8369
+ color: () => color,
8307
8370
  component: () => component,
8308
8371
  compound: () => compound$1,
8309
8372
  cone: () => cone$2,
package/dist/brepjs.js CHANGED
@@ -10,28 +10,28 @@ import { a as vecDot, c as vecLength, d as vecNormalize, f as vecProjectToPlane,
10
10
  import { i as pivotPlane, n as createPlane, o as resolvePlane, r as makePlane, s as translatePlane, t as createNamedPlane } from "./planeOps-CQahLrCx.js";
11
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-CaBQNffu.js";
12
12
  import { i as setShapeOrigin, t as getFaceOrigins } from "./originTrackingFns-JxAlPJXX.js";
13
- import { A as findFacesByTag, D as colorShape, E as colorFaces, M as getTagMetadata, N as setTagMetadata, O as getFaceColor, P as tagFaces, S as hasAnyMetadata, T as propagateMetadataThroughRelocation, _ as section$1, b as split$1, d as booleanPipeline, f as cut$2, g as intersect$2, h as fuseAll$2, j as getFaceTags, k as getShapeColor, m as fuse$2, p as cutAll$2, r as makeCylinder, t as makeCompound, v as sectionToFace$1, y as slice$1 } from "./solidBuilders-BSIOdrR5.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-5E__ejiB.js";
13
+ import { A as parseColor, D as colorShape, E as colorFaces, F as tagFaces, M as getFaceTags, N as getTagMetadata, O as getFaceColor, P as setTagMetadata, S as hasAnyMetadata, T as propagateMetadataThroughRelocation, _ as section$1, b as split$1, d as booleanPipeline, f as cut$2, g as intersect$2, h as fuseAll$2, j as findFacesByTag, k as getShapeColor, m as fuse$2, p as cutAll$2, r as makeCylinder, t as makeCompound, v as sectionToFace$1, y as slice$1 } from "./solidBuilders-Devga1Vk.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-BSMbMRf1.js";
15
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-DyDRpo6K.js";
16
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-Bh_PHl9N.js";
17
17
  import { a as meshEdges$1, c as meshMultiLOD, d as createMeshCache, i as mesh$1, l as buildMeshCacheKey, n as exportSTEP, o as meshLODs, r as exportSTL, s as meshLODsProgressive, t as exportIGES, u as clearMeshCache } from "./meshFns-CpfeEN1b.js";
18
18
  import { n as getAtOrThrow, r as lastOrThrow, t as firstOrThrow } from "./arrayAccess-DrUGPADn.js";
19
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-B7WlmoVr.js";
20
- import { A as toBufferGeometryData, C as shellWithEvolution, D as getNurbsCurveData, E as fuseAllBisect, M as toLODGeometryData, N as toLODGeometryLevels, O as getNurbsSurfaceData, P as toLineGeometryData, S as intersectWithEvolution, T as cutAllBisect, _ as positionOnCurve, a as healFace, b as filletWithEvolution, c as isValid$1, d as draft$1, f as fillet$1, g as variableFillet, h as thicken$1, i as heal$1, j as toGroupedBufferGeometryData, k as chamferDistAngle, l as solidFromShell, m as shell$1, n as fixSelfIntersection, o as healSolid, p as offset$1, r as fixShape, s as healWire, t as autoHeal, u as chamfer$1, v as chamferWithEvolution, w as checkBoolean, x as fuseWithEvolution, y as cutWithEvolution } from "./healingFns-Digw1d6D.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-B027FAdl.js";
20
+ import { A as toBufferGeometryData, C as shellWithEvolution, D as getNurbsCurveData, E as fuseAllBisect, M as toLODGeometryData, N as toLODGeometryLevels, O as getNurbsSurfaceData, P as toLineGeometryData, S as intersectWithEvolution, T as cutAllBisect, _ as positionOnCurve, a as healFace, b as filletWithEvolution, c as isValid$1, d as draft$1, f as fillet$1, g as variableFillet, h as thicken$1, i as heal$1, j as toGroupedBufferGeometryData, k as chamferDistAngle, l as solidFromShell, m as shell$1, n as fixSelfIntersection, o as healSolid, p as offset$1, r as fixShape, s as healWire, t as autoHeal, u as chamfer$1, v as chamferWithEvolution, w as checkBoolean, x as fuseWithEvolution, y as cutWithEvolution } from "./healingFns-BptGY1Th.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-B6-3UeCZ.js";
22
22
  import { n as BaseSketcher2d, r as organiseBlueprints, t as BlueprintSketcher } from "./blueprintSketcher-yZiAeqft.js";
23
23
  import { a as createTypedFinder, i as wireFinder, n as edgeFinder, r as faceFinder, t as getSingleFace } from "./helpers-BiqV-wPK.js";
24
24
  import { g as approximateAsSvgCompatibleCurve } from "./blueprint-DRvc1LOz.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-DNekh4DS.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-BFktlDIi.js";
26
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-9-1Ng0wR.js";
27
27
  import { t as cornerFinder } from "./cornerFinder-CiHpo7kU.js";
28
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-BuM5xJSa.js";
29
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-COSD5yZH.js";
30
30
  import { a as importSVG, c as blueprintToDXF, d as exportGltf, f as exportOBJ, i as exportSTEPConfigured, l as exportDXF, n as importSTEP, o as importSVGPathD, r as importSTL, s as exportThreeMF, t as importIGES, u as exportGlb } from "./importFns-BId6d2pt.js";
31
31
  import { a as multiSectionSweep, c as twistExtrude, i as guidedSweep, n as loftAll, o as supportExtrude, r as complexExtrude, s as sweep$1, t as loft$2 } from "./loftFns-m7LoJWE2.js";
32
- import { a as Sketch, b as extrudeAll, c as compoundSketchLoft, d as sketchFace, f as sketchLoft, h as sketchWires, i as Sketches, l as compoundSketchRevolve, m as sketchSweep, n as getFont, o as compoundSketchExtrude, p as sketchRevolve, r as loadFont, s as compoundSketchFace, t as textBlueprints, u as sketchExtrude, v as CompoundSketch, x as revolve$2, y as extrude$2 } from "./textBlueprints-C1aMaWLc.js";
32
+ import { a as Sketch, b as extrudeAll, c as compoundSketchLoft, d as sketchFace, f as sketchLoft, h as sketchWires, i as Sketches, l as compoundSketchRevolve, m as sketchSweep, n as getFont, o as compoundSketchExtrude, p as sketchRevolve, r as loadFont, s as compoundSketchFace, t as textBlueprints, u as sketchExtrude, v as CompoundSketch, x as revolve$2, y as extrude$2 } from "./textBlueprints-myJW6Fzl.js";
33
33
  import { a as makeProjectedEdges, i as projectEdges, n as cameraLookAt, r as createCamera, s as isProjectionPlane, t as cameraFromPlane } from "./cameraFns-VVI0cWLa.js";
34
- import { n as textMetrics, r as sketchText, t as fontMetrics } from "./textMetrics-DH3YPwVC.js";
34
+ import { n as textMetrics, r as sketchText, t as fontMetrics } from "./textMetrics-CPFqh2a1.js";
35
35
  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-CwcdjOsT.js";
36
36
  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-DcyIQSDi.js";
37
37
  import { _ as isSuccessResponse, a as createWorkerClient, c as enqueueTask, d as rejectAll, f as isBatchRequest, g as isOperationRequest, h as isInitRequest, i as registerHandler, l as isEmpty$1, m as isErrorResponse, n as createOperationRegistry, o as createTaskQueue, p as isDisposeRequest, r as createWorkerHandler, s as dequeueTask, t as createWorkerPool, u as pendingCount } from "./workerPool-XcYX2UZ0.js";
@@ -1804,6 +1804,23 @@ function extrude$1(profile, vector) {
1804
1804
  freeParams: depsOf(profile, ve)
1805
1805
  };
1806
1806
  }
1807
+ /** Attach a color (hex string or RGB/RGBA tuple, canonicalized to RGBA) to
1808
+ * the evaluated result of `target`. Metadata rides beside the geometry: the
1809
+ * evaluator re-tags the shared target materialization with an independent
1810
+ * handle before coloring, so plain consumers of the same subtree stay
1811
+ * metadata-free. */
1812
+ function color(target, input) {
1813
+ const rgba = parseColor(input).map((c) => Math.min(1, Math.max(0, c)));
1814
+ let h = mix(startHash("Color"), target);
1815
+ for (const c of rgba) h = fnvMixNumber(h, c);
1816
+ return {
1817
+ kind: "Color",
1818
+ target,
1819
+ color: rgba,
1820
+ structuralHash: h,
1821
+ freeParams: target.freeParams
1822
+ };
1823
+ }
1807
1824
  /** Planar face from a closed outline contour with optional first-class holes.
1808
1825
  * Contours auto-close at evaluation when the final segment does not return
1809
1826
  * to the start point. */
@@ -1933,7 +1950,8 @@ function outputKindOf(node) {
1933
1950
  case "Translate":
1934
1951
  case "Rotate":
1935
1952
  case "Scale":
1936
- case "Mirror": return outputKindOf(node.target);
1953
+ case "Mirror":
1954
+ case "Color": return outputKindOf(node.target);
1937
1955
  case "Extrude":
1938
1956
  case "Revolve":
1939
1957
  case "Loft":
@@ -2923,6 +2941,27 @@ function evalProfile(node, ctx) {
2923
2941
  }
2924
2942
  }
2925
2943
  //#endregion
2944
+ //#region src/csg/evaluators/color.ts
2945
+ function evalColor(node, ctx) {
2946
+ const t = ctx.evalNode(node.target);
2947
+ if (!t.ok) return t;
2948
+ const kernel = getKernel();
2949
+ const { handle, dispose } = kernel.composeTransform([{
2950
+ type: "translate",
2951
+ x: 0,
2952
+ y: 0,
2953
+ z: 0
2954
+ }]);
2955
+ let moved;
2956
+ try {
2957
+ moved = castResultShape(kernel.locate(t.value.wrapped, handle));
2958
+ } finally {
2959
+ dispose();
2960
+ }
2961
+ if (hasAnyMetadata(t.value)) propagateMetadataThroughRelocation(t.value, moved);
2962
+ return ok(colorShape(moved, [...node.color]));
2963
+ }
2964
+ //#endregion
2926
2965
  //#region src/csg/evaluate.ts
2927
2966
  function dispatch(node, ctx) {
2928
2967
  switch (node.kind) {
@@ -2953,6 +2992,7 @@ function dispatch(node, ctx) {
2953
2992
  case "Path": return evalPath(node, ctx);
2954
2993
  case "Sweep": return evalSweep(node, ctx);
2955
2994
  case "Profile": return evalProfile(node, ctx);
2995
+ case "Color": return evalColor(node, ctx);
2956
2996
  }
2957
2997
  }
2958
2998
  function hashExprValue(h, v) {
@@ -3362,7 +3402,7 @@ function withEvaluator(options, fn) {
3362
3402
  var MIN_CSG_VERSION = 1;
3363
3403
  function toJSON(node) {
3364
3404
  return {
3365
- csgVersion: 3,
3405
+ csgVersion: 4,
3366
3406
  root: nodeToJson(node)
3367
3407
  };
3368
3408
  }
@@ -3587,6 +3627,11 @@ function nodeToJson(n) {
3587
3627
  outline: contourToJson(n.outline),
3588
3628
  holes: n.holes.map(contourToJson)
3589
3629
  };
3630
+ if (n.kind === "Color") return {
3631
+ kind: "Color",
3632
+ target: nodeToJson(n.target),
3633
+ color: [...n.color]
3634
+ };
3590
3635
  if (n.kind === "Compound") return {
3591
3636
  kind: "Compound",
3592
3637
  children: n.children.map(nodeToJson)
@@ -3630,7 +3675,7 @@ function readVec2(v, where) {
3630
3675
  function fromJSON(envelope) {
3631
3676
  if (!isObj(envelope)) return bad("input is not an object");
3632
3677
  const v = envelope["csgVersion"];
3633
- if (typeof v !== "number" || !Number.isInteger(v) || v < MIN_CSG_VERSION || v > 3) return bad(`unsupported csgVersion ${String(v)} (expected ${MIN_CSG_VERSION}..3)`);
3678
+ if (typeof v !== "number" || !Number.isInteger(v) || v < MIN_CSG_VERSION || v > 4) return bad(`unsupported csgVersion ${String(v)} (expected ${MIN_CSG_VERSION}..4)`);
3634
3679
  const root = envelope["root"];
3635
3680
  return readNode(root);
3636
3681
  }
@@ -3744,6 +3789,7 @@ function readNode(j) {
3744
3789
  case "Path": return readPath(j);
3745
3790
  case "Sweep": return readSweep(j);
3746
3791
  case "Profile": return readProfile(j);
3792
+ case "Color": return readColor(j);
3747
3793
  default: return bad(`unknown node kind: ${String(kind)}`);
3748
3794
  }
3749
3795
  }
@@ -3993,6 +4039,18 @@ function readContour(j, where) {
3993
4039
  }
3994
4040
  return ok(contour(start.value, segments));
3995
4041
  }
4042
+ function readColor(j) {
4043
+ const target = readNode(j["target"]);
4044
+ if (!target.ok) return target;
4045
+ const c = j["color"];
4046
+ if (!Array.isArray(c) || c.length !== 4 || !c.every((v) => isNumber$1(v) && v >= 0 && v <= 1)) return bad("Color.color: expected an RGBA array of 4 numbers in [0, 1]");
4047
+ return ok(color(target.value, [
4048
+ c[0],
4049
+ c[1],
4050
+ c[2],
4051
+ c[3]
4052
+ ]));
4053
+ }
3996
4054
  function readProfile(j) {
3997
4055
  const outline = readContour(j["outline"], "Profile.outline");
3998
4056
  if (!outline.ok) return outline;
@@ -4144,7 +4202,8 @@ function optimizeNode(n) {
4144
4202
  case "Loft":
4145
4203
  case "Sweep":
4146
4204
  case "Profile":
4147
- case "Path": return optimizeFeature(n);
4205
+ case "Path":
4206
+ case "Color": return optimizeFeature(n);
4148
4207
  }
4149
4208
  }
4150
4209
  function optimizeFeature(n) {
@@ -4158,6 +4217,7 @@ function optimizeFeature(n) {
4158
4217
  case "Sweep": return sweep$2(optimizeNode(n.profile), optimizeNode(n.spine), { frenet: n.frenet });
4159
4218
  case "Profile": return profile(foldContour(n.outline, foldExpr), n.holes.map((hole) => foldContour(hole, foldExpr)));
4160
4219
  case "Path": return path(foldExpr(n.start), n.segments.map((s) => foldSegment(s, foldExpr)));
4220
+ case "Color": return color(optimizeNode(n.target), [...n.color]);
4161
4221
  }
4162
4222
  }
4163
4223
  function optimizeFuse(a, b, tol) {
@@ -4257,6 +4317,7 @@ function rebuildChildren(n, pred, repl) {
4257
4317
  });
4258
4318
  case "Loft": return loft$1(n.sections.map((s) => walk(s, pred, repl)), { ruled: n.ruled });
4259
4319
  case "Sweep": return sweep$2(walk(n.profile, pred, repl), walk(n.spine, pred, repl), { frenet: n.frenet });
4320
+ case "Color": return color(walk(n.target, pred, repl), [...n.color]);
4260
4321
  }
4261
4322
  }
4262
4323
  function forEachNode(root, fn) {
@@ -4285,7 +4346,8 @@ function childrenOf(n) {
4285
4346
  case "Translate":
4286
4347
  case "Rotate":
4287
4348
  case "Scale":
4288
- case "Mirror": return [n.target];
4349
+ case "Mirror":
4350
+ case "Color": return [n.target];
4289
4351
  case "Compound": return n.children;
4290
4352
  case "Instance": return [n.source];
4291
4353
  case "Extrude":
@@ -8295,7 +8357,7 @@ var patterns_exports = /* @__PURE__ */ __exportAll({
8295
8357
  //#endregion
8296
8358
  //#region src/ns/csg.ts
8297
8359
  var csg_exports = /* @__PURE__ */ __exportAll({
8298
- CSG_VERSION: () => 3,
8360
+ CSG_VERSION: () => 4,
8299
8361
  Evaluator: () => Evaluator,
8300
8362
  add: () => add$1,
8301
8363
  arbitraryClosedProfile: () => arbitraryClosedProfile,
@@ -8313,6 +8375,7 @@ var csg_exports = /* @__PURE__ */ __exportAll({
8313
8375
  circle: () => circle$1,
8314
8376
  circleHollowProfile: () => circleHollowProfile,
8315
8377
  circularProfile: () => circularProfile,
8378
+ color: () => color,
8316
8379
  component: () => component,
8317
8380
  compound: () => compound$1,
8318
8381
  cone: () => cone$2,
@@ -1,7 +1,8 @@
1
1
  import { ScalarInput, Vec2Input, Vec3Input } from './expressions.js';
2
2
  import { Contour, Segment2D } from './segments.js';
3
3
  import { Matrix4x4 } from '../core/types.js';
4
- import { BoxNode, SphereNode, CylinderNode, ConeNode, TorusNode, PolygonNode, CircleNode, LineNode, VertexLitNode, EmptyNode, FuseNode, CutNode, IntersectNode, FuseAllNode, CutAllNode, TranslateNode, RotateNode, ScaleNode, MirrorNode, ExtrudeNode, RevolveNode, LoftNode, SweepNode, ProfileNode, PathNode, CompoundNode, InstanceNode, IRNode, SolidNode, FaceNode, EdgeNode, VertexNode } from './types.js';
4
+ import { ColorInput } from '../topology/metadata/colorFns.js';
5
+ import { BoxNode, SphereNode, CylinderNode, ConeNode, TorusNode, PolygonNode, CircleNode, LineNode, VertexLitNode, EmptyNode, FuseNode, CutNode, IntersectNode, FuseAllNode, CutAllNode, TranslateNode, RotateNode, ScaleNode, MirrorNode, ExtrudeNode, RevolveNode, LoftNode, SweepNode, ProfileNode, PathNode, ColorNode, CompoundNode, InstanceNode, IRNode, SolidNode, FaceNode, EdgeNode, VertexNode } from './types.js';
5
6
  export declare function box(x: ScalarInput, y: ScalarInput, z: ScalarInput): BoxNode;
6
7
  export declare function sphere(radius: ScalarInput): SphereNode;
7
8
  export declare function cylinder(radius: ScalarInput, height: ScalarInput): CylinderNode;
@@ -35,6 +36,12 @@ export interface MirrorOptions {
35
36
  }
36
37
  export declare function mirror(target: IRNode, options?: MirrorOptions): MirrorNode;
37
38
  export declare function extrude(profile: FaceNode, vector: Vec3Input): ExtrudeNode;
39
+ /** Attach a color (hex string or RGB/RGBA tuple, canonicalized to RGBA) to
40
+ * the evaluated result of `target`. Metadata rides beside the geometry: the
41
+ * evaluator re-tags the shared target materialization with an independent
42
+ * handle before coloring, so plain consumers of the same subtree stay
43
+ * metadata-free. */
44
+ export declare function color(target: IRNode, input: ColorInput): ColorNode;
38
45
  /** Planar face from a closed outline contour with optional first-class holes.
39
46
  * Contours auto-close at evaluation when the final segment does not return
40
47
  * to the start point. */
@@ -0,0 +1,5 @@
1
+ import { Result } from '../../core/result.js';
2
+ import { AnyShape, Dimension } from '../../core/shapeTypes.js';
3
+ import { ColorNode } from '../types.js';
4
+ import { EvalContext } from './context.js';
5
+ export declare function evalColor(node: ColorNode, ctx: EvalContext): Result<AnyShape<Dimension>>;
@@ -5,9 +5,9 @@
5
5
  * parameterize via named expression bindings; evaluate against the active
6
6
  * kernel with subtree-level cache reuse for incremental parametric edits.
7
7
  */
8
- export { box, sphere, cylinder, cone, torus, polygon, circle, line, vertex, emptySolid, emptyFace, emptyWire, fuse, cut, intersect, fuseAll, cutAll, translate, rotate, scale, mirror, extrude, revolve, loft, sweep, profile, path, compound, instance, type RevolveOptions, type LoftOptions, type SweepNodeOptions, type RotateOptions, type ScaleOptions, type MirrorOptions, } from './builders.js';
8
+ export { box, sphere, cylinder, cone, torus, polygon, circle, line, vertex, emptySolid, emptyFace, emptyWire, fuse, cut, intersect, fuseAll, cutAll, translate, rotate, scale, mirror, extrude, revolve, loft, sweep, profile, path, color, compound, instance, type RevolveOptions, type LoftOptions, type SweepNodeOptions, type RotateOptions, type ScaleOptions, type MirrorOptions, } from './builders.js';
9
9
  export { numLit, vec3Lit, vec2Lit, param, binOp, unaryOp, component, buildVec, add, mul, asScalarExpr, asVec3Expr, asVec2Expr, type Expr, type ExprValue, type Env, type ScalarInput, type Vec3Input, type Vec2Input, type BinaryOp, type UnaryOp, } from './expressions.js';
10
- export type { IRNode, NodeKind, OutputKind, PrimitiveNode, BooleanNode, TransformIRNode, ExtrudeNode, RevolveNode, LoftNode, SweepNode, ProfileNode, PathNode, InstanceNode, SolidNode, FaceNode, EdgeNode, VertexNode, AnyNode, } from './types.js';
10
+ export type { IRNode, NodeKind, OutputKind, PrimitiveNode, BooleanNode, TransformIRNode, ExtrudeNode, RevolveNode, LoftNode, SweepNode, ProfileNode, PathNode, ColorNode, InstanceNode, SolidNode, FaceNode, EdgeNode, VertexNode, AnyNode, } from './types.js';
11
11
  export { outputKindOf } from './types.js';
12
12
  export { lineTo, arcTo, bezierTo, ellipseArcTo, contour, type Contour, type Segment2D, type SegmentOptions, type EllipseArcOptions, } from './segments.js';
13
13
  export { rectangularProfile, circularProfile, iBeamProfile, asymmetricIProfile, lShapeProfile, tShapeProfile, uShapeProfile, zShapeProfile, cShapeProfile, ellipseProfile, trapeziumProfile, rectangleHollowProfile, circleHollowProfile, arbitraryClosedProfile, arbitraryProfileWithVoids, type IBeamParams, type AsymmetricIParams, type LShapeParams, type TShapeParams, type UShapeParams, type ZShapeParams, type CShapeParams, type TrapeziumParams, type RectangleHollowParams, type CircleHollowParams, } from './profiles.js';
@@ -1,6 +1,6 @@
1
1
  import { Result } from '../core/result.js';
2
2
  import { IRNode } from './types.js';
3
- export declare const CSG_VERSION = 3;
3
+ export declare const CSG_VERSION = 4;
4
4
  export interface CsgEnvelope {
5
5
  readonly csgVersion: number;
6
6
  readonly root: unknown;
@@ -124,6 +124,12 @@ export interface RevolveNode extends IRNodeBase {
124
124
  readonly axis?: Expr | undefined;
125
125
  readonly at?: Expr | undefined;
126
126
  }
127
+ export interface ColorNode extends IRNodeBase {
128
+ readonly kind: 'Color';
129
+ readonly target: IRNode;
130
+ /** Canonical RGBA, each component in [0, 1]. */
131
+ readonly color: readonly [number, number, number, number];
132
+ }
127
133
  export interface ProfileNode extends IRNodeBase {
128
134
  readonly kind: 'Profile';
129
135
  /** Closed outline in the XY plane (auto-closed at evaluation). */
@@ -170,7 +176,7 @@ export interface InstanceNode extends IRNodeBase {
170
176
  export type PrimitiveNode = BoxNode | SphereNode | CylinderNode | ConeNode | TorusNode | PolygonNode | CircleNode | LineNode | VertexLitNode | EmptyNode;
171
177
  export type BooleanNode = FuseNode | CutNode | IntersectNode | FuseAllNode | CutAllNode;
172
178
  export type TransformIRNode = TranslateNode | RotateNode | ScaleNode | MirrorNode;
173
- export type IRNode = PrimitiveNode | BooleanNode | TransformIRNode | ExtrudeNode | RevolveNode | LoftNode | SweepNode | ProfileNode | PathNode | CompoundNode | InstanceNode;
179
+ export type IRNode = PrimitiveNode | BooleanNode | TransformIRNode | ExtrudeNode | RevolveNode | LoftNode | SweepNode | ProfileNode | PathNode | ColorNode | CompoundNode | InstanceNode;
174
180
  export type NodeKind = IRNode['kind'];
175
181
  export type AnyNode = IRNode;
176
182
  /** Nodes that produce a 3D solid. */
@@ -15,7 +15,7 @@ import { _ as samePoint$1, b as subtract2d, c as add2d, s as PRECISION_OFFSET, y
15
15
  import { _ as Curve2D, a as edgeToCurve, b as BoundingBox2d, c as make2dCircle, d as make2dInerpolatedBSplineCurve, f as make2dSegmentCurve, g as approximateAsSvgCompatibleCurve, i as curvesAsEdgesOnPlane, l as make2dEllipse, o as make2dArcFromCenter, t as Blueprint, v as deserializeCurve2D } from "./blueprint-DRvc1LOz.js";
16
16
  import { t as cornerFinder } from "./cornerFinder-CiHpo7kU.js";
17
17
  import { c as roundedRectangleBlueprint, n as fuse2D, r as intersect2D, s as polysidesBlueprint, t as cut2D } from "./boolean2D-BuM5xJSa.js";
18
- import { _ as wrapSketchDataArray, a as Sketch, g as wrapSketchData, i as Sketches, t as textBlueprints } from "./textBlueprints-C1aMaWLc.js";
18
+ import { _ as wrapSketchDataArray, a as Sketch, g as wrapSketchData, i as Sketches, t as textBlueprints } from "./textBlueprints-myJW6Fzl.js";
19
19
  import { i as projectEdges, t as cameraFromPlane } from "./cameraFns-VVI0cWLa.js";
20
20
  //#region src/2d/lib/stitching.ts
21
21
  /**
@@ -15,7 +15,7 @@ const require_helpers = require("./helpers-DLZUxawd.cjs");
15
15
  const require_blueprint = require("./blueprint-BgbVmx4L.cjs");
16
16
  const require_cornerFinder = require("./cornerFinder-DIe6pMPU.cjs");
17
17
  const require_boolean2D = require("./boolean2D-p7RMNFtG.cjs");
18
- const require_textBlueprints = require("./textBlueprints-Cv-lkXnr.cjs");
18
+ const require_textBlueprints = require("./textBlueprints-BMvBJ79v.cjs");
19
19
  const require_cameraFns = require("./cameraFns-i1otOZ0V.cjs");
20
20
  //#region src/2d/lib/stitching.ts
21
21
  /**
@@ -3,7 +3,7 @@ import { E as ok, b as isErr, d as validationError, g as err, i as kernelError,
3
3
  import { c as getFaces, i as getCachedIsValid, m as invalidateShapeCache, p as getWires, s as getEdges } from "./topologyQueryFns-CwYkfE3v.js";
4
4
  import { n as HASH_CODE_MAX } from "./constants-ITRzCnCp.js";
5
5
  import { y as downcast } from "./faceFns-CaBQNffu.js";
6
- import { C as propagateAllMetadata, f as cut, h as fuseAll, m as fuse, p as cutAll, x as collectInputFaceHashes } from "./solidBuilders-BSIOdrR5.js";
6
+ import { C as propagateAllMetadata, f as cut, h as fuseAll, m as fuse, p as cutAll, x as collectInputFaceHashes } from "./solidBuilders-Devga1Vk.js";
7
7
  import { t as firstOrThrow } from "./arrayAccess-DrUGPADn.js";
8
8
  //#region src/topology/threeHelpers.ts
9
9
  /**
@@ -3,7 +3,7 @@ const require_errors = require("./errors-RHkKO5bZ.cjs");
3
3
  const require_topologyQueryFns = require("./topologyQueryFns-BtLGfXgL.cjs");
4
4
  const require_constants = require("./constants-BOVyEYGH.cjs");
5
5
  const require_faceFns = require("./faceFns-C0A8O-2a.cjs");
6
- const require_solidBuilders = require("./solidBuilders-BWLoWRk1.cjs");
6
+ const require_solidBuilders = require("./solidBuilders-CgW7Ge_s.cjs");
7
7
  const require_arrayAccess = require("./arrayAccess-e4H9cBfh.cjs");
8
8
  //#region src/topology/threeHelpers.ts
9
9
  /**
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_threadFns = require("./threadFns-CY1DC7fY.cjs");
2
+ const require_threadFns = require("./threadFns-BQIE5dO9.cjs");
3
3
  const require_loftFns = require("./loftFns-u-yPHpJ9.cjs");
4
4
  exports.addChild = require_threadFns.addChild;
5
5
  exports.addJoint = require_threadFns.addJoint;
@@ -1,3 +1,3 @@
1
- import { A as setJointValue, B as walkAssembly, C as cylindricalJoint, D as planarJoint, E as mechanismDOF, F as countNodes, H as circularPattern, I as createAssemblyNode, 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, 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, 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-B027FAdl.js";
1
+ import { A as setJointValue, B as walkAssembly, C as cylindricalJoint, D as planarJoint, E as mechanismDOF, F as countNodes, H as circularPattern, I as createAssemblyNode, 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, 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, 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-B6-3UeCZ.js";
2
2
  import { c as twistExtrude, o as supportExtrude, r as complexExtrude, s as sweep } from "./loftFns-m7LoJWE2.js";
3
3
  export { addChild, addJoint, addStep, circularPattern, collectShapes, complexExtrude, countNodes, createAssembly, createAssemblyNode, createHistory, createRegistry, cylindricalJoint, exportAssemblySTEP, exportURDF, findNode, findStep, forwardKinematics, getShape as getHistoryShape, gridPattern, importURDF, inverseKinematics, jointTrajectory, jointTransform, jointsFromDH, linearPattern, mechanismDOF, modifyStep, planarJoint, prismaticJoint, registerOperation, registerShape, removeChild, replayFrom, replayHistory, revoluteJoint, setJointValue, setJointValues, sphericalJoint, stepCount, stepsFrom, supportExtrude, sweep, thread, twistExtrude, undoLast, updateNode, walkAssembly };
@@ -2,7 +2,7 @@ import { K as getKernel, W as _usingCtx, d as createSolid, n as castResultShape
2
2
  import { E as ok, d as validationError, g as err, m as andThen, t as BrepErrorCode } from "./errors-MHLiNE-C.js";
3
3
  import { n as isClosedWire } from "./validityTypes-Bl3adWZb.js";
4
4
  import { n as HASH_CODE_MAX, t as DEG2RAD } from "./constants-ITRzCnCp.js";
5
- import { C as propagateAllMetadata, S as hasAnyMetadata, T as propagateMetadataThroughRelocation, a as makeOffset, c as makeTorus, i as makeEllipsoid, l as makeVertex, n as makeCone, o as makeSolid, r as makeCylinder, s as makeSphere, t as makeCompound, u as weldShellsAndFaces, w as propagateMetadataByHash, x as collectInputFaceHashes } from "./solidBuilders-BSIOdrR5.js";
5
+ import { C as propagateAllMetadata, S as hasAnyMetadata, T as propagateMetadataThroughRelocation, a as makeOffset, c as makeTorus, i as makeEllipsoid, l as makeVertex, n as makeCone, o as makeSolid, r as makeCylinder, s as makeSphere, t as makeCompound, u as weldShellsAndFaces, w as propagateMetadataByHash, x as collectInputFaceHashes } from "./solidBuilders-Devga1Vk.js";
6
6
  import { _ as makeThreePointArc, a as makeNonPlanarFace, c as makeBSplineApproximation, d as makeCircle, f as makeEllipse, g as makeTangentArc, h as makeLine, i as makeNewFaceWithinFace, m as makeHelix, o as makePolygon, p as makeEllipseArc, r as makeFace, s as assembleWire, t as addHolesInFace, u as makeBezierCurve } from "./surfaceBuilders-B7WlmoVr.js";
7
7
  //#region src/topology/transformFns.ts
8
8
  /**
@@ -2,7 +2,7 @@ const require_shapeTypes = require("./shapeTypes-DVExh1xP.cjs");
2
2
  const require_errors = require("./errors-RHkKO5bZ.cjs");
3
3
  const require_validityTypes = require("./validityTypes-C2nklkrH.cjs");
4
4
  const require_constants = require("./constants-BOVyEYGH.cjs");
5
- const require_solidBuilders = require("./solidBuilders-BWLoWRk1.cjs");
5
+ const require_solidBuilders = require("./solidBuilders-CgW7Ge_s.cjs");
6
6
  const require_surfaceBuilders = require("./surfaceBuilders-DUTDN2Ay.cjs");
7
7
  //#region src/topology/transformFns.ts
8
8
  /**
@@ -1,7 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_blueprintSketcher = require("./blueprintSketcher-B5UqD0FO.cjs");
3
- const require_drawFns = require("./drawFns-CQYR1jpa.cjs");
4
- const require_textBlueprints = require("./textBlueprints-Cv-lkXnr.cjs");
3
+ const require_drawFns = require("./drawFns-CP82Xdma.cjs");
4
+ const require_textBlueprints = require("./textBlueprints-BMvBJ79v.cjs");
5
5
  //#region src/sketching.ts
6
6
  /**
7
7
  * brepjs/sketching — Sketcher, Drawing, and sketch-to-shape operations.
package/dist/sketching.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { n as BaseSketcher2d, t as BlueprintSketcher } from "./blueprintSketcher-yZiAeqft.js";
2
- import { A as sketchEllipse, C as DrawingPen, 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, T as Drawing, _ 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-DNekh4DS.js";
3
- import { a as Sketch, c as compoundSketchLoft, d as sketchFace, f as sketchLoft, h as sketchWires, i as Sketches, l as compoundSketchRevolve, m as sketchSweep, o as compoundSketchExtrude, p as sketchRevolve, s as compoundSketchFace, u as sketchExtrude, v as CompoundSketch } from "./textBlueprints-C1aMaWLc.js";
2
+ import { A as sketchEllipse, C as DrawingPen, 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, T as Drawing, _ 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-BFktlDIi.js";
3
+ import { a as Sketch, c as compoundSketchLoft, d as sketchFace, f as sketchLoft, h as sketchWires, i as Sketches, l as compoundSketchRevolve, m as sketchSweep, o as compoundSketchExtrude, p as sketchRevolve, s as compoundSketchFace, u as sketchExtrude, v as CompoundSketch } from "./textBlueprints-myJW6Fzl.js";
4
4
  //#region src/sketching.ts
5
5
  /**
6
6
  * brepjs/sketching — Sketcher, Drawing, and sketch-to-shape operations.
@@ -147,6 +147,8 @@ function getFaceColorMap(shape) {
147
147
  }
148
148
  return map;
149
149
  }
150
+ /** Parse any accepted color input into canonical RGBA (exported so content-
151
+ * addressed consumers can canonicalize before hashing). */
150
152
  function parseColor(input) {
151
153
  if (typeof input === "string") {
152
154
  let hex = input.startsWith("#") ? input.slice(1) : input;
@@ -1105,6 +1107,12 @@ Object.defineProperty(exports, "makeVertex", {
1105
1107
  return makeVertex;
1106
1108
  }
1107
1109
  });
1110
+ Object.defineProperty(exports, "parseColor", {
1111
+ enumerable: true,
1112
+ get: function() {
1113
+ return parseColor;
1114
+ }
1115
+ });
1108
1116
  Object.defineProperty(exports, "propagateAllMetadata", {
1109
1117
  enumerable: true,
1110
1118
  get: function() {
@@ -147,6 +147,8 @@ function getFaceColorMap(shape) {
147
147
  }
148
148
  return map;
149
149
  }
150
+ /** Parse any accepted color input into canonical RGBA (exported so content-
151
+ * addressed consumers can canonicalize before hashing). */
150
152
  function parseColor(input) {
151
153
  if (typeof input === "string") {
152
154
  let hex = input.startsWith("#") ? input.slice(1) : input;
@@ -961,4 +963,4 @@ function makeSolid(facesOrShells) {
961
963
  }
962
964
  }
963
965
  //#endregion
964
- export { findFacesByTag as A, propagateAllMetadata as C, colorShape as D, colorFaces as E, getTagMetadata as M, setTagMetadata as N, getFaceColor as O, tagFaces as P, hasAnyMetadata as S, propagateMetadataThroughRelocation as T, section as _, makeOffset as a, split as b, makeTorus as c, booleanPipeline as d, cut as f, intersect as g, fuseAll as h, makeEllipsoid as i, getFaceTags as j, getShapeColor as k, makeVertex as l, fuse as m, makeCone as n, makeSolid as o, cutAll as p, makeCylinder as r, makeSphere as s, makeCompound as t, weldShellsAndFaces as u, sectionToFace as v, propagateMetadataByHash as w, collectInputFaceHashes as x, slice as y };
966
+ export { parseColor as A, propagateAllMetadata as C, colorShape as D, colorFaces as E, tagFaces as F, getFaceTags as M, getTagMetadata as N, getFaceColor as O, setTagMetadata as P, hasAnyMetadata as S, propagateMetadataThroughRelocation as T, section as _, makeOffset as a, split as b, makeTorus as c, booleanPipeline as d, cut as f, intersect as g, fuseAll as h, makeEllipsoid as i, findFacesByTag as j, getShapeColor as k, makeVertex as l, fuse as m, makeCone as n, makeSolid as o, cutAll as p, makeCylinder as r, makeSphere as s, makeCompound as t, weldShellsAndFaces as u, sectionToFace as v, propagateMetadataByHash as w, collectInputFaceHashes as x, slice as y };
package/dist/text.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_textBlueprints = require("./textBlueprints-Cv-lkXnr.cjs");
3
- const require_textMetrics = require("./textMetrics-DQauYgh5.cjs");
2
+ const require_textBlueprints = require("./textBlueprints-BMvBJ79v.cjs");
3
+ const require_textMetrics = require("./textMetrics-Byfb_37y.cjs");
4
4
  exports.fontMetrics = require_textMetrics.fontMetrics;
5
5
  exports.getFont = require_textBlueprints.getFont;
6
6
  exports.loadFont = require_textBlueprints.loadFont;
package/dist/text.js CHANGED
@@ -1,3 +1,3 @@
1
- import { n as getFont, r as loadFont, t as textBlueprints } from "./textBlueprints-C1aMaWLc.js";
2
- import { n as textMetrics, r as sketchText, t as fontMetrics } from "./textMetrics-DH3YPwVC.js";
1
+ import { n as getFont, r as loadFont, t as textBlueprints } from "./textBlueprints-myJW6Fzl.js";
2
+ import { n as textMetrics, r as sketchText, t as fontMetrics } from "./textMetrics-CPFqh2a1.js";
3
3
  export { fontMetrics, getFont, loadFont, sketchText, textBlueprints, textMetrics };
@@ -6,7 +6,7 @@ const require_types = require("./types-KjA8tY4Y.cjs");
6
6
  const require_vecOps = require("./vecOps-CCnJt-yH.cjs");
7
7
  const require_planeOps = require("./planeOps-VlFxtvzY.cjs");
8
8
  const require_faceFns = require("./faceFns-C0A8O-2a.cjs");
9
- const require_solidBuilders = require("./solidBuilders-BWLoWRk1.cjs");
9
+ const require_solidBuilders = require("./solidBuilders-CgW7Ge_s.cjs");
10
10
  const require_curveFns = require("./curveFns-jmKL1KZp.cjs");
11
11
  const require_arrayAccess = require("./arrayAccess-e4H9cBfh.cjs");
12
12
  const require_surfaceBuilders = require("./surfaceBuilders-DUTDN2Ay.cjs");
@@ -5,7 +5,7 @@ import { r as toVec3 } from "./types-D24Y27N0.js";
5
5
  import { c as vecLength, d as vecNormalize, h as vecScale, r as vecCross } from "./vecOps-SKPRvPH-.js";
6
6
  import { n as createPlane } from "./planeOps-CQahLrCx.js";
7
7
  import { v as copyShape } from "./faceFns-CaBQNffu.js";
8
- import { o as makeSolid, p as cutAll, t as makeCompound } from "./solidBuilders-BSIOdrR5.js";
8
+ import { o as makeSolid, p as cutAll, t as makeCompound } from "./solidBuilders-Devga1Vk.js";
9
9
  import { l as curveStartPoint, u as curveTangentAt } from "./curveFns-Bh_PHl9N.js";
10
10
  import { n as getAtOrThrow, t as firstOrThrow } from "./arrayAccess-DrUGPADn.js";
11
11
  import { i as makeNewFaceWithinFace, r as makeFace, t as addHolesInFace } from "./surfaceBuilders-B7WlmoVr.js";
@@ -1,5 +1,5 @@
1
1
  const require_errors = require("./errors-RHkKO5bZ.cjs");
2
- const require_textBlueprints = require("./textBlueprints-Cv-lkXnr.cjs");
2
+ const require_textBlueprints = require("./textBlueprints-BMvBJ79v.cjs");
3
3
  //#region src/text/sketchText.ts
4
4
  /**
5
5
  * Render text as 3D sketch outlines on a plane.
@@ -1,5 +1,5 @@
1
1
  import { E as ok, d as validationError, g as err, t as BrepErrorCode } from "./errors-MHLiNE-C.js";
2
- import { g as wrapSketchData, i as Sketches, n as getFont, t as textBlueprints, v as CompoundSketch } from "./textBlueprints-C1aMaWLc.js";
2
+ import { g as wrapSketchData, i as Sketches, n as getFont, t as textBlueprints, v as CompoundSketch } from "./textBlueprints-myJW6Fzl.js";
3
3
  //#region src/text/sketchText.ts
4
4
  /**
5
5
  * Render text as 3D sketch outlines on a plane.
@@ -2,8 +2,8 @@ import { K as getKernel, M as DisposalScope, P as createKernelHandle, W as _usin
2
2
  import { E as ok, d as validationError, g as err, n as computationError, r as ioError, t as BrepErrorCode, x as isOk } from "./errors-MHLiNE-C.js";
3
3
  import { d as vecNormalize, s as vecIsZero } from "./vecOps-SKPRvPH-.js";
4
4
  import { b as fromBREP } from "./faceFns-CaBQNffu.js";
5
- import { h as fuseAll } from "./solidBuilders-BSIOdrR5.js";
6
- import { E as wire, h as line } from "./primitiveFns-5E__ejiB.js";
5
+ import { h as fuseAll } from "./solidBuilders-Devga1Vk.js";
6
+ import { E as wire, h as line } from "./primitiveFns-BSMbMRf1.js";
7
7
  import { s as toBREP } from "./shapeFns-DyDRpo6K.js";
8
8
  import { t as loft } from "./loftFns-m7LoJWE2.js";
9
9
  import { c as resolveRefParams } from "./refResolveFns-DcyIQSDi.js";
@@ -2,8 +2,8 @@ const require_shapeTypes = require("./shapeTypes-DVExh1xP.cjs");
2
2
  const require_errors = require("./errors-RHkKO5bZ.cjs");
3
3
  const require_vecOps = require("./vecOps-CCnJt-yH.cjs");
4
4
  const require_faceFns = require("./faceFns-C0A8O-2a.cjs");
5
- const require_solidBuilders = require("./solidBuilders-BWLoWRk1.cjs");
6
- const require_primitiveFns = require("./primitiveFns-CBxF87wn.cjs");
5
+ const require_solidBuilders = require("./solidBuilders-CgW7Ge_s.cjs");
6
+ const require_primitiveFns = require("./primitiveFns-C6Trlz8m.cjs");
7
7
  const require_shapeFns = require("./shapeFns-DDTLk0mJ.cjs");
8
8
  const require_loftFns = require("./loftFns-u-yPHpJ9.cjs");
9
9
  const require_refResolveFns = require("./refResolveFns-c7RWIsZy.cjs");
@@ -6,6 +6,9 @@ export type Color = [number, number, number, number];
6
6
  export type ColorInput = string | [number, number, number] | [number, number, number, number];
7
7
  /** O(1) check whether a shape has any color metadata (shape or face level). */
8
8
  export declare function hasColorMetadata(shape: AnyShape<Dimension>): boolean;
9
+ /** Parse any accepted color input into canonical RGBA (exported so content-
10
+ * addressed consumers can canonicalize before hashing). */
11
+ export declare function parseColor(input: ColorInput): Color;
9
12
  /**
10
13
  * Set a whole-shape color (stored externally via WeakMap).
11
14
  * Returns the same shape reference.
package/dist/topology.cjs CHANGED
@@ -1,12 +1,12 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_topologyQueryFns = require("./topologyQueryFns-BtLGfXgL.cjs");
3
3
  const require_faceFns = require("./faceFns-C0A8O-2a.cjs");
4
- const require_solidBuilders = require("./solidBuilders-BWLoWRk1.cjs");
5
- const require_primitiveFns = require("./primitiveFns-CBxF87wn.cjs");
4
+ const require_solidBuilders = require("./solidBuilders-CgW7Ge_s.cjs");
5
+ const require_primitiveFns = require("./primitiveFns-C6Trlz8m.cjs");
6
6
  const require_shapeFns = require("./shapeFns-DDTLk0mJ.cjs");
7
7
  const require_curveFns = require("./curveFns-jmKL1KZp.cjs");
8
8
  const require_meshFns = require("./meshFns-CB7HsxzB.cjs");
9
- const require_healingFns = require("./healingFns-CfSU0G7V.cjs");
9
+ const require_healingFns = require("./healingFns-DTr6cgTb.cjs");
10
10
  const require_adjacencyFns = require("./adjacencyFns-BhdfZany.cjs");
11
11
  exports.addHoles = require_primitiveFns.addHoles;
12
12
  exports.adjacentFaces = require_adjacencyFns.adjacentFaces;
package/dist/topology.js CHANGED
@@ -1,10 +1,10 @@
1
1
  import { C as vertexPosition, _ as iterFaces, b as iterVertices, c as getFaces, f as getVertices, g as iterEdges, m as invalidateShapeCache, n as getBounds, p as getWires, s as getEdges, x as iterWires } from "./topologyQueryFns-CwYkfE3v.js";
2
2
  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, r as faceCenter, s as getSurfaceType, t as classifyPointOnFace, u as outerWire, x as isCompSolid, y as downcast } from "./faceFns-CaBQNffu.js";
3
- import { h as fuseAll, p as cutAll } from "./solidBuilders-BSIOdrR5.js";
4
- import { C as threePointArc, D as wireLoop, E as wire, S as tangentArc, T as vertex, _ as polygon, a as circle, b as sphere, c as cylinder, d as ellipsoid, f as face, g as offsetFace, h as line, i as bsplineApprox, 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, x as subFace, y as solid } from "./primitiveFns-5E__ejiB.js";
3
+ import { h as fuseAll, p as cutAll } from "./solidBuilders-Devga1Vk.js";
4
+ import { C as threePointArc, D as wireLoop, E as wire, S as tangentArc, T as vertex, _ as polygon, a as circle, b as sphere, c as cylinder, d as ellipsoid, f as face, g as offsetFace, h as line, i as bsplineApprox, 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, x as subFace, y as solid } from "./primitiveFns-BSMbMRf1.js";
5
5
  import { a as isSameShape, i as isEqualShape, n as getHashCode } from "./shapeFns-DyDRpo6K.js";
6
6
  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-Bh_PHl9N.js";
7
7
  import { d as createMeshCache, n as exportSTEP, r as exportSTL, t as exportIGES, u as clearMeshCache } from "./meshFns-CpfeEN1b.js";
8
- import { A as toBufferGeometryData, C as shellWithEvolution, D as getNurbsCurveData, E as fuseAllBisect, O as getNurbsSurfaceData, P as toLineGeometryData, S as intersectWithEvolution, T as cutAllBisect, _ as positionOnCurve, a as healFace, b as filletWithEvolution, g as variableFillet, j as toGroupedBufferGeometryData, k as chamferDistAngle, l as solidFromShell, n as fixSelfIntersection, o as healSolid, r as fixShape, s as healWire, t as autoHeal, v as chamferWithEvolution, w as checkBoolean, x as fuseWithEvolution, y as cutWithEvolution } from "./healingFns-Digw1d6D.js";
8
+ import { A as toBufferGeometryData, C as shellWithEvolution, D as getNurbsCurveData, E as fuseAllBisect, O as getNurbsSurfaceData, P as toLineGeometryData, S as intersectWithEvolution, T as cutAllBisect, _ as positionOnCurve, a as healFace, b as filletWithEvolution, g as variableFillet, j as toGroupedBufferGeometryData, k as chamferDistAngle, l as solidFromShell, n as fixSelfIntersection, o as healSolid, r as fixShape, s as healWire, t as autoHeal, v as chamferWithEvolution, w as checkBoolean, x as fuseWithEvolution, y as cutWithEvolution } from "./healingFns-BptGY1Th.js";
9
9
  import { i as facesOfEdge, l as wiresOfFace, n as adjacentFaces, o as sharedEdges, r as edgesOfFace, s as verticesOfEdge } from "./adjacencyFns-CwcdjOsT.js";
10
10
  export { addHoles, adjacentFaces, approximateCurve, asTopo, autoHeal, bezier, box, bsplineApprox, cast, chamferDistAngle as chamferDistAngleShape, chamferWithEvolution, checkBoolean, circle, classifyPointOnFace, clearMeshCache, compound, cone, createMeshCache, curveAxis, curveEndPoint, curveIsClosed, curveIsPeriodic, curveLength, curvePeriod, curvePointAt, curveStartPoint, curveTangentAt, cutAll, cutAllBisect, cutWithEvolution, cylinder, fromBREP as deserializeShape, downcast, edgesOfFace, ellipse, ellipseArc, ellipsoid, exportIGES, exportSTEP, exportSTL, face, faceAxis, faceCenter, faceGeomType, faceOrientation, facesOfEdge, filledFace, filletWithEvolution, fixSelfIntersection, fixShape, flipFaceOrientation, flipOrientation, fuseAll, fuseAllBisect, fuseWithEvolution, getBounds, getCurveType, getEdges, getFaces, getHashCode, getNurbsCurveData, getNurbsSurfaceData, getOrientation, getSurfaceType, getVertices, getWires, healFace, healSolid, healWire, helix, innerWires, interpolateCurve, intersectWithEvolution, invalidateShapeCache, isCompSolid, isEqualShape, isSameShape, iterEdges, iterFaces, iterTopo, iterVertices, iterWires, line, normalAt, offsetFace, offsetWire2D, outerWire, pointOnSurface, polygon, positionOnCurve, projectPointOnFace, sewShells, shapeType, sharedEdges, shellWithEvolution, solid, solidFromShell, sphere, subFace, tangentArc, threePointArc, toBufferGeometryData, toGroupedBufferGeometryData, toLineGeometryData, torus, uvBounds, uvCoordinates, variableFillet, vertex, vertexPosition, verticesOfEdge, wire, wireLoop, wiresOfFace };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "brepjs",
3
- "version": "18.128.0",
3
+ "version": "18.129.0",
4
4
  "description": "Web CAD library with pluggable geometry kernel",
5
5
  "keywords": [
6
6
  "cad",