vim-web 0.5.0-dev.4 → 0.5.0-dev.6

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.
package/dist/vim-web.js CHANGED
@@ -50825,6 +50825,164 @@ function isFilePathOrUri(input) {
50825
50825
  }
50826
50826
  return true;
50827
50827
  }
50828
+ class Segment {
50829
+ constructor(origin = new Vector3(), target = new Vector3()) {
50830
+ __publicField(this, "origin");
50831
+ __publicField(this, "target");
50832
+ this.origin = origin;
50833
+ this.target = target;
50834
+ }
50835
+ static fromArray(array) {
50836
+ return new Segment(
50837
+ new Vector3(array[0], array[1], array[2]),
50838
+ new Vector3(array[3], array[4], array[5])
50839
+ );
50840
+ }
50841
+ toArray() {
50842
+ return [this.origin.x, this.origin.y, this.origin.z, this.target.x, this.target.y, this.target.z];
50843
+ }
50844
+ isValid() {
50845
+ return !this.origin.equals(this.target);
50846
+ }
50847
+ equals(segment) {
50848
+ return this.origin.equals(segment.origin) && this.target.equals(segment.target);
50849
+ }
50850
+ }
50851
+ class RGBA {
50852
+ constructor(r, g, b, a = 1) {
50853
+ __publicField(this, "r");
50854
+ __publicField(this, "g");
50855
+ __publicField(this, "b");
50856
+ __publicField(this, "a");
50857
+ this.r = r;
50858
+ this.g = g;
50859
+ this.b = b;
50860
+ this.a = a;
50861
+ }
50862
+ static fromThree(color, opacity = 1) {
50863
+ return new RGBA(color.r, color.g, color.b, opacity);
50864
+ }
50865
+ toThree() {
50866
+ return new Color(this.r, this.g, this.b);
50867
+ }
50868
+ clone() {
50869
+ return new RGBA(this.r, this.g, this.b, this.a);
50870
+ }
50871
+ isValid() {
50872
+ return Number.isFinite(this.r) && Number.isFinite(this.g) && Number.isFinite(this.b) && Number.isFinite(this.a);
50873
+ }
50874
+ equals(color) {
50875
+ return this.r === color.r && this.g === color.g && this.b === color.b && this.a === color.a;
50876
+ }
50877
+ static fromString(str) {
50878
+ str = str.trim();
50879
+ if (str.startsWith("(")) {
50880
+ str = str.substring(1);
50881
+ }
50882
+ if (str.endsWith(")")) {
50883
+ str = str.substring(0, str.length - 1);
50884
+ }
50885
+ const parts = str.split(",");
50886
+ if (parts.length < 3 || parts.length > 4) {
50887
+ throw new Error("Invalid color string format. Expected 3 or 4 components.");
50888
+ }
50889
+ const r = parseFloat(parts[0]);
50890
+ const g = parseFloat(parts[1]);
50891
+ const b = parseFloat(parts[2]);
50892
+ const a = parts.length === 4 ? parseFloat(parts[3]) : 1;
50893
+ if ([r, g, b, a].some((n) => isNaN(n))) {
50894
+ throw new Error("Invalid number in color string.");
50895
+ }
50896
+ return new RGBA(r, g, b, a);
50897
+ }
50898
+ }
50899
+ class RGB {
50900
+ constructor(r, g, b) {
50901
+ __publicField(this, "r");
50902
+ __publicField(this, "g");
50903
+ __publicField(this, "b");
50904
+ this.r = r;
50905
+ this.g = g;
50906
+ this.b = b;
50907
+ }
50908
+ }
50909
+ class RGBA32 {
50910
+ constructor(hex) {
50911
+ __publicField(this, "hex");
50912
+ if (!Number.isInteger(hex) || hex < 0 || hex > 4294967295) {
50913
+ throw new Error("Invalid value: must be a 32-bit unsigned integer");
50914
+ }
50915
+ this.hex = hex;
50916
+ }
50917
+ static fromThree(color, opacity = 1) {
50918
+ return this.fromFloats(color.r, color.g, color.b, opacity);
50919
+ }
50920
+ static fromInts(r, g, b, a = 1) {
50921
+ if (r < 0 || r > 255 || g < 0 || g > 255 || b < 0 || b > 255 || a < 0 || a > 255) {
50922
+ throw new Error("Each RGBA component must be in the range 0-255.");
50923
+ }
50924
+ const hex = r * 2 ** 24 + g * 2 ** 16 + b * 2 ** 8 + a;
50925
+ return new RGBA32(hex);
50926
+ }
50927
+ static fromFloats(r, g, b, a = 1) {
50928
+ return this.fromInts(
50929
+ remap(r, 255),
50930
+ remap(g, 255),
50931
+ remap(b, 255),
50932
+ remap(a, 255)
50933
+ );
50934
+ }
50935
+ static fromString(str) {
50936
+ if (str.startsWith("#")) {
50937
+ str = str.slice(1);
50938
+ }
50939
+ if (str.length === 3 || str.length === 4) {
50940
+ str = str.split("").map((c) => c + c).join("");
50941
+ }
50942
+ let r = 0;
50943
+ let g = 0;
50944
+ let b = 0;
50945
+ let a = 255;
50946
+ if (str.length === 6 || str.length === 8) {
50947
+ r = parseInt(str.slice(0, 2), 16);
50948
+ g = parseInt(str.slice(2, 4), 16);
50949
+ b = parseInt(str.slice(4, 6), 16);
50950
+ if (str.length === 8) {
50951
+ a = parseInt(str.slice(6, 8), 16);
50952
+ }
50953
+ } else {
50954
+ throw new Error("Invalid color string format");
50955
+ }
50956
+ if ([r, g, b, a].some((v) => isNaN(v))) {
50957
+ throw new Error("Invalid color string format");
50958
+ }
50959
+ return this.fromInts(r, g, b, a);
50960
+ }
50961
+ /**
50962
+ * The red component of the color in the range [0-255].
50963
+ */
50964
+ get r() {
50965
+ return this.hex >>> 24;
50966
+ }
50967
+ /**
50968
+ * The green component of the color in the range [0-255].
50969
+ */
50970
+ get g() {
50971
+ return this.hex >>> 16 & 255;
50972
+ }
50973
+ /**
50974
+ * The blue component of the color in the range [0-255].
50975
+ */
50976
+ get b() {
50977
+ return this.hex >>> 8 & 255;
50978
+ }
50979
+ /**
50980
+ * The alpha component of the color in the range [0-255].
50981
+ */
50982
+ get a() {
50983
+ return this.hex & 255;
50984
+ }
50985
+ }
50828
50986
  class Validation {
50829
50987
  //= ===========================================================================
50830
50988
  // BASIC NUMBER VALIDATIONS
@@ -50934,23 +51092,6 @@ class Validation {
50934
51092
  return true;
50935
51093
  }
50936
51094
  //= ===========================================================================
50937
- // COLOR VALIDATIONS
50938
- //= ===========================================================================
50939
- static isRelativeRGBA(color) {
50940
- if (color.r < 0 || color.r > 1 || color.g < 0 || color.g > 1 || color.b < 0 || color.b > 1) {
50941
- console.warn("Invalid value: must be a relative color (0-1, 0-1, 0-1)");
50942
- return false;
50943
- }
50944
- return true;
50945
- }
50946
- static isRelativeRGB(color) {
50947
- if (color.r < 0 || color.r > 1 || color.g < 0 || color.g > 1 || color.b < 0 || color.b > 1) {
50948
- console.warn("Invalid value: must be a relative color (0-1, 0-1, 0-1)");
50949
- return false;
50950
- }
50951
- return true;
50952
- }
50953
- //= ===========================================================================
50954
51095
  // STRING AND URL VALIDATIONS
50955
51096
  //= ===========================================================================
50956
51097
  static isNonEmptyString(value) {
@@ -51037,6 +51178,13 @@ class Validation {
51037
51178
  }
51038
51179
  return value;
51039
51180
  }
51181
+ static clampColor01(value) {
51182
+ return new Color(
51183
+ this.clamp01(value.r),
51184
+ this.clamp01(value.g),
51185
+ this.clamp01(value.b)
51186
+ );
51187
+ }
51040
51188
  static clampRGBA01(value) {
51041
51189
  return new RGBA(
51042
51190
  this.clamp01(value.r),
@@ -57317,155 +57465,6 @@ const index$8 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePrope
57317
57465
  getDefaultVimSettings,
57318
57466
  request: requestVim
57319
57467
  }, Symbol.toStringTag, { value: "Module" }));
57320
- class Segment {
57321
- constructor(origin = new Vector3(), target = new Vector3()) {
57322
- __publicField(this, "origin");
57323
- __publicField(this, "target");
57324
- this.origin = origin;
57325
- this.target = target;
57326
- }
57327
- static fromArray(array) {
57328
- return new Segment(
57329
- new Vector3(array[0], array[1], array[2]),
57330
- new Vector3(array[3], array[4], array[5])
57331
- );
57332
- }
57333
- toArray() {
57334
- return [this.origin.x, this.origin.y, this.origin.z, this.target.x, this.target.y, this.target.z];
57335
- }
57336
- isValid() {
57337
- return !this.origin.equals(this.target);
57338
- }
57339
- equals(segment) {
57340
- return this.origin.equals(segment.origin) && this.target.equals(segment.target);
57341
- }
57342
- }
57343
- class RGBA {
57344
- constructor(r, g, b, a = 1) {
57345
- __publicField(this, "r");
57346
- __publicField(this, "g");
57347
- __publicField(this, "b");
57348
- __publicField(this, "a");
57349
- this.r = r;
57350
- this.g = g;
57351
- this.b = b;
57352
- this.a = a;
57353
- }
57354
- clone() {
57355
- return new RGBA(this.r, this.g, this.b, this.a);
57356
- }
57357
- isValid() {
57358
- return Number.isFinite(this.r) && Number.isFinite(this.g) && Number.isFinite(this.b) && Number.isFinite(this.a);
57359
- }
57360
- equals(color) {
57361
- return this.r === color.r && this.g === color.g && this.b === color.b && this.a === color.a;
57362
- }
57363
- static fromString(str) {
57364
- str = str.trim();
57365
- if (str.startsWith("(")) {
57366
- str = str.substring(1);
57367
- }
57368
- if (str.endsWith(")")) {
57369
- str = str.substring(0, str.length - 1);
57370
- }
57371
- const parts = str.split(",");
57372
- if (parts.length < 3 || parts.length > 4) {
57373
- throw new Error("Invalid color string format. Expected 3 or 4 components.");
57374
- }
57375
- const r = parseFloat(parts[0]);
57376
- const g = parseFloat(parts[1]);
57377
- const b = parseFloat(parts[2]);
57378
- const a = parts.length === 4 ? parseFloat(parts[3]) : 1;
57379
- if ([r, g, b, a].some((n) => isNaN(n))) {
57380
- throw new Error("Invalid number in color string.");
57381
- }
57382
- return new RGBA(r, g, b, a);
57383
- }
57384
- }
57385
- class RGB {
57386
- constructor(r, g, b) {
57387
- __publicField(this, "r");
57388
- __publicField(this, "g");
57389
- __publicField(this, "b");
57390
- this.r = r;
57391
- this.g = g;
57392
- this.b = b;
57393
- }
57394
- }
57395
- class RGBA32 {
57396
- constructor(hex) {
57397
- __publicField(this, "hex");
57398
- if (!Number.isInteger(hex) || hex < 0 || hex > 4294967295) {
57399
- throw new Error("Invalid value: must be a 32-bit unsigned integer");
57400
- }
57401
- this.hex = hex;
57402
- }
57403
- static fromInts(r, g, b, a = 1) {
57404
- if (r < 0 || r > 255 || g < 0 || g > 255 || b < 0 || b > 255 || a < 0 || a > 255) {
57405
- throw new Error("Each RGBA component must be in the range 0-255.");
57406
- }
57407
- const hex = r * 2 ** 24 + g * 2 ** 16 + b * 2 ** 8 + a;
57408
- return new RGBA32(hex);
57409
- }
57410
- static fromFloats(r, g, b, a = 1) {
57411
- return this.fromInts(
57412
- remap(r, 255),
57413
- remap(g, 255),
57414
- remap(b, 255),
57415
- remap(a, 255)
57416
- );
57417
- }
57418
- static fromString(str) {
57419
- if (str.startsWith("#")) {
57420
- str = str.slice(1);
57421
- }
57422
- if (str.length === 3 || str.length === 4) {
57423
- str = str.split("").map((c) => c + c).join("");
57424
- }
57425
- let r = 0;
57426
- let g = 0;
57427
- let b = 0;
57428
- let a = 255;
57429
- if (str.length === 6 || str.length === 8) {
57430
- r = parseInt(str.slice(0, 2), 16);
57431
- g = parseInt(str.slice(2, 4), 16);
57432
- b = parseInt(str.slice(4, 6), 16);
57433
- if (str.length === 8) {
57434
- a = parseInt(str.slice(6, 8), 16);
57435
- }
57436
- } else {
57437
- throw new Error("Invalid color string format");
57438
- }
57439
- if ([r, g, b, a].some((v) => isNaN(v))) {
57440
- throw new Error("Invalid color string format");
57441
- }
57442
- return this.fromInts(r, g, b, a);
57443
- }
57444
- /**
57445
- * The red component of the color in the range [0-255].
57446
- */
57447
- get r() {
57448
- return this.hex >>> 24;
57449
- }
57450
- /**
57451
- * The green component of the color in the range [0-255].
57452
- */
57453
- get g() {
57454
- return this.hex >>> 16 & 255;
57455
- }
57456
- /**
57457
- * The blue component of the color in the range [0-255].
57458
- */
57459
- get b() {
57460
- return this.hex >>> 8 & 255;
57461
- }
57462
- /**
57463
- * The alpha component of the color in the range [0-255].
57464
- */
57465
- get a() {
57466
- return this.hex & 255;
57467
- }
57468
- }
57469
57468
  class Camera3 {
57470
57469
  /**
57471
57470
  * Creates a new Camera instance
@@ -58324,35 +58323,7 @@ class RemoteColor {
58324
58323
  * @returns {number} The color value as a hexadecimal number.
58325
58324
  */
58326
58325
  get hex() {
58327
- return this.color.hex;
58328
- }
58329
- /**
58330
- * Gets the red component of the color.
58331
- * @returns {number} The red component value in the range [0-255].
58332
- */
58333
- get r() {
58334
- return this.color.r;
58335
- }
58336
- /**
58337
- * Gets the green component of the color.
58338
- * @returns {number} The green component value in the range [0-255].
58339
- */
58340
- get g() {
58341
- return this.color.g;
58342
- }
58343
- /**
58344
- * Gets the blue component of the color.
58345
- * @returns {number} The blue component value in the range [0-255].
58346
- */
58347
- get b() {
58348
- return this.color.b;
58349
- }
58350
- /**
58351
- * Gets the alpha (opacity) component of the color.
58352
- * @returns {number} The alpha component value in the range [0-255].
58353
- */
58354
- get a() {
58355
- return this.color.a;
58326
+ return this.color.getHex();
58356
58327
  }
58357
58328
  /**
58358
58329
  * Disposes of the color handle and releases associated resources.
@@ -58365,6 +58336,12 @@ class RemoteColor {
58365
58336
  this._disposed = true;
58366
58337
  }
58367
58338
  }
58339
+ function RGBAfromThree(color, opacity = 1) {
58340
+ return new RGBA(color.r, color.g, color.b, opacity);
58341
+ }
58342
+ function RGBA32fromThree(color, opacity = 1) {
58343
+ return RGBA32.fromFloats(color.r, color.g, color.b, opacity);
58344
+ }
58368
58345
  const MAX_BATCH_SIZE = 3e3;
58369
58346
  class ColorManager {
58370
58347
  /**
@@ -58384,8 +58361,8 @@ class ColorManager {
58384
58361
  * @param hex - The RGBA32 color value
58385
58362
  * @returns Promise resolving to a ColorHandle, or undefined if creation fails
58386
58363
  */
58387
- async getColor(hex) {
58388
- const colors = await this.getColors([hex]);
58364
+ async getColor(color) {
58365
+ const colors = await this.getColors([color]);
58389
58366
  if (!colors) return void 0;
58390
58367
  return colors[0];
58391
58368
  }
@@ -58401,20 +58378,21 @@ class ColorManager {
58401
58378
  const toCreate = [];
58402
58379
  for (let i = 0; i < c.length; i++) {
58403
58380
  const color = c[i];
58404
- if (this._hexToColor.has(color.hex)) {
58405
- result[i] = this._hexToColor.get(color.hex);
58406
- } else if (hexToIndices.has(color.hex)) {
58407
- hexToIndices.get(color.hex).push(i);
58381
+ const hex = color.getHex();
58382
+ if (this._hexToColor.has(hex)) {
58383
+ result[i] = this._hexToColor.get(hex);
58384
+ } else if (hexToIndices.has(hex)) {
58385
+ hexToIndices.get(hex).push(i);
58408
58386
  } else {
58409
58387
  toCreate.push(color);
58410
- hexToIndices.set(color.hex, [i]);
58388
+ hexToIndices.set(hex, [i]);
58411
58389
  }
58412
58390
  }
58413
58391
  const colors = await this._createColors(toCreate);
58414
58392
  if (!colors) return void 0;
58415
58393
  for (let i = 0; i < colors.length; i++) {
58416
58394
  const color = toCreate[i];
58417
- const indices = hexToIndices.get(color.hex);
58395
+ const indices = hexToIndices.get(color.getHex());
58418
58396
  for (const index2 of indices) {
58419
58397
  result[index2] = colors[i];
58420
58398
  }
@@ -58459,7 +58437,8 @@ class ColorManager {
58459
58437
  if (colors.length === 0) {
58460
58438
  return result;
58461
58439
  }
58462
- const instances = await this._rpc.RPCCreateMaterialInstances(MaterialHandles.StandardOpaque, 1, colors);
58440
+ const rpcColors = colors.map((c) => RGBA32fromThree(c));
58441
+ const instances = await this._rpc.RPCCreateMaterialInstances(MaterialHandles.StandardOpaque, 1, rpcColors);
58463
58442
  if (!instances) return void 0;
58464
58443
  for (let i = 0; i < colors.length; i++) {
58465
58444
  const color = this._createColor(colors[i], instances[i]);
@@ -58476,7 +58455,7 @@ class ColorManager {
58476
58455
  */
58477
58456
  _createColor(color, id2) {
58478
58457
  const handle = new RemoteColor(color, id2, this);
58479
- this._hexToColor.set(color.hex, handle);
58458
+ this._hexToColor.set(color.getHex(), handle);
58480
58459
  this._idToColor.set(handle.id, handle);
58481
58460
  return handle;
58482
58461
  }
@@ -59743,7 +59722,8 @@ class RpcSafeClient {
59743
59722
  }
59744
59723
  const defaultRenderSettings = {
59745
59724
  ...defaultSceneSettings,
59746
- ghostColor: new RGBA(14 / 255, 14 / 255, 14 / 255, 64 / 255)
59725
+ ghostColor: new Color(14 / 255, 14 / 255, 14 / 255),
59726
+ ghostOpacity: 64 / 255
59747
59727
  };
59748
59728
  class Renderer2 {
59749
59729
  /**
@@ -59790,7 +59770,8 @@ class Renderer2 {
59790
59770
  * Sets up initial scene settings, ghost color, and IBL rotation
59791
59771
  */
59792
59772
  onConnect() {
59793
- this._rpc.RPCSetGhostColor(this._settings.ghostColor);
59773
+ const color = RGBAfromThree(this._settings.ghostColor, this._settings.ghostOpacity);
59774
+ this._rpc.RPCSetGhostColor(color);
59794
59775
  }
59795
59776
  notifySceneUpdated() {
59796
59777
  this._onSceneUpdated.dispatch();
@@ -59798,11 +59779,14 @@ class Renderer2 {
59798
59779
  // Getters
59799
59780
  /**
59800
59781
  * Gets the ghost color used for transparent rendering
59801
- * @returns Current ghost color as RGBA
59782
+ * @returns Current ghost color as a THREE.Color
59802
59783
  */
59803
59784
  get ghostColor() {
59804
59785
  return this._settings.ghostColor;
59805
59786
  }
59787
+ get ghostOpacity() {
59788
+ return this._settings.ghostOpacity;
59789
+ }
59806
59790
  /**
59807
59791
  * Gets the tone mapping white point value
59808
59792
  * @returns Current tone mapping white point
@@ -59843,20 +59827,26 @@ class Renderer2 {
59843
59827
  * @returns Current background color as RGBA
59844
59828
  */
59845
59829
  get backgroundColor() {
59846
- return this._settings.backgroundColor;
59830
+ return this._settings.backgroundColor.toThree();
59847
59831
  }
59848
59832
  // Setters
59849
59833
  /**
59850
59834
  * Updates the ghost color used for transparent rendering
59851
- * @param value - New ghost color as RGBA
59835
+ * @param value - New ghost color as THREE.Color
59852
59836
  */
59853
59837
  set ghostColor(value) {
59854
- value = Validation.clampRGBA01(value);
59855
59838
  if (this._settings.ghostColor.equals(value)) return;
59856
59839
  this._settings.ghostColor = value;
59857
59840
  this._updateGhostColor = true;
59858
59841
  this.requestSettingsUpdate();
59859
59842
  }
59843
+ set ghostOpacity(value) {
59844
+ value = Validation.clamp01(value);
59845
+ if (this._settings.ghostOpacity === value) return;
59846
+ this._settings.ghostOpacity = value;
59847
+ this._updateGhostColor = true;
59848
+ this.requestSettingsUpdate();
59849
+ }
59860
59850
  /**
59861
59851
  * Sets the tone mapping white point value
59862
59852
  * @param value - New tone mapping white point value
@@ -59914,12 +59904,12 @@ class Renderer2 {
59914
59904
  }
59915
59905
  /**
59916
59906
  * Sets the background color
59917
- * @param value - New background color as RGBA
59907
+ * @param value - New background color as THREE.Color
59918
59908
  */
59919
59909
  set backgroundColor(value) {
59920
- value = Validation.clampRGBA01(value);
59921
- if (this._settings.backgroundColor.equals(value)) return;
59922
- this._settings.backgroundColor = value;
59910
+ const color = RGBAfromThree(value, 1);
59911
+ if (this._settings.backgroundColor.equals(color)) return;
59912
+ this._settings.backgroundColor = color;
59923
59913
  this._updateLighting = true;
59924
59914
  this.requestSettingsUpdate();
59925
59915
  }
@@ -59939,7 +59929,10 @@ class Renderer2 {
59939
59929
  }
59940
59930
  async applySettings() {
59941
59931
  if (this._updateLighting) await this._rpc.RPCSetLighting(this._settings);
59942
- if (this._updateGhostColor) await this._rpc.RPCSetGhostColor(this._settings.ghostColor);
59932
+ if (this._updateGhostColor) {
59933
+ const color = RGBAfromThree(this._settings.ghostColor, this._settings.ghostOpacity);
59934
+ await this._rpc.RPCSetGhostColor(color);
59935
+ }
59943
59936
  this._updateLighting = false;
59944
59937
  this._updateGhostColor = false;
59945
59938
  this._animationFrame = void 0;
@@ -60039,7 +60032,7 @@ class SectionBox2 {
60039
60032
  * Fits the given box, invalid dimensions will be reversed.
60040
60033
  * @param box - The new bounding box.
60041
60034
  */
60042
- fitBox(box) {
60035
+ setBox(box) {
60043
60036
  box = safeBox(box);
60044
60037
  this._box = box;
60045
60038
  this.scheduleUpdate();
@@ -60864,7 +60857,7 @@ class Vim2 {
60864
60857
  // Should be private
60865
60858
  __publicField(this, "visibility");
60866
60859
  // Color tracking remains unchanged.
60867
- __publicField(this, "_nodeColors", /* @__PURE__ */ new Map());
60860
+ __publicField(this, "_elementColors", /* @__PURE__ */ new Map());
60868
60861
  __publicField(this, "_updatedColors", /* @__PURE__ */ new Set());
60869
60862
  // Delayed update flag.
60870
60863
  __publicField(this, "_updateScheduled", false);
@@ -61017,12 +61010,12 @@ class Vim2 {
61017
61010
  }
61018
61011
  return await this._rpc.RPCGetAABBForVim(this._handle);
61019
61012
  }
61020
- getColor(node) {
61021
- return this._nodeColors.get(node);
61013
+ getColor(elementIndex) {
61014
+ return this._elementColors.get(elementIndex);
61022
61015
  }
61023
- async setColor(nodes, color) {
61024
- const colors = new Array(nodes.length).fill(color);
61025
- this.applyColor(nodes, colors);
61016
+ async setColor(elementIndex, color) {
61017
+ const colors = new Array(elementIndex.length).fill(color);
61018
+ this.applyColor(elementIndex, colors);
61026
61019
  }
61027
61020
  async setColors(nodes, color) {
61028
61021
  if (color.length !== nodes.length) {
@@ -61035,9 +61028,9 @@ class Vim2 {
61035
61028
  const c = color[i];
61036
61029
  const n = nodes[i];
61037
61030
  if (c === void 0) {
61038
- this._nodeColors.delete(n);
61031
+ this._elementColors.delete(n);
61039
61032
  } else {
61040
- this._nodeColors.set(n, c);
61033
+ this._elementColors.set(n, c);
61041
61034
  }
61042
61035
  this._updatedColors.add(n);
61043
61036
  }
@@ -61045,9 +61038,9 @@ class Vim2 {
61045
61038
  }
61046
61039
  clearColor(elements) {
61047
61040
  if (elements === "all") {
61048
- this._nodeColors.clear();
61041
+ this._elementColors.clear();
61049
61042
  } else {
61050
- elements.forEach((n) => this._nodeColors.delete(n));
61043
+ elements.forEach((n) => this._elementColors.delete(n));
61051
61044
  }
61052
61045
  if (!this.connected) return;
61053
61046
  if (elements === "all") {
@@ -61059,7 +61052,7 @@ class Vim2 {
61059
61052
  }
61060
61053
  reapplyColors() {
61061
61054
  this._updatedColors.clear();
61062
- this._nodeColors.forEach((c, n) => this._updatedColors.add(n));
61055
+ this._elementColors.forEach((c, n) => this._updatedColors.add(n));
61063
61056
  this.scheduleColorUpdate();
61064
61057
  }
61065
61058
  scheduleColorUpdate() {
@@ -61076,7 +61069,7 @@ class Vim2 {
61076
61069
  }
61077
61070
  async updateRemoteColors() {
61078
61071
  const nodes = Array.from(this._updatedColors);
61079
- const colors = nodes.map((n) => this._nodeColors.get(n));
61072
+ const colors = nodes.map((n) => this._elementColors.get(n));
61080
61073
  const remoteColors = await this._colors.getColors(colors);
61081
61074
  const colorIds = remoteColors.map((c) => (c == null ? void 0 : c.id) ?? -1);
61082
61075
  this._rpc.RPCSetMaterialOverridesForElements(this._handle, nodes, colorIds);
@@ -61404,9 +61397,6 @@ const index$7 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePrope
61404
61397
  INVALID_HANDLE,
61405
61398
  InputMode,
61406
61399
  MaterialHandles,
61407
- RGB,
61408
- RGBA,
61409
- RGBA32,
61410
61400
  Segment,
61411
61401
  Viewer: Viewer$2,
61412
61402
  VimLoadingStatus,
@@ -76197,7 +76187,7 @@ function useUltraSectionBox(viewer) {
76197
76187
  viewer.sectionBox.interactive = b;
76198
76188
  },
76199
76189
  getBox: () => viewer.sectionBox.getBox(),
76200
- setBox: (box) => viewer.sectionBox.fitBox(box),
76190
+ setBox: (box) => viewer.sectionBox.setBox(box),
76201
76191
  onSelectionChanged: viewer.selection.onSelectionChanged,
76202
76192
  getSelectionBox: () => viewer.selection.getBoundingBox(),
76203
76193
  getSceneBox: () => viewer.renderer.getBoundingBox()
@@ -76311,11 +76301,9 @@ function createAdapter(viewer) {
76311
76301
  }
76312
76302
  }
76313
76303
  },
76314
- getGhostOpacity: () => viewer.renderer.ghostColor.a,
76304
+ getGhostOpacity: () => viewer.renderer.ghostOpacity,
76315
76305
  setGhostOpacity: (opacity) => {
76316
- const c = viewer.renderer.ghostColor.clone();
76317
- c.a = opacity;
76318
- viewer.renderer.ghostColor = c;
76306
+ viewer.renderer.ghostOpacity = opacity;
76319
76307
  },
76320
76308
  getShowRooms: () => true,
76321
76309
  setShowRooms: (show) => {