brepjs 18.99.5 → 18.100.1

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 (78) hide show
  1. package/dist/2d.cjs +6 -6
  2. package/dist/2d.js +6 -6
  3. package/dist/{blueprint-BoK8H4Eq.cjs → blueprint-BhCha_8H.cjs} +5 -5
  4. package/dist/{blueprint-Dg3dsUal.js → blueprint-Bqmxcyfd.js} +5 -5
  5. package/dist/{blueprintFns-C3F0jZOe.cjs → blueprintFns-DKmyNVyL.cjs} +2 -2
  6. package/dist/{blueprintFns-CuZU7Dt6.js → blueprintFns-_emMJGKf.js} +2 -2
  7. package/dist/{blueprintSketcher-CIsOckAh.js → blueprintSketcher-B5XBXgri.js} +65 -50
  8. package/dist/{blueprintSketcher-B7QRguA5.cjs → blueprintSketcher-DwL9iPAG.cjs} +65 -50
  9. package/dist/{boolean2D-DcowIZPB.cjs → boolean2D-BJ6MwGgV.cjs} +4 -4
  10. package/dist/{boolean2D-CZiGMjEF.js → boolean2D-DiQyJiA-.js} +4 -4
  11. package/dist/brepjs.cjs +24 -24
  12. package/dist/brepjs.js +24 -24
  13. package/dist/{cameraFns-BA7CVtWJ.js → cameraFns-BCLtAeFB.js} +2 -2
  14. package/dist/{cameraFns-IL7qYFaG.cjs → cameraFns-BjcKjYpw.cjs} +2 -2
  15. package/dist/core.cjs +1 -1
  16. package/dist/core.js +1 -1
  17. package/dist/{cornerFinder-eoxdiUiN.js → cornerFinder-B-zZ2G9-.js} +1 -1
  18. package/dist/{cornerFinder-C83MpPRk.cjs → cornerFinder-DyYE74wI.cjs} +1 -1
  19. package/dist/{curveFns-DT1yMgBI.js → curveFns-BKpLwUdG.js} +1 -1
  20. package/dist/{curveFns-D3k8aHIE.cjs → curveFns-DwBW-FmM.cjs} +1 -1
  21. package/dist/{drawFns-C6K03snv.cjs → drawFns-BDPAuKxN.cjs} +12 -12
  22. package/dist/{drawFns-D23xqM0C.js → drawFns-SFAjbxKc.js} +12 -12
  23. package/dist/{faceFns-CmhEEB-L.js → faceFns-B642NCgD.js} +2 -2
  24. package/dist/{faceFns-DSdVqqVP.cjs → faceFns-DrBS1FKx.cjs} +2 -2
  25. package/dist/{healingFns-CRH5H0ik.cjs → healingFns-CA_Pxs_R.cjs} +5 -5
  26. package/dist/{healingFns-jp-NXq1c.js → healingFns-CWicvCr2.js} +5 -5
  27. package/dist/{helpers-Bykw93Yc.cjs → helpers-BVwuuo7f.cjs} +6 -6
  28. package/dist/{helpers-mPnUPOIM.js → helpers-VUDxsMV6.js} +6 -6
  29. package/dist/{importFns-CJVyVdNQ.js → importFns-CPEC-mu2.js} +2 -2
  30. package/dist/{importFns-Nlx1v8IF.cjs → importFns-D7CBrzdj.cjs} +2 -2
  31. package/dist/io.cjs +2 -2
  32. package/dist/io.js +2 -2
  33. package/dist/kernel/brepkit/brepkitWasmTypes.d.ts +2 -2
  34. package/dist/kernel/interfaces/meshOps.d.ts +2 -4
  35. package/dist/{loftFns-CxnBxE9h.js → loftFns-6LL25A5A.js} +1 -1
  36. package/dist/{loftFns-CyrWJCXb.cjs → loftFns-BG5aCsSy.cjs} +1 -1
  37. package/dist/{measureFns-BtPAmRfH.cjs → measureFns-CMzOaAYQ.cjs} +3 -3
  38. package/dist/{measureFns-D0e8tGSP.js → measureFns-o-fR5CV_.js} +3 -3
  39. package/dist/measurement.cjs +1 -1
  40. package/dist/measurement.js +1 -1
  41. package/dist/{meshFns-Cv-_-nIL.cjs → meshFns-DoqRG8XQ.cjs} +3 -3
  42. package/dist/{meshFns-IeQzI5dz.js → meshFns-k2Bsp0Xp.js} +3 -3
  43. package/dist/operations/threadFns.d.ts +8 -1
  44. package/dist/operations.cjs +2 -2
  45. package/dist/operations.js +2 -2
  46. package/dist/{primitiveFns-DOHI4nuz.js → primitiveFns-CPbjoGeA.js} +4 -4
  47. package/dist/{primitiveFns-BDQodKI0.cjs → primitiveFns-jeA2auqw.cjs} +4 -4
  48. package/dist/projection.cjs +1 -1
  49. package/dist/projection.js +1 -1
  50. package/dist/query.cjs +2 -2
  51. package/dist/query.js +2 -2
  52. package/dist/{shapeFns-DGjXjLp_.js → shapeFns-FrRtxWiz.js} +2 -2
  53. package/dist/{shapeFns-CqYYHFqr.cjs → shapeFns-eQx9e6lo.cjs} +2 -2
  54. package/dist/shapeRef.cjs +1 -1
  55. package/dist/shapeRef.js +1 -1
  56. package/dist/{shapeRefFns-DNbdr2rL.js → shapeRefFns-C2oR3Cid.js} +4 -4
  57. package/dist/{shapeRefFns-9Fexl5XC.cjs → shapeRefFns-D1WVYLvG.cjs} +4 -4
  58. package/dist/{shapeTypes-BIcALNFv.js → shapeTypes-D9XYNPBs.js} +2 -2
  59. package/dist/{shapeTypes-DwNTiXjG.cjs → shapeTypes-DplVM8Fy.cjs} +2 -2
  60. package/dist/sketching.cjs +3 -3
  61. package/dist/sketching.js +3 -3
  62. package/dist/{solidBuilders-cM4rOTJ5.js → solidBuilders-CxJJkiPi.js} +5 -5
  63. package/dist/{solidBuilders-DtK5cc9v.cjs → solidBuilders-DI4CSKe-.cjs} +5 -5
  64. package/dist/{surfaceBuilders-DvpxHHIm.cjs → surfaceBuilders-CDrFrFBH.cjs} +2 -2
  65. package/dist/{surfaceBuilders-BQx3TjMH.js → surfaceBuilders-Cf3c00zK.js} +2 -2
  66. package/dist/text.cjs +2 -2
  67. package/dist/text.js +2 -2
  68. package/dist/{textBlueprints-BxSDf_IW.js → textBlueprints-DbLlIr5s.js} +7 -7
  69. package/dist/{textBlueprints-BXfjcyoe.cjs → textBlueprints-ypK-L96F.cjs} +7 -7
  70. package/dist/{textMetrics-CiCNsEr-.js → textMetrics-BWST-GMU.js} +1 -1
  71. package/dist/{textMetrics-DRo8iTiW.cjs → textMetrics-CMXyoBtR.cjs} +1 -1
  72. package/dist/{threadFns-YDyX33Wl.js → threadFns-BcgGRuMg.js} +19 -15
  73. package/dist/{threadFns-p7X2MRCA.cjs → threadFns-CvjUrsgG.cjs} +19 -15
  74. package/dist/topology.cjs +8 -8
  75. package/dist/topology.js +8 -8
  76. package/dist/{topologyQueryFns-a2i0YhGF.cjs → topologyQueryFns-Dzw_tis6.cjs} +1 -1
  77. package/dist/{topologyQueryFns-0BIOC7YH.js → topologyQueryFns-jDWO6A94.js} +1 -1
  78. package/package.json +5 -5
package/dist/2d.cjs CHANGED
@@ -1,11 +1,11 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_shapeTypes = require("./shapeTypes-DwNTiXjG.cjs");
2
+ const require_shapeTypes = require("./shapeTypes-DplVM8Fy.cjs");
3
3
  const require_errors = require("./errors-CXJtc4I7.cjs");
4
- const require_topologyQueryFns = require("./topologyQueryFns-a2i0YhGF.cjs");
5
- const require_blueprintSketcher = require("./blueprintSketcher-B7QRguA5.cjs");
6
- const require_blueprint = require("./blueprint-BoK8H4Eq.cjs");
7
- const require_boolean2D = require("./boolean2D-DcowIZPB.cjs");
8
- const require_blueprintFns = require("./blueprintFns-C3F0jZOe.cjs");
4
+ const require_topologyQueryFns = require("./topologyQueryFns-Dzw_tis6.cjs");
5
+ const require_blueprintSketcher = require("./blueprintSketcher-DwL9iPAG.cjs");
6
+ const require_blueprint = require("./blueprint-BhCha_8H.cjs");
7
+ const require_boolean2D = require("./boolean2D-BJ6MwGgV.cjs");
8
+ const require_blueprintFns = require("./blueprintFns-DKmyNVyL.cjs");
9
9
  //#region 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 { B as createKernelHandle, Q as getKernel2D, a as createEdge } from "./shapeTypes-BIcALNFv.js";
1
+ import { B as createKernelHandle, Q as getKernel2D, a as createEdge } from "./shapeTypes-D9XYNPBs.js";
2
2
  import { A as ok, b as err, d as validationError, t as BrepErrorCode } from "./errors-DNWJsfVU.js";
3
- import { w as kernelCallRaw } from "./topologyQueryFns-0BIOC7YH.js";
4
- import { a as Blueprints, i as CompoundBlueprint, r as organiseBlueprints } from "./blueprintSketcher-CIsOckAh.js";
5
- import { _ as Curve2D, t as Blueprint, y as BoundingBox2d } from "./blueprint-Dg3dsUal.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-CZiGMjEF.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-CuZU7Dt6.js";
3
+ import { w as kernelCallRaw } from "./topologyQueryFns-jDWO6A94.js";
4
+ import { a as Blueprints, i as CompoundBlueprint, r as organiseBlueprints } from "./blueprintSketcher-B5XBXgri.js";
5
+ import { _ as Curve2D, t as Blueprint, y as BoundingBox2d } from "./blueprint-Bqmxcyfd.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-DiQyJiA-.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-_emMJGKf.js";
8
8
  //#region src/core/curve2dHandle.ts
9
9
  /**
10
10
  * Wrap a raw kernel 2D curve handle with brand + disposal tracking.
@@ -1,14 +1,14 @@
1
- const require_shapeTypes = require("./shapeTypes-DwNTiXjG.cjs");
1
+ const require_shapeTypes = require("./shapeTypes-DplVM8Fy.cjs");
2
2
  const require_vec3 = require("./vec3-CFwOI0ZI.cjs");
3
3
  const require_errors = require("./errors-CXJtc4I7.cjs");
4
4
  const require_constants = require("./constants-BOVyEYGH.cjs");
5
5
  const require_types = require("./types-KjA8tY4Y.cjs");
6
6
  const require_planeOps = require("./planeOps-BA4HfgQu.cjs");
7
- const require_faceFns = require("./faceFns-DSdVqqVP.cjs");
8
- const require_curveFns = require("./curveFns-D3k8aHIE.cjs");
7
+ const require_faceFns = require("./faceFns-DrBS1FKx.cjs");
8
+ const require_curveFns = require("./curveFns-DwBW-FmM.cjs");
9
9
  const require_arrayAccess = require("./arrayAccess-e4H9cBfh.cjs");
10
- const require_surfaceBuilders = require("./surfaceBuilders-DvpxHHIm.cjs");
11
- const require_helpers = require("./helpers-Bykw93Yc.cjs");
10
+ const require_surfaceBuilders = require("./surfaceBuilders-CDrFrFBH.cjs");
11
+ const require_helpers = require("./helpers-BVwuuo7f.cjs");
12
12
  //#region 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 { G as unregisterFromCleanup, Q as getKernel2D, U as registerForCleanup, Z as getKernel, a as createEdge, u as createWire } from "./shapeTypes-BIcALNFv.js";
1
+ import { G as unregisterFromCleanup, Q as getKernel2D, U as registerForCleanup, Z as getKernel, a as createEdge, u as createWire } from "./shapeTypes-D9XYNPBs.js";
2
2
  import { n as wasmIndex } from "./vec3-Dpha8d5k.js";
3
3
  import { A as ok, R as unwrap, b as err, d as validationError, h as bug, n as computationError } from "./errors-DNWJsfVU.js";
4
4
  import { r as RAD2DEG, t as DEG2RAD } from "./constants-ITRzCnCp.js";
5
5
  import { r as toVec3 } from "./types-D24Y27N0.js";
6
6
  import { r as makePlane } from "./planeOps-DSjjtrjg.js";
7
- import { _ as cast, h as uvCoordinates, i as faceGeomType, m as uvBounds, r as faceCenter } from "./faceFns-CmhEEB-L.js";
8
- import { p as getOrientation } from "./curveFns-DT1yMgBI.js";
7
+ import { _ as cast, h as uvCoordinates, i as faceGeomType, m as uvBounds, r as faceCenter } from "./faceFns-B642NCgD.js";
8
+ import { p as getOrientation } from "./curveFns-BKpLwUdG.js";
9
9
  import { n as getAtOrThrow, r as lastOrThrow, t as firstOrThrow } from "./arrayAccess-DrUGPADn.js";
10
- import { r as makeFace } from "./surfaceBuilders-BQx3TjMH.js";
11
- import { _ as samePoint, b as subtract2d, l as add2d, o as normalize2d, p as distance2d, t as getSingleFace, v as scalarMultiply2d } from "./helpers-mPnUPOIM.js";
10
+ import { r as makeFace } from "./surfaceBuilders-Cf3c00zK.js";
11
+ import { _ as samePoint, b as subtract2d, l as add2d, o as normalize2d, p as distance2d, t as getSingleFace, v as scalarMultiply2d } from "./helpers-VUDxsMV6.js";
12
12
  //#region 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-CXJtc4I7.cjs");
2
- const require_blueprintSketcher = require("./blueprintSketcher-B7QRguA5.cjs");
3
- const require_blueprint = require("./blueprint-BoK8H4Eq.cjs");
2
+ const require_blueprintSketcher = require("./blueprintSketcher-DwL9iPAG.cjs");
3
+ const require_blueprint = require("./blueprint-BhCha_8H.cjs");
4
4
  //#region 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 { A as ok, b as err, d as validationError, t as BrepErrorCode } from "./errors-DNWJsfVU.js";
2
- import { i as CompoundBlueprint } from "./blueprintSketcher-CIsOckAh.js";
3
- import { t as Blueprint } from "./blueprint-Dg3dsUal.js";
2
+ import { i as CompoundBlueprint } from "./blueprintSketcher-B5XBXgri.js";
3
+ import { t as Blueprint } from "./blueprint-Bqmxcyfd.js";
4
4
  //#region src/2d/lib/curve2dFns.ts
5
5
  /**
6
6
  * Return a reversed copy of the curve (non-mutating).
@@ -1,10 +1,10 @@
1
- import { Q as getKernel2D, Z as getKernel } from "./shapeTypes-BIcALNFv.js";
1
+ import { Q as getKernel2D, Z as getKernel } from "./shapeTypes-D9XYNPBs.js";
2
2
  import { n as wasmIndex } from "./vec3-Dpha8d5k.js";
3
3
  import { A as ok, R as unwrap, T as isOk, b as err, h as bug, n as computationError, s as safeIndex } from "./errors-DNWJsfVU.js";
4
4
  import { r as RAD2DEG, t as DEG2RAD } from "./constants-ITRzCnCp.js";
5
5
  import { t as firstOrThrow } from "./arrayAccess-DrUGPADn.js";
6
- import { _ as samePoint, b as subtract2d, d as cartesianToPolar, f as crossProduct2d, g as rotate2d, h as polarToCartesian, l as add2d, m as polarAngle2d, o as normalize2d, p as distance2d, v as scalarMultiply2d } from "./helpers-mPnUPOIM.js";
7
- import { _ as Curve2D, c as make2dCircle, f as make2dSegmentCurve, h as approximateAsBSpline, m as make2dThreePointArc, n as asSVG, o as make2dArcFromCenter, p as make2dTangentArc, r as viewbox, s as make2dBezierCurve, t as Blueprint, u as make2dEllipseArc, x as isPoint2D, y as BoundingBox2d } from "./blueprint-Dg3dsUal.js";
6
+ import { _ as samePoint, b as subtract2d, d as cartesianToPolar, f as crossProduct2d, g as rotate2d, h as polarToCartesian, l as add2d, m as polarAngle2d, o as normalize2d, p as distance2d, v as scalarMultiply2d } from "./helpers-VUDxsMV6.js";
7
+ import { _ as Curve2D, c as make2dCircle, f as make2dSegmentCurve, h as approximateAsBSpline, m as make2dThreePointArc, n as asSVG, o as make2dArcFromCenter, p as make2dTangentArc, r as viewbox, s as make2dBezierCurve, t as Blueprint, u as make2dEllipseArc, x as isPoint2D, y as BoundingBox2d } from "./blueprint-Bqmxcyfd.js";
8
8
  //#region node_modules/flatqueue/index.js
9
9
  /**
10
10
  * @typedef {Float64ArrayConstructor | Float32ArrayConstructor |
@@ -214,13 +214,15 @@ var Flatbush = class Flatbush {
214
214
  * @returns {number} A zero-based, incremental number that represents the newly added rectangle.
215
215
  */
216
216
  add(minX, minY, maxX = minX, maxY = minY) {
217
- const index = this._pos >> 2;
217
+ const pos = this._pos;
218
+ const index = pos >> 2;
218
219
  const boxes = this._boxes;
219
220
  this._indices[index] = index;
220
- boxes[this._pos++] = minX;
221
- boxes[this._pos++] = minY;
222
- boxes[this._pos++] = maxX;
223
- boxes[this._pos++] = maxY;
221
+ boxes[pos] = minX;
222
+ boxes[pos + 1] = minY;
223
+ boxes[pos + 2] = maxX;
224
+ boxes[pos + 3] = maxY;
225
+ this._pos = pos + 4;
224
226
  if (minX < this.minX) this.minX = minX;
225
227
  if (minY < this.minY) this.minY = minY;
226
228
  if (maxX > this.maxX) this.maxX = maxX;
@@ -238,39 +240,44 @@ var Flatbush = class Flatbush {
238
240
  boxes[this._pos++] = this.maxY;
239
241
  return;
240
242
  }
241
- const width = this.maxX - this.minX || 1;
242
- const height = this.maxY - this.minY || 1;
243
- const hilbertValues = new Int32Array(this.numItems);
243
+ const { numItems, minX, minY, nodeSize, _indices: indices, _levelBounds: levelBounds } = this;
244
+ const width = this.maxX - minX || 1;
245
+ const height = this.maxY - minY || 1;
246
+ const hilbertValues = new Int32Array(numItems);
244
247
  const hilbertMax = 65535;
245
- for (let i = 0, pos = 0; i < this.numItems; i++) {
246
- const minX = boxes[pos++];
247
- const minY = boxes[pos++];
248
- const maxX = boxes[pos++];
249
- const maxY = boxes[pos++];
250
- hilbertValues[i] = hilbert(Math.floor(hilbertMax * ((minX + maxX) / 2 - this.minX) / width), Math.floor(hilbertMax * ((minY + maxY) / 2 - this.minY) / height));
248
+ const sx = hilbertMax / width;
249
+ const sy = hilbertMax / height;
250
+ for (let i = 0, pos = 0; i < numItems; i++) {
251
+ const itemMinX = boxes[pos++];
252
+ const itemMinY = boxes[pos++];
253
+ const itemMaxX = boxes[pos++];
254
+ const itemMaxY = boxes[pos++];
255
+ hilbertValues[i] = hilbert(sx * ((itemMinX + itemMaxX) / 2 - minX) | 0, sy * ((itemMinY + itemMaxY) / 2 - minY) | 0);
251
256
  }
252
- sort(hilbertValues, boxes, this._indices, 0, this.numItems - 1, this.nodeSize);
253
- for (let i = 0, pos = 0; i < this._levelBounds.length - 1; i++) {
254
- const end = this._levelBounds[i];
255
- while (pos < end) {
256
- const nodeIndex = pos;
257
- let nodeMinX = boxes[pos++];
258
- let nodeMinY = boxes[pos++];
259
- let nodeMaxX = boxes[pos++];
260
- let nodeMaxY = boxes[pos++];
261
- for (let j = 1; j < this.nodeSize && pos < end; j++) {
262
- nodeMinX = Math.min(nodeMinX, boxes[pos++]);
263
- nodeMinY = Math.min(nodeMinY, boxes[pos++]);
264
- nodeMaxX = Math.max(nodeMaxX, boxes[pos++]);
265
- nodeMaxY = Math.max(nodeMaxY, boxes[pos++]);
257
+ sort(hilbertValues, boxes, indices, 0, numItems - 1, nodeSize);
258
+ let pos = numItems * 4;
259
+ for (let i = 0, readPos = 0; i < levelBounds.length - 1; i++) {
260
+ const end = levelBounds[i];
261
+ while (readPos < end) {
262
+ const nodeIndex = readPos;
263
+ let nodeMinX = boxes[readPos++];
264
+ let nodeMinY = boxes[readPos++];
265
+ let nodeMaxX = boxes[readPos++];
266
+ let nodeMaxY = boxes[readPos++];
267
+ for (let j = 1; j < nodeSize && readPos < end; j++) {
268
+ nodeMinX = Math.min(nodeMinX, boxes[readPos++]);
269
+ nodeMinY = Math.min(nodeMinY, boxes[readPos++]);
270
+ nodeMaxX = Math.max(nodeMaxX, boxes[readPos++]);
271
+ nodeMaxY = Math.max(nodeMaxY, boxes[readPos++]);
266
272
  }
267
- this._indices[this._pos >> 2] = nodeIndex;
268
- boxes[this._pos++] = nodeMinX;
269
- boxes[this._pos++] = nodeMinY;
270
- boxes[this._pos++] = nodeMaxX;
271
- boxes[this._pos++] = nodeMaxY;
273
+ indices[pos >> 2] = nodeIndex;
274
+ boxes[pos++] = nodeMinX;
275
+ boxes[pos++] = nodeMinY;
276
+ boxes[pos++] = nodeMaxX;
277
+ boxes[pos++] = nodeMaxY;
272
278
  }
273
279
  }
280
+ this._pos = pos;
274
281
  }
275
282
  /**
276
283
  * Search the index by a bounding box.
@@ -294,7 +301,7 @@ var Flatbush = class Flatbush {
294
301
  while (nodeIndex !== void 0) {
295
302
  const end = Math.min(nodeIndex + nodeSize * 4, levelBounds[level]);
296
303
  const isNode = nodeIndex >= numItems4;
297
- if (contained) this._collectContained(nodeIndex, end, level, isNode, q, results, filterFn);
304
+ if (contained) this._collectContained(nodeIndex, end, level, numItems4, results, filterFn);
298
305
  else for (let pos = nodeIndex; pos < end; pos += 4) {
299
306
  const x0 = boxes[pos];
300
307
  if (maxX < x0) continue;
@@ -320,22 +327,26 @@ var Flatbush = class Flatbush {
320
327
  return results;
321
328
  }
322
329
  /**
323
- * Collect children of a node whose bbox is fully inside the query, skipping intersection tests.
330
+ * Collect all leaves of a subtree that's fully inside the query, skipping intersection tests.
331
+ * Because the tree is packed bottom-up, those leaves occupy one contiguous block of the leaf
332
+ * level, so we skip traversal entirely: descend to the first leaf, then sweep the flat range.
324
333
  * @param {number} nodeIndex
325
334
  * @param {number} end
326
335
  * @param {number} level
327
- * @param {boolean} isNode whether the children are tree nodes (vs leaf items)
328
- * @param {number[]} q the traversal queue
336
+ * @param {number} numItems4
329
337
  * @param {number[]} results
330
338
  * @param {((index: number, x0: number, y0: number, x1: number, y1: number) => boolean) | undefined} filterFn
331
339
  */
332
- _collectContained(nodeIndex, end, level, isNode, q, results, filterFn) {
340
+ _collectContained(nodeIndex, end, level, numItems4, results, filterFn) {
333
341
  const boxes = this._boxes;
334
342
  const indices = this._indices;
335
- if (isNode) for (let pos = nodeIndex; pos < end; pos += 4) q.push(indices[pos >> 2] | 1, level - 1);
336
- else for (let pos = nodeIndex; pos < end; pos += 4) {
343
+ let pos = nodeIndex;
344
+ for (let l = level; l > 0; l--) pos = indices[pos >> 2];
345
+ const leafEnd = Math.min(pos + (end - nodeIndex) * this.nodeSize ** level, numItems4);
346
+ if (filterFn === void 0) for (; pos < leafEnd; pos += 4) results.push(indices[pos >> 2] | 0);
347
+ else for (; pos < leafEnd; pos += 4) {
337
348
  const index = indices[pos >> 2] | 0;
338
- if (filterFn === void 0 || filterFn(index, boxes[pos], boxes[pos + 1], boxes[pos + 2], boxes[pos + 3])) results.push(index);
349
+ if (filterFn(index, boxes[pos], boxes[pos + 1], boxes[pos + 2], boxes[pos + 3])) results.push(index);
339
350
  }
340
351
  }
341
352
  /**
@@ -354,11 +365,12 @@ var Flatbush = class Flatbush {
354
365
  const nodeSize4 = nodeSize * 4;
355
366
  const results = [];
356
367
  const maxDistSquared = maxDistance * maxDistance;
368
+ const trackNearest = maxResults === 1;
369
+ let bound = maxDistSquared;
357
370
  q.push(boxes.length - 4 << 1, 0);
358
371
  while (q.length) {
359
372
  const top = q.ids[0];
360
373
  if (top & 1) {
361
- if (q.values[0] > maxDistSquared) break;
362
374
  q.pop();
363
375
  results.push(top >> 1);
364
376
  if (results.length === maxResults) break;
@@ -369,17 +381,20 @@ var Flatbush = class Flatbush {
369
381
  const isLeafLevel = nodeIndex < numItems4;
370
382
  const end = Math.min(nodeIndex + nodeSize4, upperBound(nodeIndex, levelBounds));
371
383
  for (let pos = nodeIndex; pos < end; pos += 4) {
372
- const childIndex = indices[pos >> 2] | 0;
373
384
  const minX = boxes[pos];
374
385
  const minY = boxes[pos + 1];
375
386
  const maxX = boxes[pos + 2];
376
387
  const maxY = boxes[pos + 3];
377
- const dx = x < minX ? minX - x : x > maxX ? x - maxX : 0;
378
- const dy = y < minY ? minY - y : y > maxY ? y - maxY : 0;
388
+ const dx = Math.max(Math.max(minX - x, x - maxX), 0);
389
+ const dy = Math.max(Math.max(minY - y, y - maxY), 0);
379
390
  const dist = dx * dx + dy * dy;
380
- if (dist > maxDistSquared) continue;
391
+ if (dist > bound) continue;
392
+ const childIndex = indices[pos >> 2] | 0;
381
393
  if (isLeafLevel) {
382
- if (filterFn === void 0 || filterFn(childIndex)) q.push(childIndex << 1 | 1, dist);
394
+ if (filterFn === void 0 || filterFn(childIndex)) {
395
+ q.push(childIndex << 1 | 1, dist);
396
+ if (trackNearest && dist < bound) bound = dist;
397
+ }
383
398
  } else q.push(childIndex << 1, dist);
384
399
  }
385
400
  }
@@ -1,10 +1,10 @@
1
- const require_shapeTypes = require("./shapeTypes-DwNTiXjG.cjs");
1
+ const require_shapeTypes = require("./shapeTypes-DplVM8Fy.cjs");
2
2
  const require_vec3 = require("./vec3-CFwOI0ZI.cjs");
3
3
  const require_errors = require("./errors-CXJtc4I7.cjs");
4
4
  const require_constants = require("./constants-BOVyEYGH.cjs");
5
5
  const require_arrayAccess = require("./arrayAccess-e4H9cBfh.cjs");
6
- const require_helpers = require("./helpers-Bykw93Yc.cjs");
7
- const require_blueprint = require("./blueprint-BoK8H4Eq.cjs");
6
+ const require_helpers = require("./helpers-BVwuuo7f.cjs");
7
+ const require_blueprint = require("./blueprint-BhCha_8H.cjs");
8
8
  //#region node_modules/flatqueue/index.js
9
9
  /**
10
10
  * @typedef {Float64ArrayConstructor | Float32ArrayConstructor |
@@ -214,13 +214,15 @@ var Flatbush = class Flatbush {
214
214
  * @returns {number} A zero-based, incremental number that represents the newly added rectangle.
215
215
  */
216
216
  add(minX, minY, maxX = minX, maxY = minY) {
217
- const index = this._pos >> 2;
217
+ const pos = this._pos;
218
+ const index = pos >> 2;
218
219
  const boxes = this._boxes;
219
220
  this._indices[index] = index;
220
- boxes[this._pos++] = minX;
221
- boxes[this._pos++] = minY;
222
- boxes[this._pos++] = maxX;
223
- boxes[this._pos++] = maxY;
221
+ boxes[pos] = minX;
222
+ boxes[pos + 1] = minY;
223
+ boxes[pos + 2] = maxX;
224
+ boxes[pos + 3] = maxY;
225
+ this._pos = pos + 4;
224
226
  if (minX < this.minX) this.minX = minX;
225
227
  if (minY < this.minY) this.minY = minY;
226
228
  if (maxX > this.maxX) this.maxX = maxX;
@@ -238,39 +240,44 @@ var Flatbush = class Flatbush {
238
240
  boxes[this._pos++] = this.maxY;
239
241
  return;
240
242
  }
241
- const width = this.maxX - this.minX || 1;
242
- const height = this.maxY - this.minY || 1;
243
- const hilbertValues = new Int32Array(this.numItems);
243
+ const { numItems, minX, minY, nodeSize, _indices: indices, _levelBounds: levelBounds } = this;
244
+ const width = this.maxX - minX || 1;
245
+ const height = this.maxY - minY || 1;
246
+ const hilbertValues = new Int32Array(numItems);
244
247
  const hilbertMax = 65535;
245
- for (let i = 0, pos = 0; i < this.numItems; i++) {
246
- const minX = boxes[pos++];
247
- const minY = boxes[pos++];
248
- const maxX = boxes[pos++];
249
- const maxY = boxes[pos++];
250
- hilbertValues[i] = hilbert(Math.floor(hilbertMax * ((minX + maxX) / 2 - this.minX) / width), Math.floor(hilbertMax * ((minY + maxY) / 2 - this.minY) / height));
248
+ const sx = hilbertMax / width;
249
+ const sy = hilbertMax / height;
250
+ for (let i = 0, pos = 0; i < numItems; i++) {
251
+ const itemMinX = boxes[pos++];
252
+ const itemMinY = boxes[pos++];
253
+ const itemMaxX = boxes[pos++];
254
+ const itemMaxY = boxes[pos++];
255
+ hilbertValues[i] = hilbert(sx * ((itemMinX + itemMaxX) / 2 - minX) | 0, sy * ((itemMinY + itemMaxY) / 2 - minY) | 0);
251
256
  }
252
- sort(hilbertValues, boxes, this._indices, 0, this.numItems - 1, this.nodeSize);
253
- for (let i = 0, pos = 0; i < this._levelBounds.length - 1; i++) {
254
- const end = this._levelBounds[i];
255
- while (pos < end) {
256
- const nodeIndex = pos;
257
- let nodeMinX = boxes[pos++];
258
- let nodeMinY = boxes[pos++];
259
- let nodeMaxX = boxes[pos++];
260
- let nodeMaxY = boxes[pos++];
261
- for (let j = 1; j < this.nodeSize && pos < end; j++) {
262
- nodeMinX = Math.min(nodeMinX, boxes[pos++]);
263
- nodeMinY = Math.min(nodeMinY, boxes[pos++]);
264
- nodeMaxX = Math.max(nodeMaxX, boxes[pos++]);
265
- nodeMaxY = Math.max(nodeMaxY, boxes[pos++]);
257
+ sort(hilbertValues, boxes, indices, 0, numItems - 1, nodeSize);
258
+ let pos = numItems * 4;
259
+ for (let i = 0, readPos = 0; i < levelBounds.length - 1; i++) {
260
+ const end = levelBounds[i];
261
+ while (readPos < end) {
262
+ const nodeIndex = readPos;
263
+ let nodeMinX = boxes[readPos++];
264
+ let nodeMinY = boxes[readPos++];
265
+ let nodeMaxX = boxes[readPos++];
266
+ let nodeMaxY = boxes[readPos++];
267
+ for (let j = 1; j < nodeSize && readPos < end; j++) {
268
+ nodeMinX = Math.min(nodeMinX, boxes[readPos++]);
269
+ nodeMinY = Math.min(nodeMinY, boxes[readPos++]);
270
+ nodeMaxX = Math.max(nodeMaxX, boxes[readPos++]);
271
+ nodeMaxY = Math.max(nodeMaxY, boxes[readPos++]);
266
272
  }
267
- this._indices[this._pos >> 2] = nodeIndex;
268
- boxes[this._pos++] = nodeMinX;
269
- boxes[this._pos++] = nodeMinY;
270
- boxes[this._pos++] = nodeMaxX;
271
- boxes[this._pos++] = nodeMaxY;
273
+ indices[pos >> 2] = nodeIndex;
274
+ boxes[pos++] = nodeMinX;
275
+ boxes[pos++] = nodeMinY;
276
+ boxes[pos++] = nodeMaxX;
277
+ boxes[pos++] = nodeMaxY;
272
278
  }
273
279
  }
280
+ this._pos = pos;
274
281
  }
275
282
  /**
276
283
  * Search the index by a bounding box.
@@ -294,7 +301,7 @@ var Flatbush = class Flatbush {
294
301
  while (nodeIndex !== void 0) {
295
302
  const end = Math.min(nodeIndex + nodeSize * 4, levelBounds[level]);
296
303
  const isNode = nodeIndex >= numItems4;
297
- if (contained) this._collectContained(nodeIndex, end, level, isNode, q, results, filterFn);
304
+ if (contained) this._collectContained(nodeIndex, end, level, numItems4, results, filterFn);
298
305
  else for (let pos = nodeIndex; pos < end; pos += 4) {
299
306
  const x0 = boxes[pos];
300
307
  if (maxX < x0) continue;
@@ -320,22 +327,26 @@ var Flatbush = class Flatbush {
320
327
  return results;
321
328
  }
322
329
  /**
323
- * Collect children of a node whose bbox is fully inside the query, skipping intersection tests.
330
+ * Collect all leaves of a subtree that's fully inside the query, skipping intersection tests.
331
+ * Because the tree is packed bottom-up, those leaves occupy one contiguous block of the leaf
332
+ * level, so we skip traversal entirely: descend to the first leaf, then sweep the flat range.
324
333
  * @param {number} nodeIndex
325
334
  * @param {number} end
326
335
  * @param {number} level
327
- * @param {boolean} isNode whether the children are tree nodes (vs leaf items)
328
- * @param {number[]} q the traversal queue
336
+ * @param {number} numItems4
329
337
  * @param {number[]} results
330
338
  * @param {((index: number, x0: number, y0: number, x1: number, y1: number) => boolean) | undefined} filterFn
331
339
  */
332
- _collectContained(nodeIndex, end, level, isNode, q, results, filterFn) {
340
+ _collectContained(nodeIndex, end, level, numItems4, results, filterFn) {
333
341
  const boxes = this._boxes;
334
342
  const indices = this._indices;
335
- if (isNode) for (let pos = nodeIndex; pos < end; pos += 4) q.push(indices[pos >> 2] | 1, level - 1);
336
- else for (let pos = nodeIndex; pos < end; pos += 4) {
343
+ let pos = nodeIndex;
344
+ for (let l = level; l > 0; l--) pos = indices[pos >> 2];
345
+ const leafEnd = Math.min(pos + (end - nodeIndex) * this.nodeSize ** level, numItems4);
346
+ if (filterFn === void 0) for (; pos < leafEnd; pos += 4) results.push(indices[pos >> 2] | 0);
347
+ else for (; pos < leafEnd; pos += 4) {
337
348
  const index = indices[pos >> 2] | 0;
338
- if (filterFn === void 0 || filterFn(index, boxes[pos], boxes[pos + 1], boxes[pos + 2], boxes[pos + 3])) results.push(index);
349
+ if (filterFn(index, boxes[pos], boxes[pos + 1], boxes[pos + 2], boxes[pos + 3])) results.push(index);
339
350
  }
340
351
  }
341
352
  /**
@@ -354,11 +365,12 @@ var Flatbush = class Flatbush {
354
365
  const nodeSize4 = nodeSize * 4;
355
366
  const results = [];
356
367
  const maxDistSquared = maxDistance * maxDistance;
368
+ const trackNearest = maxResults === 1;
369
+ let bound = maxDistSquared;
357
370
  q.push(boxes.length - 4 << 1, 0);
358
371
  while (q.length) {
359
372
  const top = q.ids[0];
360
373
  if (top & 1) {
361
- if (q.values[0] > maxDistSquared) break;
362
374
  q.pop();
363
375
  results.push(top >> 1);
364
376
  if (results.length === maxResults) break;
@@ -369,17 +381,20 @@ var Flatbush = class Flatbush {
369
381
  const isLeafLevel = nodeIndex < numItems4;
370
382
  const end = Math.min(nodeIndex + nodeSize4, upperBound(nodeIndex, levelBounds));
371
383
  for (let pos = nodeIndex; pos < end; pos += 4) {
372
- const childIndex = indices[pos >> 2] | 0;
373
384
  const minX = boxes[pos];
374
385
  const minY = boxes[pos + 1];
375
386
  const maxX = boxes[pos + 2];
376
387
  const maxY = boxes[pos + 3];
377
- const dx = x < minX ? minX - x : x > maxX ? x - maxX : 0;
378
- const dy = y < minY ? minY - y : y > maxY ? y - maxY : 0;
388
+ const dx = Math.max(Math.max(minX - x, x - maxX), 0);
389
+ const dy = Math.max(Math.max(minY - y, y - maxY), 0);
379
390
  const dist = dx * dx + dy * dy;
380
- if (dist > maxDistSquared) continue;
391
+ if (dist > bound) continue;
392
+ const childIndex = indices[pos >> 2] | 0;
381
393
  if (isLeafLevel) {
382
- if (filterFn === void 0 || filterFn(childIndex)) q.push(childIndex << 1 | 1, dist);
394
+ if (filterFn === void 0 || filterFn(childIndex)) {
395
+ q.push(childIndex << 1 | 1, dist);
396
+ if (trackNearest && dist < bound) bound = dist;
397
+ }
383
398
  } else q.push(childIndex << 1, dist);
384
399
  }
385
400
  }
@@ -1,10 +1,10 @@
1
1
  const require_vec3 = require("./vec3-CFwOI0ZI.cjs");
2
2
  const require_errors = require("./errors-CXJtc4I7.cjs");
3
3
  const require_arrayAccess = require("./arrayAccess-e4H9cBfh.cjs");
4
- const require_surfaceBuilders = require("./surfaceBuilders-DvpxHHIm.cjs");
5
- const require_blueprintSketcher = require("./blueprintSketcher-B7QRguA5.cjs");
6
- const require_helpers = require("./helpers-Bykw93Yc.cjs");
7
- const require_blueprint = require("./blueprint-BoK8H4Eq.cjs");
4
+ const require_surfaceBuilders = require("./surfaceBuilders-CDrFrFBH.cjs");
5
+ const require_blueprintSketcher = require("./blueprintSketcher-DwL9iPAG.cjs");
6
+ const require_helpers = require("./helpers-BVwuuo7f.cjs");
7
+ const require_blueprint = require("./blueprint-BhCha_8H.cjs");
8
8
  //#region 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 { n as wasmIndex } from "./vec3-Dpha8d5k.js";
2
2
  import { R as unwrap, h as bug, s as safeIndex } from "./errors-DNWJsfVU.js";
3
3
  import { r as lastOrThrow } from "./arrayAccess-DrUGPADn.js";
4
- import { v as zip } from "./surfaceBuilders-BQx3TjMH.js";
5
- import { a as Blueprints, i as CompoundBlueprint, l as intersectCurves, r as organiseBlueprints, t as BlueprintSketcher, u as Flatbush } from "./blueprintSketcher-CIsOckAh.js";
6
- import { _ as samePoint$1, b as subtract2d, f as crossProduct2d, s as PRECISION_INTERSECTION } from "./helpers-mPnUPOIM.js";
7
- import { b as removeDuplicatePoints, f as make2dSegmentCurve, t as Blueprint } from "./blueprint-Dg3dsUal.js";
4
+ import { v as zip } from "./surfaceBuilders-Cf3c00zK.js";
5
+ import { a as Blueprints, i as CompoundBlueprint, l as intersectCurves, r as organiseBlueprints, t as BlueprintSketcher, u as Flatbush } from "./blueprintSketcher-B5XBXgri.js";
6
+ import { _ as samePoint$1, b as subtract2d, f as crossProduct2d, s as PRECISION_INTERSECTION } from "./helpers-VUDxsMV6.js";
7
+ import { b as removeDuplicatePoints, f as make2dSegmentCurve, t as Blueprint } from "./blueprint-Bqmxcyfd.js";
8
8
  //#region src/2d/blueprints/cannedBlueprints.ts
9
9
  /**
10
10
  * Create a regular polygon blueprint inscribed in a circle of the given radius.
package/dist/brepjs.cjs CHANGED
@@ -1,37 +1,37 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_textBlueprints = require("./textBlueprints-BXfjcyoe.cjs");
3
- const require_shapeTypes = require("./shapeTypes-DwNTiXjG.cjs");
2
+ const require_textBlueprints = require("./textBlueprints-ypK-L96F.cjs");
3
+ const require_shapeTypes = require("./shapeTypes-DplVM8Fy.cjs");
4
4
  const require_occtWasmAdapter = require("./occtWasmAdapter-Bv2OTOX9.cjs");
5
5
  const require_vec3 = require("./vec3-CFwOI0ZI.cjs");
6
6
  const require_errors = require("./errors-CXJtc4I7.cjs");
7
- const require_topologyQueryFns = require("./topologyQueryFns-a2i0YhGF.cjs");
7
+ const require_topologyQueryFns = require("./topologyQueryFns-Dzw_tis6.cjs");
8
8
  const require_constants = require("./constants-BOVyEYGH.cjs");
9
9
  const require_types = require("./types-KjA8tY4Y.cjs");
10
10
  const require_vecOps = require("./vecOps-CCnJt-yH.cjs");
11
11
  const require_planeOps = require("./planeOps-BA4HfgQu.cjs");
12
- const require_faceFns = require("./faceFns-DSdVqqVP.cjs");
13
- const require_shapeFns = require("./shapeFns-CqYYHFqr.cjs");
14
- const require_curveFns = require("./curveFns-D3k8aHIE.cjs");
15
- const require_meshFns = require("./meshFns-Cv-_-nIL.cjs");
12
+ const require_faceFns = require("./faceFns-DrBS1FKx.cjs");
13
+ const require_shapeFns = require("./shapeFns-eQx9e6lo.cjs");
14
+ const require_curveFns = require("./curveFns-DwBW-FmM.cjs");
15
+ const require_meshFns = require("./meshFns-DoqRG8XQ.cjs");
16
16
  const require_arrayAccess = require("./arrayAccess-e4H9cBfh.cjs");
17
- const require_surfaceBuilders = require("./surfaceBuilders-DvpxHHIm.cjs");
18
- const require_solidBuilders = require("./solidBuilders-DtK5cc9v.cjs");
19
- const require_healingFns = require("./healingFns-CRH5H0ik.cjs");
20
- const require_threadFns = require("./threadFns-p7X2MRCA.cjs");
21
- const require_blueprintSketcher = require("./blueprintSketcher-B7QRguA5.cjs");
22
- const require_helpers = require("./helpers-Bykw93Yc.cjs");
23
- const require_drawFns = require("./drawFns-C6K03snv.cjs");
24
- const require_measureFns = require("./measureFns-BtPAmRfH.cjs");
25
- const require_cornerFinder = require("./cornerFinder-C83MpPRk.cjs");
26
- const require_boolean2D = require("./boolean2D-DcowIZPB.cjs");
27
- const require_blueprintFns = require("./blueprintFns-C3F0jZOe.cjs");
28
- const require_importFns = require("./importFns-Nlx1v8IF.cjs");
29
- const require_loftFns = require("./loftFns-CyrWJCXb.cjs");
30
- const require_cameraFns = require("./cameraFns-IL7qYFaG.cjs");
31
- const require_textMetrics = require("./textMetrics-DRo8iTiW.cjs");
32
- const require_shapeRefFns = require("./shapeRefFns-9Fexl5XC.cjs");
17
+ const require_surfaceBuilders = require("./surfaceBuilders-CDrFrFBH.cjs");
18
+ const require_solidBuilders = require("./solidBuilders-DI4CSKe-.cjs");
19
+ const require_healingFns = require("./healingFns-CA_Pxs_R.cjs");
20
+ const require_threadFns = require("./threadFns-CvjUrsgG.cjs");
21
+ const require_blueprintSketcher = require("./blueprintSketcher-DwL9iPAG.cjs");
22
+ const require_helpers = require("./helpers-BVwuuo7f.cjs");
23
+ const require_drawFns = require("./drawFns-BDPAuKxN.cjs");
24
+ const require_measureFns = require("./measureFns-CMzOaAYQ.cjs");
25
+ const require_cornerFinder = require("./cornerFinder-DyYE74wI.cjs");
26
+ const require_boolean2D = require("./boolean2D-BJ6MwGgV.cjs");
27
+ const require_blueprintFns = require("./blueprintFns-DKmyNVyL.cjs");
28
+ const require_importFns = require("./importFns-D7CBrzdj.cjs");
29
+ const require_loftFns = require("./loftFns-BG5aCsSy.cjs");
30
+ const require_cameraFns = require("./cameraFns-BjcKjYpw.cjs");
31
+ const require_textMetrics = require("./textMetrics-CMXyoBtR.cjs");
32
+ const require_shapeRefFns = require("./shapeRefFns-D1WVYLvG.cjs");
33
33
  const require_workerHandler = require("./workerHandler-CdlOTwJg.cjs");
34
- const require_primitiveFns = require("./primitiveFns-BDQodKI0.cjs");
34
+ const require_primitiveFns = require("./primitiveFns-jeA2auqw.cjs");
35
35
  //#region src/topology/shapeBooleans.ts
36
36
  var BOPAlgo_GlueShift = 1;
37
37
  var BOPAlgo_GlueFull = 2;