@mulmoclaude/shapescript-plugin 2.5.0 → 2.5.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.
@@ -13499,26 +13499,46 @@ function hh(e) {
13499
13499
  }
13500
13500
  return n;
13501
13501
  }
13502
- var gh = 3e4, _h = 8, vh = 12, yh = 4, bh = 1e-9, xh = class extends Error {
13502
+ var gh = "pathValue";
13503
+ function _h(e) {
13504
+ return e.userData[gh] = !0, e;
13505
+ }
13506
+ function vh(e) {
13507
+ return e.userData[gh] === !0;
13508
+ }
13509
+ var yh = /* @__PURE__ */ new Set([
13510
+ "circle",
13511
+ "square",
13512
+ "roundrect",
13513
+ "polygon"
13514
+ ]);
13515
+ function bh(e) {
13516
+ if (!vh(e)) throw Error("`loft` expects `path` cross-sections, not meshes — pass the path itself rather than a `fill` of it");
13517
+ if (e.isMesh) return tl(e);
13518
+ let t = hh(e);
13519
+ if (t.length < 3) throw Error("A `loft` cross-section needs at least three points");
13520
+ return t;
13521
+ }
13522
+ var xh = 3e4, Sh = 8, Ch = 12, wh = 4, Th = 1e-9, Eh = class extends Error {
13503
13523
  constructor(e) {
13504
13524
  super(e), this.name = "ShapeScriptLimitError";
13505
13525
  }
13506
13526
  };
13507
- function Sh(e) {
13527
+ function Dh(e) {
13508
13528
  return {
13509
13529
  ...e,
13510
13530
  color: e.color?.clone(),
13511
13531
  glow: e.glow?.clone()
13512
13532
  };
13513
13533
  }
13514
- var Ch = 200, wh = 200;
13515
- function Th(e) {
13534
+ var Oh = 200, kh = 200;
13535
+ function Ah(e) {
13516
13536
  let t = e.getAttribute("position"), n = e.getIndex(), r = n?.count ?? t.count, i = new J(), a = new J(), o = new J(), s = 0;
13517
13537
  for (let e = 0; e < r; e += 3) i.fromBufferAttribute(t, n ? n.getX(e) : e), a.fromBufferAttribute(t, n ? n.getX(e + 1) : e + 1), o.fromBufferAttribute(t, n ? n.getX(e + 2) : e + 2), s += i.dot(a.cross(o));
13518
13538
  return s / 6;
13519
13539
  }
13520
- function Eh(e) {
13521
- if (Th(e) >= 0) return e;
13540
+ function jh(e) {
13541
+ if (Ah(e) >= 0) return e;
13522
13542
  let t = e.getIndex();
13523
13543
  if (t) {
13524
13544
  for (let e = 0; e < t.count; e += 3) {
@@ -13534,10 +13554,10 @@ function Eh(e) {
13534
13554
  }
13535
13555
  return e;
13536
13556
  }
13537
- function Dh(e) {
13557
+ function Mh(e) {
13538
13558
  return Math.max(0, Math.round(Math.log2(Math.max(4, e))) - 2);
13539
13559
  }
13540
- var Oh = class {
13560
+ var Nh = class {
13541
13561
  options;
13542
13562
  evaluator;
13543
13563
  symbols;
@@ -13594,15 +13614,15 @@ var Oh = class {
13594
13614
  this.chargeEstimate(r * n);
13595
13615
  }
13596
13616
  chargeEstimate(e) {
13597
- if (this.vertexCount + e > this.maxVertices) throw new xh(`ShapeScript exceeds ${this.maxVertices} vertices — lower \`detail\` or simplify the path`);
13617
+ if (this.vertexCount + e > this.maxVertices) throw new Eh(`ShapeScript exceeds ${this.maxVertices} vertices — lower \`detail\` or simplify the path`);
13598
13618
  }
13599
13619
  makeMesh(e, t) {
13600
- if (this.vertexCount += e.getAttribute("position")?.count ?? 0, this.vertexCount > this.maxVertices) throw e.dispose(), t.dispose(), new xh(`ShapeScript exceeds ${this.maxVertices} vertices — lower \`detail\` or use fewer shapes`);
13620
+ if (this.vertexCount += e.getAttribute("position")?.count ?? 0, this.vertexCount > this.maxVertices) throw e.dispose(), t.dispose(), new Eh(`ShapeScript exceeds ${this.maxVertices} vertices — lower \`detail\` or use fewer shapes`);
13601
13621
  return new ti(e, t);
13602
13622
  }
13603
13623
  convertNode(e) {
13604
- if (this.nodeCount += 1, this.nodeCount > this.maxNodes) throw new xh(`ShapeScript produced more than ${this.maxNodes} objects — reduce the loop counts or the nesting`);
13605
- if (Date.now() - this.startedAt > this.maxDurationMs) throw new xh(`ShapeScript took longer than ${this.maxDurationMs}ms to build — simplify the model or use fewer boolean operations`);
13624
+ if (this.nodeCount += 1, this.nodeCount > this.maxNodes) throw new Eh(`ShapeScript produced more than ${this.maxNodes} objects — reduce the loop counts or the nesting`);
13625
+ if (Date.now() - this.startedAt > this.maxDurationMs) throw new Eh(`ShapeScript took longer than ${this.maxDurationMs}ms to build — simplify the model or use fewer boolean operations`);
13606
13626
  switch (e.type) {
13607
13627
  case "shape": return this.convertShape(e);
13608
13628
  case "csg": return this.convertCSG(e);
@@ -13625,7 +13645,7 @@ var Oh = class {
13625
13645
  case "material": return this.handleMaterialCommand(e), null;
13626
13646
  case "smoothing": return this.currentTransform().material.smoothing = this.evaluateNumber(e.value), null;
13627
13647
  case "background": return this.handleBackground(e.value), null;
13628
- case "print": return this.logs.length < Ch && this.logs.push(Fh(this.evaluator.evaluate(e.value))), null;
13648
+ case "print": return this.logs.length < Oh && this.logs.push(Bh(this.evaluator.evaluate(e.value))), null;
13629
13649
  case "assert":
13630
13650
  if (!this.evaluator.evaluateToBoolean(e.value)) throw Error("Assertion failed");
13631
13651
  return null;
@@ -13644,10 +13664,10 @@ var Oh = class {
13644
13664
  convertPathProfile(e) {
13645
13665
  return this.withPathDetail(() => {
13646
13666
  let t = this.collectPathPoints(e), n = this.shapeFromPathPoints(t);
13647
- if (!mh(t)) return this.lineFromPath(e, n);
13648
- this.chargePathEstimate(n, vh), this.requireEnclosedArea(n, "path");
13667
+ if (!mh(t)) return _h(this.lineFromPath(e, n));
13668
+ this.chargePathEstimate(n, Ch), this.requireEnclosedArea(n, "path");
13649
13669
  let r = this.makeMesh(this.placePath(new Qa(n), e), this.createMaterial({ properties: {} }));
13650
- return this.applyCurrentTransform(r), r;
13670
+ return this.applyCurrentTransform(r), _h(r);
13651
13671
  });
13652
13672
  }
13653
13673
  withPathDetail(e) {
@@ -13668,7 +13688,7 @@ var Oh = class {
13668
13688
  return this.applyCurrentTransform(o), o;
13669
13689
  }
13670
13690
  warn(e) {
13671
- this.warningSet.has(e) || this.warnings.length >= wh || (this.warningSet.add(e), this.warnings.push(e));
13691
+ this.warningSet.has(e) || this.warnings.length >= kh || (this.warningSet.add(e), this.warnings.push(e));
13672
13692
  }
13673
13693
  handleBackground(e) {
13674
13694
  if (this.sceneDepth > 0) throw Error("`background` can only be used at the root of the script");
@@ -13737,7 +13757,10 @@ var Oh = class {
13737
13757
  }
13738
13758
  }
13739
13759
  convertShape(e) {
13740
- return e.points === void 0 ? this.withShapeOptions(e.properties, () => this.finishMesh(this.createGeometry(e), e, !1)) : this.placeValue(this.polygonValue(e));
13760
+ return e.points === void 0 ? this.withShapeOptions(e.properties, () => {
13761
+ let t = this.finishMesh(this.createGeometry(e), e, !1);
13762
+ return yh.has(e.primitive) ? _h(t) : t;
13763
+ }) : this.placeValue(this.polygonValue(e));
13741
13764
  }
13742
13765
  captureValues(e, t) {
13743
13766
  let n = this.valueSink;
@@ -13753,20 +13776,21 @@ var Oh = class {
13753
13776
  if (_c(e) && e.kind === "mesh") return this.placeMesh(e);
13754
13777
  if (_c(e) && e.kind === "polygon") return this.placePolygons([e]);
13755
13778
  if (Array.isArray(e) && e.length > 0 && e.every((e) => _c(e) && (e.kind === "mesh" || e.kind === "polygon"))) {
13756
- let t = e.filter((e) => _c(e) && e.kind === "mesh"), n = e.filter((e) => _c(e) && e.kind === "polygon"), r = n.length ? Ms(n, n.some((e) => e.colors)) : void 0, i = Ph([...t.map((e) => e.geometry), ...r ? [r] : []]);
13779
+ let t = e.filter((e) => _c(e) && e.kind === "mesh"), n = e.filter((e) => _c(e) && e.kind === "polygon"), r = n.length ? Ms(n, n.some((e) => e.colors)) : void 0, i = zh([...t.map((e) => e.geometry), ...r ? [r] : []]);
13757
13780
  r?.dispose();
13758
- let a = this.placeMesh({
13781
+ let a = n.length === 0 && t.every((e) => e.path), o = this.placeMesh({
13759
13782
  kind: "mesh",
13760
- geometry: i
13783
+ geometry: i,
13784
+ ...a ? { path: a } : {}
13761
13785
  });
13762
- return i.dispose(), a;
13786
+ return i.dispose(), o;
13763
13787
  }
13764
13788
  throw Error("Unused value — a statement that is not a shape does nothing here; use `define` or `print`");
13765
13789
  }
13766
13790
  transformedForCapture(e) {
13767
13791
  let t = this.currentTransform().matrix, n = t.equals(new Y());
13768
13792
  if (Array.isArray(e)) return n ? e : e.map((e) => this.transformedForCapture(e));
13769
- if (!jh(e) || n) return e;
13793
+ if (!Ih(e) || n) return e;
13770
13794
  if (e.kind === "polygon") return {
13771
13795
  ...e,
13772
13796
  points: e.points.map((e) => new J(...e).applyMatrix4(t).toArray())
@@ -13788,7 +13812,7 @@ var Oh = class {
13788
13812
  }
13789
13813
  placeMesh(e) {
13790
13814
  let t = e.geometry.clone(), n = this.makeMesh(t, this.createMaterial({ properties: {} }, void 0, t.hasAttribute("color")));
13791
- return e.name !== void 0 && (n.name = e.name), this.applyCurrentTransform(n), n;
13815
+ return e.name !== void 0 && (n.name = e.name), e.path && _h(n), this.applyCurrentTransform(n), n;
13792
13816
  }
13793
13817
  placePolygons(e) {
13794
13818
  let t = e.some((e) => e.colors !== void 0), n = Ms(e, t);
@@ -13806,31 +13830,32 @@ var Oh = class {
13806
13830
  this.captureValues(r, () => this.inScope(n, () => {
13807
13831
  this.currentTransform().matrix.identity(), this.addChildren(n, e), t?.(r);
13808
13832
  }));
13809
- let i = this.meshesIn(n), a = i.map((e) => Mh(e).applyMatrix4(e.matrixWorld)), o = i.length === 1 ? i[0] : void 0, s = o?.geometry.userData.polygons, c = o && s ? s.map((e) => ({
13833
+ let i = this.meshesIn(n), a = i.map((e) => Lh(e).applyMatrix4(e.matrixWorld)), o = i.length === 1 ? i[0] : void 0, s = o?.geometry.userData.polygons, c = o && s ? s.map((e) => ({
13810
13834
  ...e,
13811
13835
  points: e.points.map((e) => new J(...e).applyMatrix4(o.matrixWorld).toArray())
13812
- })) : void 0;
13836
+ })) : void 0, l = i.length > 0 && i.every(vh);
13813
13837
  return {
13814
13838
  captured: r,
13815
13839
  geometries: a,
13816
13840
  name: o?.name || void 0,
13817
- polygons: c
13841
+ polygons: c,
13842
+ path: l
13818
13843
  };
13819
13844
  } finally {
13820
13845
  oh(n), this.vertexCount = i, this.vertexCount += this.retained.slice(a).reduce((e, t) => e + t.getAttribute("position").count, 0);
13821
13846
  }
13822
13847
  }
13823
13848
  convertMesh(e) {
13824
- let { captured: t, geometries: n } = this.buildScratch(e.children), r = Ah(t).filter((e) => e.kind === "polygon"), i = Ah(t).filter((e) => e.kind === "mesh"), a = r.some((e) => e.colors !== void 0), o = [...r.length ? [Ms(r, a)] : [], ...n], s = [...o, ...i.map((e) => e.geometry)];
13849
+ let { captured: t, geometries: n } = this.buildScratch(e.children), r = Fh(t).filter((e) => e.kind === "polygon"), i = Fh(t).filter((e) => e.kind === "mesh"), a = r.some((e) => e.colors !== void 0), o = [...r.length ? [Ms(r, a)] : [], ...n], s = [...o, ...i.map((e) => e.geometry)];
13825
13850
  if (s.length === 0) throw Error("`mesh` needs at least one polygon");
13826
- let c = Ph(s);
13851
+ let c = zh(s);
13827
13852
  o.forEach((e) => e.dispose()), i.length === 0 && n.length === 0 && (c.userData = { polygons: r });
13828
13853
  let l = this.makeMesh(c, this.createMaterial({ properties: {} }, void 0, c.hasAttribute("color")));
13829
13854
  return this.applyCurrentTransform(l), l;
13830
13855
  }
13831
13856
  polygonValue(e) {
13832
13857
  let t = [], n = [], r = e.properties.color === void 0 ? void 0 : this.evaluateRGBA(e.properties.color), i = r !== void 0, a = (e) => {
13833
- if (++this.pathCommandCount > this.maxLoopIterations) throw new xh(`ShapeScript polygon exceeds ${this.maxLoopIterations} commands`);
13858
+ if (++this.pathCommandCount > this.maxLoopIterations) throw new Eh(`ShapeScript polygon exceeds ${this.maxLoopIterations} commands`);
13834
13859
  switch (e.type) {
13835
13860
  case "define":
13836
13861
  this.handleDefine(e);
@@ -13898,29 +13923,31 @@ var Oh = class {
13898
13923
  }), t;
13899
13924
  }
13900
13925
  shapeValue(e) {
13901
- let { captured: t, geometries: n, name: r, polygons: i } = this.buildScratch([e]);
13926
+ let { captured: t, geometries: n, name: r, polygons: i, path: a } = this.buildScratch([e]);
13902
13927
  if (n.length === 0) {
13903
13928
  if (t.length === 1) return t[0];
13904
13929
  if (t.length > 1) return t;
13905
13930
  throw Error("The shape used as a value produced nothing");
13906
13931
  }
13907
- let a = Ph(n);
13908
- return n.forEach((e) => e.dispose()), this.chargeRetained(a), {
13932
+ let o = zh(n);
13933
+ return n.forEach((e) => e.dispose()), this.chargeRetained(o), {
13909
13934
  kind: "mesh",
13910
- geometry: a,
13935
+ geometry: o,
13911
13936
  ...r === void 0 ? {} : { name: r },
13912
- ...i === void 0 ? {} : { polygons: i }
13937
+ ...i === void 0 ? {} : { polygons: i },
13938
+ ...a ? { path: a } : {}
13913
13939
  };
13914
13940
  }
13915
13941
  callShapeFunction(e, t) {
13916
13942
  let { params: n = [], body: r = [], value: i, name: a } = e.definition;
13917
13943
  return this.evaluator.withArguments(n, t, () => {
13918
- let { captured: e, geometries: t } = this.buildScratch(r, (e) => {
13944
+ let { captured: e, geometries: t, path: n } = this.buildScratch(r, (e) => {
13919
13945
  i !== void 0 && e.push(this.transformedForCapture(this.evaluator.evaluate(i)));
13920
13946
  });
13921
- for (let n of t) this.chargeRetained(n), e.push({
13947
+ for (let r of t) this.chargeRetained(r), e.push({
13922
13948
  kind: "mesh",
13923
- geometry: n
13949
+ geometry: r,
13950
+ ...n ? { path: n } : {}
13924
13951
  });
13925
13952
  if (e.length === 0) throw Error(`Function \`${a}\` produced no value`);
13926
13953
  return e.length === 1 ? e[0] : e;
@@ -13934,7 +13961,7 @@ var Oh = class {
13934
13961
  switch (e.primitive) {
13935
13962
  case "cube": return this.requireExtent("cube", t), new Ai(t[0], t[1], t[2]);
13936
13963
  case "sphere": return this.requireExtent("sphere", t), new eo(.5, this.detailLevel, this.detailLevel).scale(...t);
13937
- case "icosphere": return this.requireExtent("icosphere", t), js(.5, Dh(this.detailLevel)).geometry.scale(...t);
13964
+ case "icosphere": return this.requireExtent("icosphere", t), js(.5, Mh(this.detailLevel)).geometry.scale(...t);
13938
13965
  case "cylinder": {
13939
13966
  let n = e.properties.radiusTop ? this.evaluateNumber(e.properties.radiusTop) : t[0] / 2, r = e.properties.radiusBottom ? this.evaluateNumber(e.properties.radiusBottom) : t[0] / 2, i = e.properties.height ? this.evaluateNumber(e.properties.height) : t[1];
13940
13967
  return this.requireExtent("cylinder", [n || r, i]), new Mi(n, r, i, this.detailLevel);
@@ -13970,7 +13997,7 @@ var Oh = class {
13970
13997
  return this.requireExtent("torus", [i, a]), new to(i, a, Math.max(3, Math.floor(this.detailLevel / 2)), this.detailLevel);
13971
13998
  }
13972
13999
  materialFor(e, t) {
13973
- let n = Sh(t);
14000
+ let n = Dh(t);
13974
14001
  return e.material !== void 0 && this.applyMaterialValue(n, this.evaluator.evaluate(e.material)), e.color !== void 0 && this.applyColor(n, this.evaluateRGBA(e.color)), e.opacity !== void 0 && (n.opacity *= this.evaluateNumber(e.opacity)), e.metallicity !== void 0 && (n.metallicity = this.evaluateNumber(e.metallicity)), e.roughness !== void 0 && (n.roughness = this.evaluateNumber(e.roughness)), e.glow !== void 0 && (n.glow = this.glowColor(this.evaluator.evaluate(e.glow))), e.texture !== void 0 && this.warnTexture(this.evaluator.evaluate(e.texture)), n;
13975
14002
  }
13976
14003
  applyColor(e, [t, n, r, i]) {
@@ -14092,7 +14119,7 @@ var Oh = class {
14092
14119
  });
14093
14120
  }
14094
14121
  iterations(e) {
14095
- return Fc(this.evaluator.evaluate(e), this.maxLoopIterations, () => new xh(`ShapeScript loop exceeds ${this.maxLoopIterations} iterations — narrow the range or increase the step`));
14122
+ return Fc(this.evaluator.evaluate(e), this.maxLoopIterations, () => new Eh(`ShapeScript loop exceeds ${this.maxLoopIterations} iterations — narrow the range or increase the step`));
14096
14123
  }
14097
14124
  convertIf(e) {
14098
14125
  let t = new An(), n = this.evaluator.evaluateToBoolean(e.condition);
@@ -14110,7 +14137,7 @@ var Oh = class {
14110
14137
  }
14111
14138
  convertCustomShape(e) {
14112
14139
  let t = this.symbols.get(e.name);
14113
- if (t !== void 0 && jh(t)) {
14140
+ if (t !== void 0 && Ih(t)) {
14114
14141
  let n = new An();
14115
14142
  return this.inScope(n, () => {
14116
14143
  this.applyPlacement(this.currentTransform().matrix, e.properties);
@@ -14131,7 +14158,7 @@ var Oh = class {
14131
14158
  size: c
14132
14159
  }), this.currentTransform().material = this.materialFor(u, this.currentTransform().material);
14133
14160
  for (let e of n.options ?? []) this.symbols.set(e.name, this.evaluator.evaluate(e.defaultValue));
14134
- for (let [e, t] of Object.entries(u)) e in kh || this.symbols.set(e, this.evaluator.evaluate(t));
14161
+ for (let [e, t] of Object.entries(u)) e in Ph || this.symbols.set(e, this.evaluator.evaluate(t));
14135
14162
  l !== void 0 && (r.name = String(this.evaluator.evaluate(l))), this.withShapeOptions(u, () => this.addChildren(r, i));
14136
14163
  });
14137
14164
  }
@@ -14143,7 +14170,7 @@ var Oh = class {
14143
14170
  let e = this.currentTransform();
14144
14171
  this.transformStack.push({
14145
14172
  matrix: e.matrix.clone(),
14146
- material: Sh(e.material)
14173
+ material: Dh(e.material)
14147
14174
  });
14148
14175
  }
14149
14176
  popTransform() {
@@ -14241,9 +14268,9 @@ var Oh = class {
14241
14268
  n.matrix.multiply(r);
14242
14269
  }
14243
14270
  requireEnclosedArea(e, t) {
14244
- let n = e.getPoints(vh), r = Wa.area(n);
14271
+ let n = e.getPoints(Ch), r = Wa.area(n);
14245
14272
  if (!Number.isFinite(r)) throw Error(`\`${t}\` needs finite path coordinates — these overflow`);
14246
- if (n.length < 3 || Math.abs(r) < bh) throw Error(`\`${t}\` needs a path that encloses an area — this one has fewer than three distinct points, or they are collinear`);
14273
+ if (n.length < 3 || Math.abs(r) < Th) throw Error(`\`${t}\` needs a path that encloses an area — this one has fewer than three distinct points, or they are collinear`);
14247
14274
  return e;
14248
14275
  }
14249
14276
  extrudeProperties(e) {
@@ -14270,7 +14297,7 @@ var Oh = class {
14270
14297
  let { depth: t, properties: n } = this.extrudeProperties(e);
14271
14298
  return e.path ? this.withPathDetail(() => {
14272
14299
  let r = e.path, i = this.collectPathPoints(r), a = this.shapeFromPathPoints(i), o = Math.max(1, Math.floor(this.detailLevel / 4));
14273
- this.chargePathEstimate(a, o, yh);
14300
+ this.chargePathEstimate(a, o, wh);
14274
14301
  let s = mh(i) ? new qa(this.requireEnclosedArea(a, "extrude"), {
14275
14302
  depth: t,
14276
14303
  bevelEnabled: !1,
@@ -14290,7 +14317,7 @@ var Oh = class {
14290
14317
  curveSegments: 1
14291
14318
  }).translate(0, 0, -t / 2)] : [], a = n.map((e) => ul(hh(e), t)), o = [...i, ...a];
14292
14319
  for (let e of o) this.chargeEstimate(e.getAttribute("position").count);
14293
- let s = o.length === 1 ? o[0] : Ph(o);
14320
+ let s = o.length === 1 ? o[0] : zh(o);
14294
14321
  return o.length > 1 && o.forEach((e) => e.dispose()), s;
14295
14322
  });
14296
14323
  });
@@ -14309,7 +14336,7 @@ var Oh = class {
14309
14336
  if (!n.length) throw Error("`extrude … along` needs a planar section to sweep");
14310
14337
  let { points: r, closed: i } = this.sweepPathOf(t);
14311
14338
  this.chargeEstimate(n.reduce((e, t) => e + t.length * r.length, 0));
14312
- let a = n.map((e) => al(ol(e, r, i), i)), o = a.length === 1 ? a[0] : Ph(a);
14339
+ let a = n.map((e) => al(ol(e, r, i), i)), o = a.length === 1 ? a[0] : zh(a);
14313
14340
  return a.length > 1 && a.forEach((e) => e.dispose()), o;
14314
14341
  });
14315
14342
  }
@@ -14349,7 +14376,7 @@ var Oh = class {
14349
14376
  }, a = (e) => {
14350
14377
  if (t.multiply(e), !t.elements.every(Number.isFinite)) throw Error("Path transform overflowed to a non-finite value — `translate`, `rotate` and `scale` accumulate inside a path");
14351
14378
  }, o = (e) => {
14352
- if (++this.pathCommandCount > this.maxLoopIterations) throw new xh(`ShapeScript path exceeds ${this.maxLoopIterations} commands`);
14379
+ if (++this.pathCommandCount > this.maxLoopIterations) throw new Eh(`ShapeScript path exceeds ${this.maxLoopIterations} commands`);
14353
14380
  switch (e.type) {
14354
14381
  case "define":
14355
14382
  this.handleDefine(e);
@@ -14449,7 +14476,7 @@ var Oh = class {
14449
14476
  requireLatheProfile(e) {
14450
14477
  if (!e.every((e) => Number.isFinite(e.x) && Number.isFinite(e.y))) throw Error("`lathe` profile has non-finite coordinates — a curve control point or a path command overflowed");
14451
14478
  let t = Math.max(...e.map((e) => Math.abs(e.x))), n = Math.max(...e.map((e) => e.y)) - Math.min(...e.map((e) => e.y));
14452
- if (t < bh || n < bh) throw Error("`lathe` needs a profile with both radius and height — one on the axis of rotation sweeps nothing");
14479
+ if (t < Th || n < Th) throw Error("`lathe` needs a profile with both radius and height — one on the axis of rotation sweeps nothing");
14453
14480
  }
14454
14481
  buildLathe(e) {
14455
14482
  let t = null;
@@ -14469,7 +14496,7 @@ var Oh = class {
14469
14496
  if (r.length < 2) throw Error("Lathe path must have at least 2 points");
14470
14497
  if (this.requireLatheProfile(r), r.every((e) => e.x <= uh)) for (let e of r) e.x = -e.x;
14471
14498
  this.chargeEstimate(r.length * (this.detailLevel + 1));
14472
- let i = Eh(new Xa(r, this.detailLevel));
14499
+ let i = jh(new Xa(r, this.detailLevel));
14473
14500
  return this.finishMesh(i, e, !0, this.currentTransform().material);
14474
14501
  });
14475
14502
  }
@@ -14478,18 +14505,22 @@ var Oh = class {
14478
14505
  this.operandDepth++;
14479
14506
  try {
14480
14507
  this.captureValues(null, () => this.inScope(e, () => {
14481
- this.currentTransform().matrix.identity(), this.addChildren(e, t), n = Sh(this.currentTransform().material);
14508
+ this.currentTransform().matrix.identity(), this.addChildren(e, t), n = Dh(this.currentTransform().material);
14482
14509
  }));
14483
14510
  } finally {
14484
14511
  this.operandDepth--;
14485
14512
  }
14486
14513
  e.updateMatrixWorld(!0);
14487
- let r = [], i = [];
14514
+ let r = [], i = [], a = [];
14488
14515
  return e.traverse((e) => {
14489
- e.isMesh ? r.push(e) : e.isLine && i.push(e);
14516
+ if (e.isMesh) r.push(e);
14517
+ else if (e.isLine) i.push(e);
14518
+ else return;
14519
+ a.push(e);
14490
14520
  }), {
14491
14521
  meshes: r,
14492
14522
  lines: i,
14523
+ operands: a,
14493
14524
  material: n
14494
14525
  };
14495
14526
  }
@@ -14497,7 +14528,7 @@ var Oh = class {
14497
14528
  let n = new An(), r = this.vertexCount, i, a;
14498
14529
  try {
14499
14530
  let r = this.buildOperands(n, e.children);
14500
- a = r.material, i = t(r.meshes, r.lines);
14531
+ a = r.material, i = t(r.meshes, r.lines, r.operands);
14501
14532
  } finally {
14502
14533
  oh(n), this.vertexCount = r;
14503
14534
  }
@@ -14507,9 +14538,9 @@ var Oh = class {
14507
14538
  return this.withShapeOptions(e.properties, () => this.buildLoft(e));
14508
14539
  }
14509
14540
  buildLoft(e) {
14510
- return this.buildFromChildren(e, (e) => {
14511
- let t = e.map(tl), n = t.length * Math.max(0, ...t.map((e) => e.length));
14512
- return this.chargeEstimate(n), al(t);
14541
+ return this.buildFromChildren(e, (e, t, n) => {
14542
+ let r = n.map(bh), i = r.length * Math.max(0, ...r.map((e) => e.length));
14543
+ return this.chargeEstimate(i), al(r);
14513
14544
  });
14514
14545
  }
14515
14546
  planarShapes(e) {
@@ -14523,11 +14554,11 @@ var Oh = class {
14523
14554
  let t = El(this.textOf(e), {
14524
14555
  ...e.wrapWidth === void 0 ? {} : { wrapWidth: this.textWrapWidth(e.wrapWidth) },
14525
14556
  lineSpacing: e.lineSpacing === void 0 ? 0 : this.evaluateNumber(e.lineSpacing),
14526
- curveSegments: Math.max(1, Math.floor(this.detailLevel / _h))
14557
+ curveSegments: Math.max(1, Math.floor(this.detailLevel / Sh))
14527
14558
  });
14528
14559
  t.missing.length && this.warn(`The built-in font has no glyph for ${[...new Set(t.missing)].map((e) => `"${e}"`).join(" ")} — drawn as "?"`);
14529
14560
  let n = t.rings.reduce((e, t) => e + t.length, 0);
14530
- return t.shapes.length === 0 ? null : this.operandDepth > 0 || this.valueSink !== null ? (this.chargeEstimate(n), this.finishMesh(new Qa(t.shapes, 1), e, !0)) : this.textOutline(e, t, n);
14561
+ return t.shapes.length === 0 ? null : this.operandDepth > 0 || this.valueSink !== null ? (this.chargeEstimate(n), _h(this.finishMesh(new Qa(t.shapes, 1), e, !0))) : this.textOutline(e, t, n);
14531
14562
  });
14532
14563
  }
14533
14564
  textWrapWidth(e) {
@@ -14538,7 +14569,7 @@ var Oh = class {
14538
14569
  textOf(e) {
14539
14570
  let t = e.lines.map((e) => {
14540
14571
  let t = this.evaluator.evaluate(e);
14541
- return Dl(Array.isArray(t) ? t : [t], (e) => Fh(e));
14572
+ return Dl(Array.isArray(t) ? t : [t], (e) => Bh(e));
14542
14573
  }).join("\n");
14543
14574
  if (t.length > 2e3) throw Error(`\`text\` is limited to ${hl} characters`);
14544
14575
  return t;
@@ -14575,7 +14606,7 @@ var Oh = class {
14575
14606
  return new Qa(t, 1);
14576
14607
  });
14577
14608
  let n = this.buildPath(t);
14578
- this.chargePathEstimate(n, vh), this.requireEnclosedArea(n, "fill");
14609
+ this.chargePathEstimate(n, Ch), this.requireEnclosedArea(n, "fill");
14579
14610
  let r = this.placePath(new Qa(n), t);
14580
14611
  return this.finishMesh(r, e);
14581
14612
  });
@@ -14600,7 +14631,7 @@ var Oh = class {
14600
14631
  throw r.dispose(), e;
14601
14632
  }
14602
14633
  this.chargeEstimate(r.getAttribute("position").count);
14603
- let a = Nh(t);
14634
+ let a = Rh(t);
14604
14635
  return a && r.setAttribute("color", new X(new Float32Array(r.getAttribute("position").count * 3).map((e, t) => a[t % 3]), 3)), r;
14605
14636
  });
14606
14637
  }
@@ -14675,7 +14706,7 @@ var Oh = class {
14675
14706
  if (!e.every(Number.isFinite)) throw Error("Expected finite color channels");
14676
14707
  return e;
14677
14708
  }
14678
- }, kh = {
14709
+ }, Ph = {
14679
14710
  position: !0,
14680
14711
  orientation: !0,
14681
14712
  rotation: !0,
@@ -14690,23 +14721,23 @@ var Oh = class {
14690
14721
  detail: !0,
14691
14722
  smoothing: !0
14692
14723
  };
14693
- function Ah(e) {
14724
+ function Fh(e) {
14694
14725
  let t = [];
14695
- for (let n of e) Array.isArray(n) ? t.push(...Ah(n)) : jh(n) && t.push(n);
14726
+ for (let n of e) Array.isArray(n) ? t.push(...Fh(n)) : Ih(n) && t.push(n);
14696
14727
  return t;
14697
14728
  }
14698
- function jh(e) {
14729
+ function Ih(e) {
14699
14730
  return _c(e) && (e.kind === "mesh" || e.kind === "polygon");
14700
14731
  }
14701
- function Mh(e) {
14702
- let t = e.geometry.clone(), n = Nh(e);
14732
+ function Lh(e) {
14733
+ let t = e.geometry.clone(), n = Rh(e);
14703
14734
  if (n && !t.hasAttribute("color")) {
14704
14735
  let e = t.getAttribute("position").count;
14705
14736
  t.setAttribute("color", new X(new Float32Array(e * 3).map((e, t) => n[t % 3]), 3));
14706
14737
  }
14707
14738
  return t;
14708
14739
  }
14709
- function Nh(e) {
14740
+ function Rh(e) {
14710
14741
  let t = Array.isArray(e.material) ? e.material[0] : e.material, n = e.geometry.getAttribute("color");
14711
14742
  if (n && n.count > 0) {
14712
14743
  let e = [
@@ -14723,7 +14754,7 @@ function Nh(e) {
14723
14754
  t.color.b
14724
14755
  ];
14725
14756
  }
14726
- function Ph(e) {
14757
+ function zh(e) {
14727
14758
  let t = e.some((e) => e.hasAttribute("color")), n = e.map((e) => {
14728
14759
  let n = e.index ? e.toNonIndexed() : e.clone();
14729
14760
  n.hasAttribute("normal") || n.computeVertexNormals();
@@ -14740,11 +14771,11 @@ function Ph(e) {
14740
14771
  if (!r) throw Error("Could not combine the shapes into one mesh");
14741
14772
  return n.length > 1 && n.forEach((e) => e.dispose()), r;
14742
14773
  }
14743
- function Fh(e) {
14744
- return Array.isArray(e) ? e.map((e) => Array.isArray(e) ? `(${Fh(e)})` : Fh(e)).join(" ") : typeof e == "object" ? e.kind === "range" ? `${e.from} to ${e.to} step ${e.step}` : `<${e.kind}>` : String(e);
14774
+ function Bh(e) {
14775
+ return Array.isArray(e) ? e.map((e) => Array.isArray(e) ? `(${Bh(e)})` : Bh(e)).join(" ") : typeof e == "object" ? e.kind === "range" ? `${e.from} to ${e.to} step ${e.step}` : `<${e.kind}>` : String(e);
14745
14776
  }
14746
- function Ih(e, t = {}) {
14747
- return new Oh(t).convert(e);
14777
+ function Vh(e, t = {}) {
14778
+ return new Nh(t).convert(e);
14748
14779
  }
14749
14780
  //#endregion
14750
- export { d as $, le as $t, ki as A, Ze as An, Ee as At, h as B, e as Bn, ae as Bt, en as C, J as Cn, pe as Ct, Di as D, Mn as Dn, _e as Dt, P as E, $t as En, ge as Et, bs as F, ro as Fn, V as Ft, s as G, L as Gt, g as H, r as Hn, ne as Ht, An as I, rt as In, H as It, Y as J, Hr as Jt, jt as K, R as Kt, T as L, W as Ln, M as Lt, w as M, Cs as Mn, ie as Mt, fi as N, oo as Nn, re as Nt, Go as O, no as On, ve as Ot, qe as P, et as Pn, B as Pt, ho as Q, it as Qt, S as R, nt as Rn, De as Rt, tn as S, q as Sn, fe as St, ee as T, Je as Tn, he as Tt, He as U, i as Un, U as Ut, _ as V, t as Vn, oe as Vt, Ue as W, z as Wt, Ur as X, I as Xt, ti as Y, F as Yt, mo as Z, l as Zt, Bt as _, k as _n, be as _t, oh as a, zn as an, ci as at, Oi as b, D as bn, we as bt, j as c, ls as cn, Mt as ct, Ai as d, yr as dn, je as dt, Me as en, f as et, vr as f, br as fn, ke as ft, Ln as g, O as gn, Ce as gt, u as h, A as hn, te as ht, lh as i, We as in, Ho as it, X as j, G as jn, se as jt, at as k, Qe as kn, ye as kt, Ko as l, c as ln, ce as lt, y as m, v as mn, N as mt, xh as n, de as nn, p as nt, ch as o, uo as on, Za as ot, Mr as p, so as pn, ue as pt, Ft as q, fo as qt, Ih as r, Ve as rn, Uo as rt, $c as s, b as sn, cs as st, gh as t, Ae as tn, m as tt, Xo as u, Xt as un, lt as ut, Ss as v, C as vn, xe as vt, ii as w, Zt as wn, me as wt, Ei as x, x as xn, Te as xt, Yo as y, E as yn, Se as yt, pn as z, o as zn, Oe as zt };
14781
+ export { d as $, le as $t, ki as A, Ze as An, Ee as At, h as B, e as Bn, ae as Bt, en as C, J as Cn, pe as Ct, Di as D, Mn as Dn, _e as Dt, P as E, $t as En, ge as Et, bs as F, ro as Fn, V as Ft, s as G, L as Gt, g as H, r as Hn, ne as Ht, An as I, rt as In, H as It, Y as J, Hr as Jt, jt as K, R as Kt, T as L, W as Ln, M as Lt, w as M, Cs as Mn, ie as Mt, fi as N, oo as Nn, re as Nt, Go as O, no as On, ve as Ot, qe as P, et as Pn, B as Pt, ho as Q, it as Qt, S as R, nt as Rn, De as Rt, tn as S, q as Sn, fe as St, ee as T, Je as Tn, he as Tt, He as U, i as Un, U as Ut, _ as V, t as Vn, oe as Vt, Ue as W, z as Wt, Ur as X, I as Xt, ti as Y, F as Yt, mo as Z, l as Zt, Bt as _, k as _n, be as _t, oh as a, zn as an, ci as at, Oi as b, D as bn, we as bt, j as c, ls as cn, Mt as ct, Ai as d, yr as dn, je as dt, Me as en, f as et, vr as f, br as fn, ke as ft, Ln as g, O as gn, Ce as gt, u as h, A as hn, te as ht, lh as i, We as in, Ho as it, X as j, G as jn, se as jt, at as k, Qe as kn, ye as kt, Ko as l, c as ln, ce as lt, y as m, v as mn, N as mt, Eh as n, de as nn, p as nt, ch as o, uo as on, Za as ot, Mr as p, so as pn, ue as pt, Ft as q, fo as qt, Vh as r, Ve as rn, Uo as rt, $c as s, b as sn, cs as st, xh as t, Ae as tn, m as tt, Xo as u, Xt as un, lt as ut, Ss as v, C as vn, xe as vt, ii as w, Zt as wn, me as wt, Ei as x, x as xn, Te as xt, Yo as y, E as yn, Se as yt, pn as z, o as zn, Oe as zt };
package/dist/vue.cjs CHANGED
@@ -1,4 +1,4 @@
1
- Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("./samples-DUiaU2gY.cjs"),t=require("./toThreeJS-CcjI8USA.cjs");let n=require("vue"),r=require("gui-chat-protocol/vue");function i(){let e=null,t=!1,n=null,r=null;function i(t,a){n(t,a),r=e.requestAnimationFrame(i)}return{start:function(){t!==!0&&n!==null&&e!==null&&(r=e.requestAnimationFrame(i),t=!0)},stop:function(){e!==null&&e.cancelAnimationFrame(r),t=!1},setAnimationLoop:function(e){n=e},setContext:function(t){e=t}}}function a(e){let t=new WeakMap;function n(t,n){let r=t.array,i=t.usage,a=r.byteLength,o=e.createBuffer();e.bindBuffer(n,o),e.bufferData(n,r,i),t.onUploadCallback();let s;if(r instanceof Float32Array)s=e.FLOAT;else if(typeof Float16Array<`u`&&r instanceof Float16Array)s=e.HALF_FLOAT;else if(r instanceof Uint16Array)s=t.isFloat16BufferAttribute?e.HALF_FLOAT:e.UNSIGNED_SHORT;else if(r instanceof Int16Array)s=e.SHORT;else if(r instanceof Uint32Array)s=e.UNSIGNED_INT;else if(r instanceof Int32Array)s=e.INT;else if(r instanceof Int8Array)s=e.BYTE;else if(r instanceof Uint8Array)s=e.UNSIGNED_BYTE;else if(r instanceof Uint8ClampedArray)s=e.UNSIGNED_BYTE;else throw Error(`THREE.WebGLAttributes: Unsupported buffer data format: `+r);return{buffer:o,type:s,bytesPerElement:r.BYTES_PER_ELEMENT,version:t.version,size:a}}function r(t,n,r){let i=n.array,a=n.updateRanges;if(e.bindBuffer(r,t),a.length===0)e.bufferSubData(r,0,i);else{a.sort((e,t)=>e.start-t.start);let t=0;for(let e=1;e<a.length;e++){let n=a[t],r=a[e];r.start<=n.start+n.count+1?n.count=Math.max(n.count,r.start+r.count-n.start):(++t,a[t]=r)}a.length=t+1;for(let t=0,n=a.length;t<n;t++){let n=a[t];e.bufferSubData(r,n.start*i.BYTES_PER_ELEMENT,i,n.start,n.count)}n.clearUpdateRanges()}n.onUploadCallback()}function i(e){return e.isInterleavedBufferAttribute&&(e=e.data),t.get(e)}function a(n){n.isInterleavedBufferAttribute&&(n=n.data);let r=t.get(n);r&&(e.deleteBuffer(r.buffer),t.delete(n))}function o(e,i){if(e.isInterleavedBufferAttribute&&(e=e.data),e.isGLBufferAttribute){let n=t.get(e);(!n||n.version<e.version)&&t.set(e,{buffer:e.buffer,type:e.type,bytesPerElement:e.elementSize,version:e.version});return}let a=t.get(e);if(a===void 0)t.set(e,n(e,i));else if(a.version<e.version){if(a.size!==e.array.byteLength)throw Error(`THREE.WebGLAttributes: The size of the buffer attribute's array buffer does not match the original size. Resizing buffer attributes is not supported.`);r(a.buffer,e,i),a.version=e.version}}return{get:i,remove:a,update:o}}var o={alphahash_fragment:`#ifdef USE_ALPHAHASH
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("./samples-b6J0NoFm.cjs"),t=require("./toThreeJS-BETrskvw.cjs");let n=require("vue"),r=require("gui-chat-protocol/vue");function i(){let e=null,t=!1,n=null,r=null;function i(t,a){n(t,a),r=e.requestAnimationFrame(i)}return{start:function(){t!==!0&&n!==null&&e!==null&&(r=e.requestAnimationFrame(i),t=!0)},stop:function(){e!==null&&e.cancelAnimationFrame(r),t=!1},setAnimationLoop:function(e){n=e},setContext:function(t){e=t}}}function a(e){let t=new WeakMap;function n(t,n){let r=t.array,i=t.usage,a=r.byteLength,o=e.createBuffer();e.bindBuffer(n,o),e.bufferData(n,r,i),t.onUploadCallback();let s;if(r instanceof Float32Array)s=e.FLOAT;else if(typeof Float16Array<`u`&&r instanceof Float16Array)s=e.HALF_FLOAT;else if(r instanceof Uint16Array)s=t.isFloat16BufferAttribute?e.HALF_FLOAT:e.UNSIGNED_SHORT;else if(r instanceof Int16Array)s=e.SHORT;else if(r instanceof Uint32Array)s=e.UNSIGNED_INT;else if(r instanceof Int32Array)s=e.INT;else if(r instanceof Int8Array)s=e.BYTE;else if(r instanceof Uint8Array)s=e.UNSIGNED_BYTE;else if(r instanceof Uint8ClampedArray)s=e.UNSIGNED_BYTE;else throw Error(`THREE.WebGLAttributes: Unsupported buffer data format: `+r);return{buffer:o,type:s,bytesPerElement:r.BYTES_PER_ELEMENT,version:t.version,size:a}}function r(t,n,r){let i=n.array,a=n.updateRanges;if(e.bindBuffer(r,t),a.length===0)e.bufferSubData(r,0,i);else{a.sort((e,t)=>e.start-t.start);let t=0;for(let e=1;e<a.length;e++){let n=a[t],r=a[e];r.start<=n.start+n.count+1?n.count=Math.max(n.count,r.start+r.count-n.start):(++t,a[t]=r)}a.length=t+1;for(let t=0,n=a.length;t<n;t++){let n=a[t];e.bufferSubData(r,n.start*i.BYTES_PER_ELEMENT,i,n.start,n.count)}n.clearUpdateRanges()}n.onUploadCallback()}function i(e){return e.isInterleavedBufferAttribute&&(e=e.data),t.get(e)}function a(n){n.isInterleavedBufferAttribute&&(n=n.data);let r=t.get(n);r&&(e.deleteBuffer(r.buffer),t.delete(n))}function o(e,i){if(e.isInterleavedBufferAttribute&&(e=e.data),e.isGLBufferAttribute){let n=t.get(e);(!n||n.version<e.version)&&t.set(e,{buffer:e.buffer,type:e.type,bytesPerElement:e.elementSize,version:e.version});return}let a=t.get(e);if(a===void 0)t.set(e,n(e,i));else if(a.version<e.version){if(a.size!==e.array.byteLength)throw Error(`THREE.WebGLAttributes: The size of the buffer attribute's array buffer does not match the original size. Resizing buffer attributes is not supported.`);r(a.buffer,e,i),a.version=e.version}}return{get:i,remove:a,update:o}}var o={alphahash_fragment:`#ifdef USE_ALPHAHASH
2
2
  if ( diffuseColor.a < getAlphaHashThreshold( vPosition ) ) discard;
3
3
  #endif`,alphahash_pars_fragment:`#ifdef USE_ALPHAHASH
4
4
  const float ALPHA_HASH_SCALE = 0.05;
package/dist/vue.js CHANGED
@@ -1,5 +1,5 @@
1
- import { a as e, h as t, n, o as r, r as i, s as a, t as o, v as s, y as c } from "./samples-Dl_yo5Ql.js";
2
- import { $ as l, A as u, An as d, B as f, C as p, Cn as m, D as h, Dn as g, E as _, En as v, F as y, Fn as b, G as x, Gt as S, H as C, Hn as w, In as T, J as E, Jt as D, K as O, Kt as k, L as A, Ln as j, M, Mn as ee, N, Nn as P, O as te, On as F, Pn as ne, Q as re, Qt as ie, Rn as ae, S as I, Sn as L, T as oe, Tn as se, U as R, Un as ce, V as le, Vn as ue, W as de, X as fe, Xt as pe, Y as z, Z as me, Zt as he, _ as B, a as ge, an as _e, at as ve, b as ye, bn as be, cn as xe, ct as Se, d as Ce, dn as we, et as Te, f as Ee, fn as De, g as V, gn as Oe, h as ke, ht as Ae, i as je, in as Me, it as H, j as Ne, jn as U, k as Pe, kn as Fe, l as Ie, ln as W, mn as Le, mt as Re, nt as G, o as K, on as ze, ot as Be, p as Ve, pn as He, q, qt as Ue, r as We, rn as Ge, rt as Ke, s as qe, tt as Je, u as Ye, un as Xe, ut as Ze, v as Qe, vn as $e, w as et, wn as tt, x as nt, xn as rt, y as it, yn as at, z as ot } from "./toThreeJS-BKTWUGi8.js";
1
+ import { a as e, h as t, n, o as r, r as i, s as a, t as o, v as s, y as c } from "./samples-BwyNyHha.js";
2
+ import { $ as l, A as u, An as d, B as f, C as p, Cn as m, D as h, Dn as g, E as _, En as v, F as y, Fn as b, G as x, Gt as S, H as C, Hn as w, In as T, J as E, Jt as D, K as O, Kt as k, L as A, Ln as j, M, Mn as ee, N, Nn as P, O as te, On as F, Pn as ne, Q as re, Qt as ie, Rn as ae, S as I, Sn as L, T as oe, Tn as se, U as R, Un as ce, V as le, Vn as ue, W as de, X as fe, Xt as pe, Y as z, Z as me, Zt as he, _ as B, a as ge, an as _e, at as ve, b as ye, bn as be, cn as xe, ct as Se, d as Ce, dn as we, et as Te, f as Ee, fn as De, g as V, gn as Oe, h as ke, ht as Ae, i as je, in as Me, it as H, j as Ne, jn as U, k as Pe, kn as Fe, l as Ie, ln as W, mn as Le, mt as Re, nt as G, o as K, on as ze, ot as Be, p as Ve, pn as He, q, qt as Ue, r as We, rn as Ge, rt as Ke, s as qe, tt as Je, u as Ye, un as Xe, ut as Ze, v as Qe, vn as $e, w as et, wn as tt, x as nt, xn as rt, y as it, yn as at, z as ot } from "./toThreeJS-DyLC4g1t.js";
3
3
  import { computed as J, createCommentVNode as st, createElementBlock as ct, createElementVNode as Y, createTextVNode as lt, defineComponent as ut, nextTick as dt, onMounted as ft, onUnmounted as pt, openBlock as mt, ref as ht, toDisplayString as X, unref as gt, vModelText as _t, watch as vt, withDirectives as yt } from "vue";
4
4
  import { createUseT as bt, useRuntime as xt } from "gui-chat-protocol/vue";
5
5
  //#region ../../../node_modules/three/build/three.module.js
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mulmoclaude/shapescript-plugin",
3
- "version": "2.5.0",
3
+ "version": "2.5.1",
4
4
  "description": "presentShapeScript \u2014 interactive 3D visualizations authored in the ShapeScript language (parser + Three.js renderer). Core (tool definition + execute) on `.`, Vue View/Preview on `./vue`.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",