vim-web 0.5.0-dev.22 → 0.5.0-dev.24

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/style.css CHANGED
@@ -772,9 +772,6 @@ video:where(.vim-component,.vim-component *) {
772
772
  .vc-m-1 {
773
773
  margin: 0.25rem;
774
774
  }
775
- .vc-m-2 {
776
- margin: 0.5rem;
777
- }
778
775
  .vc-m-auto {
779
776
  margin: auto;
780
777
  }
@@ -6,6 +6,7 @@ export declare class MouseHandler extends BaseInputHandler {
6
6
  private _capture;
7
7
  private _dragHandler;
8
8
  private _doubleClickHandler;
9
+ private _clickHandler;
9
10
  onButtonDown: (pos: THREE.Vector2, button: number) => void;
10
11
  onButtonUp: (pos: THREE.Vector2, button: number) => void;
11
12
  onMouseMove: (event: THREE.Vector2) => void;
@@ -46,7 +46,7 @@ export declare function controlBarMeasure(measure: ReturnType<typeof getMeasureS
46
46
  style: typeof ControlBar.Style.buttonDefaultStyle;
47
47
  }[];
48
48
  };
49
- export declare function controlBarMiscUltra(side: SideState, settings: UltraSettings): ControlBar.IControlBarSection;
49
+ export declare function controlBarMiscUltra(modal: ModalHandle, side: SideState, settings: UltraSettings): ControlBar.IControlBarSection;
50
50
  export type ControlBarCameraSettings = {
51
51
  cameraAuto: UserBoolean;
52
52
  cameraFrameSelection: UserBoolean;
@@ -84,4 +84,5 @@ export declare function useControlBar(viewer: Core.Webgl.Viewer, camera: CameraR
84
84
  * @param {Settings} settings - The viewer settings to check
85
85
  * @returns {boolean} True if any settings buttons are enabled
86
86
  */
87
- export declare function anyUiSettingButton(settings: WebglSettings): boolean;
87
+ export declare function anyWebglMiscButton(settings: WebglSettings): boolean;
88
+ export declare function anyUltraMiscButton(settings: UltraSettings): boolean;
@@ -1,8 +1,9 @@
1
1
  import * as Core from '../../core-viewers/ultra';
2
2
  import { ControlBarCustomization } from '../controlbar/controlBar';
3
+ import { ModalHandle } from '../panels';
3
4
  import { CameraRef } from '../state/cameraState';
4
5
  import { SectionBoxRef } from '../state/sectionBoxState';
5
6
  import { IsolationRef } from '../state/sharedIsolation';
6
7
  import { SideState } from '../state/sideState';
7
8
  import { UltraSettings } from './settings';
8
- export declare function useUltraControlBar(viewer: Core.Viewer, section: SectionBoxRef, isolation: IsolationRef, camera: CameraRef, settings: UltraSettings, side: SideState, customization: ControlBarCustomization | undefined): import("../controlbar").IControlBarSection[];
9
+ export declare function useUltraControlBar(viewer: Core.Viewer, section: SectionBoxRef, isolation: IsolationRef, camera: CameraRef, settings: UltraSettings, side: SideState, modal: ModalHandle, customization: ControlBarCustomization | undefined): import("../controlbar").IControlBarSection[];
@@ -52688,6 +52688,7 @@ void main() {
52688
52688
  __publicField(this, "_capture");
52689
52689
  __publicField(this, "_dragHandler");
52690
52690
  __publicField(this, "_doubleClickHandler", new DoubleClickHandler());
52691
+ __publicField(this, "_clickHandler", new ClickHandler());
52691
52692
  __publicField(this, "onButtonDown");
52692
52693
  __publicField(this, "onButtonUp");
52693
52694
  __publicField(this, "onMouseMove");
@@ -52724,23 +52725,28 @@ void main() {
52724
52725
  (_a3 = this.onButtonDown) == null ? void 0 : _a3.call(this, pos, event.button);
52725
52726
  this._lastMouseDownPosition = pos;
52726
52727
  this._dragHandler.onPointerDown(pos, event.button);
52728
+ this._clickHandler.onPointerDown(pos);
52727
52729
  this._capture.onPointerDown(event);
52728
52730
  event.preventDefault();
52729
52731
  }
52730
52732
  handlePointerUp(event) {
52731
52733
  var _a3;
52732
52734
  if (event.pointerType !== "mouse") return;
52735
+ event.preventDefault();
52733
52736
  const pos = this.relativePosition(event);
52734
52737
  (_a3 = this.onButtonUp) == null ? void 0 : _a3.call(this, pos, event.button);
52735
52738
  this._capture.onPointerUp(event);
52736
52739
  this._dragHandler.onPointerUp();
52737
- if (this._doubleClickHandler.checkForDoubleClick(event)) {
52740
+ this._clickHandler.onPointerUp();
52741
+ if (this._doubleClickHandler.isDoubleClick(event)) {
52738
52742
  this.handleDoubleClick(event);
52739
- } else {
52743
+ return;
52744
+ }
52745
+ if (this._clickHandler.isClick(event)) {
52740
52746
  this.handleMouseClick(event);
52741
- this.handleContextMenu(event);
52747
+ return;
52742
52748
  }
52743
- event.preventDefault();
52749
+ this.handleContextMenu(event);
52744
52750
  }
52745
52751
  async handleMouseClick(event) {
52746
52752
  var _a3;
@@ -52769,6 +52775,7 @@ void main() {
52769
52775
  this._canvas.focus();
52770
52776
  const pos = this.relativePosition(event);
52771
52777
  this._dragHandler.onPointerMove(pos);
52778
+ this._clickHandler.onPointerMove(pos);
52772
52779
  (_a3 = this.onMouseMove) == null ? void 0 : _a3.call(this, pos);
52773
52780
  }
52774
52781
  async handleDoubleClick(event) {
@@ -52812,6 +52819,28 @@ void main() {
52812
52819
  }
52813
52820
  }
52814
52821
  }
52822
+ class ClickHandler {
52823
+ constructor() {
52824
+ __publicField(this, "_moved", false);
52825
+ __publicField(this, "_startPosition", new Vector2());
52826
+ __publicField(this, "_clickThreshold", 3e-3);
52827
+ }
52828
+ onPointerDown(pos) {
52829
+ this._moved = false;
52830
+ this._startPosition.copy(pos);
52831
+ }
52832
+ onPointerMove(pos) {
52833
+ if (pos.distanceTo(this._startPosition) > this._clickThreshold) {
52834
+ this._moved = true;
52835
+ }
52836
+ }
52837
+ onPointerUp() {
52838
+ }
52839
+ isClick(event) {
52840
+ if (event.button !== 0) return false;
52841
+ return !this._moved;
52842
+ }
52843
+ }
52815
52844
  class DoubleClickHandler {
52816
52845
  constructor() {
52817
52846
  __publicField(this, "_lastClickTime", 0);
@@ -52821,7 +52850,7 @@ void main() {
52821
52850
  __publicField(this, "_positionThreshold", 5);
52822
52851
  }
52823
52852
  // Max pixel distance between clicks
52824
- checkForDoubleClick(event) {
52853
+ isDoubleClick(event) {
52825
52854
  const currentTime = Date.now();
52826
52855
  const currentPosition = new Vector2(event.clientX, event.clientY);
52827
52856
  const timeDiff = currentTime - this._lastClickTime;
@@ -55406,7 +55435,7 @@ void main() {
55406
55435
  }
55407
55436
  unparent2dObjects(target) {
55408
55437
  if (target instanceof Group) {
55409
- for (const child of target.children) {
55438
+ for (const child of [...target.children]) {
55410
55439
  if (child instanceof CSS2DObject) {
55411
55440
  target.remove(child);
55412
55441
  }
@@ -55581,6 +55610,7 @@ void main() {
55581
55610
  }
55582
55611
  add(objectOrObjects) {
55583
55612
  if (!this.enabled) return;
55613
+ if (!objectOrObjects) return;
55584
55614
  const objects = this.toArray(objectOrObjects);
55585
55615
  let changed = false;
55586
55616
  for (const obj of objects) {
@@ -67629,7 +67659,7 @@ Averrage Date/Second ${avgDataRatePS} kb
67629
67659
  enabled: () => isTrue(settings2.sectioningEnable),
67630
67660
  tip: "Enable Section Box",
67631
67661
  isOn: () => section.enable.get(),
67632
- style: (on) => Style.buttonExpandStyle(on),
67662
+ style: Style.buttonExpandStyle,
67633
67663
  action: () => section.enable.set(!section.enable.get()),
67634
67664
  icon: sectionBox
67635
67665
  },
@@ -67638,7 +67668,7 @@ Averrage Date/Second ${avgDataRatePS} kb
67638
67668
  tip: "Fit Section",
67639
67669
  enabled: () => section.enable.get() && isTrue(settings2.sectioningFitToSelection),
67640
67670
  isOn: () => hasSelection,
67641
- style: (on) => Style.buttonDisableStyle(on),
67671
+ style: Style.buttonDisableStyle,
67642
67672
  action: () => section.sectionSelection.call(),
67643
67673
  icon: sectionBoxShrink
67644
67674
  },
@@ -67646,7 +67676,7 @@ Averrage Date/Second ${avgDataRatePS} kb
67646
67676
  id: Ids$2.sectioningFitScene,
67647
67677
  tip: "Reset Section",
67648
67678
  enabled: () => section.enable.get() && isTrue(settings2.sectioningReset),
67649
- style: (on) => Style.buttonDefaultStyle(on),
67679
+ style: Style.buttonDefaultStyle,
67650
67680
  action: () => section.sectionScene.call(),
67651
67681
  icon: sectionBoxReset
67652
67682
  },
@@ -67655,7 +67685,7 @@ Averrage Date/Second ${avgDataRatePS} kb
67655
67685
  tip: "Show Section Box",
67656
67686
  enabled: () => section.enable.get() && isTrue(settings2.sectioningShow),
67657
67687
  isOn: () => section.visible.get(),
67658
- style: (on) => Style.buttonDefaultStyle(on),
67688
+ style: Style.buttonDefaultStyle,
67659
67689
  action: () => section.visible.set(!section.visible.get()),
67660
67690
  icon: visible
67661
67691
  },
@@ -67664,7 +67694,7 @@ Averrage Date/Second ${avgDataRatePS} kb
67664
67694
  tip: "Auto Section",
67665
67695
  enabled: () => section.enable.get() && isTrue(settings2.sectioningAuto),
67666
67696
  isOn: () => section.auto.get(),
67667
- style: (on) => Style.buttonDefaultStyle(on),
67697
+ style: Style.buttonDefaultStyle,
67668
67698
  action: () => section.auto.set(!section.auto.get()),
67669
67699
  icon: sectionBoxAuto
67670
67700
  },
@@ -67673,14 +67703,14 @@ Averrage Date/Second ${avgDataRatePS} kb
67673
67703
  tip: "Section Settings",
67674
67704
  enabled: () => section.enable.get() && isTrue(settings2.sectioningSettings),
67675
67705
  isOn: () => section.showOffsetPanel.get(),
67676
- style: (on) => Style.buttonDefaultStyle(on),
67706
+ style: Style.buttonDefaultStyle,
67677
67707
  action: () => section.showOffsetPanel.set(!section.showOffsetPanel.get()),
67678
67708
  icon: slidersHoriz
67679
67709
  }
67680
67710
  ]
67681
67711
  };
67682
67712
  }
67683
- function controlBarPointer(viewer, camera2, settings2, section) {
67713
+ function controlBarPointer(viewer, settings2) {
67684
67714
  const pointer2 = getPointerState(viewer);
67685
67715
  return {
67686
67716
  id: Ids$2.cursorSpan,
@@ -67744,65 +67774,57 @@ Averrage Date/Second ${avgDataRatePS} kb
67744
67774
  ]
67745
67775
  };
67746
67776
  }
67747
- function controlBarMiscUltra(side, settings$1) {
67777
+ function createMiscSettingsButton(side, settings$1) {
67778
+ return {
67779
+ id: Ids$2.miscSettings,
67780
+ enabled: () => isTrue(settings$1.ui.miscSettings),
67781
+ tip: "Settings",
67782
+ action: () => side.toggleContent("settings"),
67783
+ icon: settings,
67784
+ style: Style.buttonDefaultStyle
67785
+ };
67786
+ }
67787
+ function createMiscHelpButton(modal, settings2) {
67788
+ return {
67789
+ id: Ids$2.miscHelp,
67790
+ enabled: () => isTrue(settings2.ui.miscHelp),
67791
+ tip: "Help",
67792
+ action: () => modal.help(true),
67793
+ icon: help,
67794
+ style: Style.buttonDefaultStyle
67795
+ };
67796
+ }
67797
+ function controlBarMiscUltra(modal, side, settings2) {
67748
67798
  return {
67749
67799
  id: Ids$2.miscSpan,
67750
- enable: () => isTrue(settings$1.ui.miscSettings),
67800
+ enable: () => anyUltraMiscButton(settings2),
67751
67801
  style: Style.sectionDefaultStyle,
67752
67802
  buttons: [
67753
- {
67754
- id: Ids$2.miscSettings,
67755
- enabled: () => isTrue(settings$1.ui.miscSettings),
67756
- tip: "Settings",
67757
- action: () => side.toggleContent("settings"),
67758
- icon: settings,
67759
- style: Style.buttonDefaultStyle
67760
- },
67761
- {
67762
- id: Ids$2.miscHelp,
67763
- enabled: () => isTrue(settings$1.ui.miscHelp),
67764
- tip: "Help",
67765
- action: () => side.toggleContent("settings"),
67766
- icon: settings,
67767
- style: Style.buttonDefaultStyle
67768
- }
67803
+ createMiscSettingsButton(side, settings2),
67804
+ createMiscHelpButton(modal, settings2)
67769
67805
  ]
67770
67806
  };
67771
67807
  }
67772
- function controlBarMisc(modal, side, settings$1) {
67808
+ function controlBarMisc(modal, side, settings2) {
67773
67809
  const fullScreen = getFullScreenState();
67774
67810
  return {
67775
67811
  id: Ids$2.miscSpan,
67776
- enable: () => anyUiSettingButton(settings$1),
67812
+ enable: () => anyWebglMiscButton(settings2),
67777
67813
  style: Style.sectionDefaultStyle,
67778
67814
  buttons: [
67779
67815
  {
67780
67816
  id: Ids$2.miscInspector,
67781
- enabled: () => isTrue(settings$1.ui.miscProjectInspector) && (isTrue(settings$1.ui.panelBimTree) || isTrue(settings$1.ui.panelBimInfo)),
67817
+ enabled: () => showBimButton(settings2),
67782
67818
  tip: "Project Inspector",
67783
67819
  action: () => side.toggleContent("bim"),
67784
67820
  icon: treeView,
67785
67821
  style: Style.buttonDefaultStyle
67786
67822
  },
67787
- {
67788
- id: Ids$2.miscSettings,
67789
- enabled: () => isTrue(settings$1.ui.miscSettings),
67790
- tip: "Settings",
67791
- action: () => side.toggleContent("settings"),
67792
- icon: settings,
67793
- style: Style.buttonDefaultStyle
67794
- },
67795
- {
67796
- id: Ids$2.miscHelp,
67797
- enabled: () => isTrue(settings$1.ui.miscHelp),
67798
- tip: "Help",
67799
- action: () => modal.help(true),
67800
- icon: help,
67801
- style: Style.buttonDefaultStyle
67802
- },
67823
+ createMiscSettingsButton(side, settings2),
67824
+ createMiscHelpButton(modal, settings2),
67803
67825
  {
67804
67826
  id: Ids$2.miscMaximize,
67805
- enabled: () => isTrue(settings$1.ui.miscMaximise) && settings$1.capacity.canGoFullScreen,
67827
+ enabled: () => isTrue(settings2.ui.miscMaximise) && settings2.capacity.canGoFullScreen,
67806
67828
  tip: fullScreen.get() ? "Minimize" : "Fullscreen",
67807
67829
  action: () => fullScreen.toggle(),
67808
67830
  icon: fullScreen.get() ? minimize : fullsScreen,
@@ -67853,7 +67875,7 @@ Averrage Date/Second ${avgDataRatePS} kb
67853
67875
  return {
67854
67876
  id: Ids$2.visibilitySpan,
67855
67877
  enable: () => true,
67856
- style: `${Style.sectionDefaultStyle}`,
67878
+ style: Style.sectionDefaultStyle,
67857
67879
  buttons: [
67858
67880
  {
67859
67881
  id: Ids$2.visibilityClearSelection,
@@ -67922,7 +67944,7 @@ Averrage Date/Second ${avgDataRatePS} kb
67922
67944
  function useControlBar(viewer, camera2, modal, side, cursor, settings2, section, isolationRef, customization) {
67923
67945
  const measure2 = getMeasureState(viewer, cursor);
67924
67946
  let controlBarSections = [
67925
- controlBarPointer(viewer, camera2, settings2.ui),
67947
+ controlBarPointer(viewer, settings2.ui),
67926
67948
  controlBarCamera(camera2, settings2.ui),
67927
67949
  controlBarVisibility(isolationRef, settings2.ui),
67928
67950
  controlBarMeasure(measure2, settings2.ui),
@@ -67932,12 +67954,21 @@ Averrage Date/Second ${avgDataRatePS} kb
67932
67954
  controlBarSections = (customization == null ? void 0 : customization(controlBarSections)) ?? controlBarSections;
67933
67955
  return controlBarSections;
67934
67956
  }
67957
+ function showBimButton(settings2) {
67958
+ if (isFalse(settings2.ui.miscProjectInspector)) return false;
67959
+ if (isTrue(settings2.ui.panelBimTree)) return true;
67960
+ if (isTrue(settings2.ui.panelBimInfo)) return true;
67961
+ return false;
67962
+ }
67935
67963
  function anyUiCursorButton(settings2) {
67936
67964
  return isTrue(settings2.cursorOrbit) || isTrue(settings2.cursorLookAround) || isTrue(settings2.cursorPan) || isTrue(settings2.cursorZoom);
67937
67965
  }
67938
- function anyUiSettingButton(settings2) {
67966
+ function anyWebglMiscButton(settings2) {
67939
67967
  return isTrue(settings2.ui.miscProjectInspector) || isTrue(settings2.ui.miscSettings) || isTrue(settings2.ui.miscHelp) || isTrue(settings2.ui.miscMaximise);
67940
67968
  }
67969
+ function anyUltraMiscButton(settings2) {
67970
+ return isTrue(settings2.ui.miscSettings) || isTrue(settings2.ui.miscHelp);
67971
+ }
67941
67972
  function RestOfScreen(props) {
67942
67973
  const [, setVersion] = React2.useState(0);
67943
67974
  const resizeObserver = React2.useRef();
@@ -74824,7 +74855,7 @@ Averrage Date/Second ${avgDataRatePS} kb
74824
74855
  }, Symbol.toStringTag, { value: "Module" }));
74825
74856
  function fileOpeningError(url) {
74826
74857
  return {
74827
- title: "File Opening Error",
74858
+ title: "VIM Ultra File Error",
74828
74859
  body: serverFileOpeningErrorBody(url),
74829
74860
  footer: footer$1(),
74830
74861
  canClose: false
@@ -74832,12 +74863,8 @@ Averrage Date/Second ${avgDataRatePS} kb
74832
74863
  }
74833
74864
  function serverFileOpeningErrorBody(url) {
74834
74865
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: vcRoboto, children: [
74835
- mainText(/* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
74836
- "Oops, it appears that there's an ",
74837
- bold("error opening the VIM file"),
74838
- ". Please check the file exists at the path noted below."
74839
- ] })),
74840
- subTitle("Error details:"),
74866
+ mainText(/* @__PURE__ */ jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: "We encountered an error opening the VIM file in VIM Ultra." })),
74867
+ subTitle("Details"),
74841
74868
  dotList([bullet("File path:", url)])
74842
74869
  ] });
74843
74870
  }
@@ -74846,7 +74873,7 @@ Averrage Date/Second ${avgDataRatePS} kb
74846
74873
  return fileOpeningError(url);
74847
74874
  }
74848
74875
  return {
74849
- title: "File Downloading Error",
74876
+ title: "VIM Ultra Download Error",
74850
74877
  body: body$5(url, authToken, server),
74851
74878
  footer: footer$1(),
74852
74879
  canClose: false
@@ -74854,28 +74881,23 @@ Averrage Date/Second ${avgDataRatePS} kb
74854
74881
  }
74855
74882
  function body$5(url, authToken, server) {
74856
74883
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: vcRoboto, children: [
74857
- mainText(/* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
74858
- "Oops, it appears that there’s an ",
74859
- bold("error downloading the VIM file"),
74860
- ". Please check the following conditions to get back up and running quickly."
74861
- ] })),
74862
- subTitle("Error details:"),
74884
+ mainText(/* @__PURE__ */ jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: "We encountered an error downloading the VIM file in VIM Ultra." })),
74885
+ subTitle("Details"),
74863
74886
  dotList([
74864
- server ? bullet("VIM ULTRA Server:", server) : null,
74865
- bullet("File URL:", url),
74866
- authToken ? bullet("Auth Token:", authToken) : null
74887
+ server ? bullet("VIM Ultra:", server) : null,
74888
+ bullet("VIM URL:", url),
74889
+ authToken ? bullet("Access Token:", authToken) : null
74867
74890
  ]),
74868
- subTitle("Troubleshooting tips:"),
74891
+ subTitle("Tips"),
74869
74892
  numList([
74870
- "Make sure the VIM exists at the url listed above.",
74871
- "Reprocess the VIM file and refresh the Power BI report dataset.",
74872
- server ? "Check network access policies to allow the VIM Ultra Server access to the VIM File url." : ""
74893
+ "Ensure the VIM URL is valid",
74894
+ "Check your network connection and access policies"
74873
74895
  ])
74874
74896
  ] });
74875
74897
  }
74876
74898
  function serverFileLoadingError(url) {
74877
74899
  return {
74878
- title: "File Loading Error",
74900
+ title: "VIM Ultra Loading Error",
74879
74901
  body: body$4(url),
74880
74902
  footer: footer$1(),
74881
74903
  canClose: false
@@ -74883,30 +74905,20 @@ Averrage Date/Second ${avgDataRatePS} kb
74883
74905
  }
74884
74906
  function body$4(url) {
74885
74907
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: vcRoboto, children: [
74886
- mainText(/* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
74887
- "Oops, it appears that we ",
74888
- bold("couldn’t load the VIM file"),
74889
- ". This could be due to a couple of reasons, including that the file could be corrupt or not recognizable."
74890
- ] })),
74891
- subTitle("Error details:"),
74908
+ mainText(/* @__PURE__ */ jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: "We encountered an error loading the VIM file in VIM Ultra." })),
74909
+ subTitle("Details"),
74892
74910
  dotList([bullet("File path:", url)]),
74893
- subTitle("Troubleshooting tips:"),
74911
+ subTitle("Tips"),
74894
74912
  numList([
74895
- "Reload this Power BI report",
74896
- "Reprocess the VIM file and refresh the Power BI report dataset"
74913
+ "Reload the page",
74914
+ "Ensure the VIM URL points to a valid VIM file",
74915
+ "Clear your VIM Ultra download cache"
74897
74916
  ])
74898
74917
  ] });
74899
74918
  }
74900
- const supportUltra = "https://docs.vimaec.com/docs/vim-for-windows/configuring-vim-ultra";
74901
- const supportControls = "https://docs.vimaec.com/docs/vim-cloud/webgl-navigation-and-controls-guide";
74902
- const urls = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
74903
- __proto__: null,
74904
- supportControls,
74905
- supportUltra
74906
- }, Symbol.toStringTag, { value: "Module" }));
74907
74919
  function serverConnectionError(url) {
74908
74920
  return {
74909
- title: "Connection Error",
74921
+ title: "VIM Ultra Connection",
74910
74922
  body: body$3(url, isLocalUrl(url)),
74911
74923
  footer: footer$1(),
74912
74924
  canClose: false
@@ -74914,29 +74926,17 @@ Averrage Date/Second ${avgDataRatePS} kb
74914
74926
  }
74915
74927
  function body$3(url, local) {
74916
74928
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: vcRoboto, children: [
74917
- mainText(/* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
74918
- "Oops, it appears that there’s an ",
74919
- bold("error connecting to the ULTRA server"),
74920
- ". Please check the following conditions to get back up and running quickly."
74921
- ] })),
74922
- subTitle("Troubleshooting tips:"),
74929
+ mainText(/* @__PURE__ */ jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: "We encountered an error connecting to VIM Ultra." })),
74930
+ subTitle("Tips"),
74923
74931
  numList([
74924
- /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
74925
- "Ensure that VIM Ultra",
74926
- " ",
74927
- link(supportUltra, "process is running"),
74928
- " ",
74929
- "at ",
74930
- detailText(url)
74931
- ] }),
74932
- "Check your internet connection.",
74933
- "Check firewall permissions."
74932
+ `Ensure that VIM Ultra is running at ${detailText(url)}`,
74933
+ "Check your network connection and access policies"
74934
74934
  ])
74935
74935
  ] });
74936
74936
  }
74937
74937
  function serverCompatibilityError(url, localVersion, remoteVersion) {
74938
74938
  return {
74939
- title: "Compatibility Error",
74939
+ title: "VIM Ultra Compatibility",
74940
74940
  body: body$2(url, localVersion, remoteVersion),
74941
74941
  footer: footer$1(),
74942
74942
  canClose: false
@@ -74944,28 +74944,23 @@ Averrage Date/Second ${avgDataRatePS} kb
74944
74944
  }
74945
74945
  function body$2(url, localVersion, remoteVersion) {
74946
74946
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: vcRoboto, children: [
74947
- mainText(/* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
74948
- "Oops, it appears that you’re running a ",
74949
- " ",
74950
- bold("version of VIM Ultra Server that isn’t compatible with this visual"),
74951
- ". Please check the following conditions to get back up and running quickly."
74952
- ] })),
74953
- subTitle("Error details:"),
74947
+ mainText(/* @__PURE__ */ jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: "The VIM Ultra version is incompatible with this visual." })),
74948
+ subTitle("Details"),
74954
74949
  dotList([
74955
74950
  bullet("Url:", url),
74956
74951
  bullet("Local Version:", localVersion),
74957
74952
  bullet("Remote Version:", remoteVersion)
74958
74953
  ]),
74959
- subTitle("Troubleshooting tips:"),
74954
+ subTitle("Tips"),
74960
74955
  numList([
74961
- "Update your PowerBI visual with the compatible version.",
74962
- "Or, run the compatible version of VIM Ultra."
74956
+ "Update this visual to a compatible version.",
74957
+ "Start a compatible version of VIM Ultra."
74963
74958
  ])
74964
74959
  ] });
74965
74960
  }
74966
74961
  function serverStreamError(url) {
74967
74962
  return {
74968
- title: "Stream Error",
74963
+ title: "VIM Ultra Stream Error",
74969
74964
  body: body$1(),
74970
74965
  footer: footer$1(),
74971
74966
  canClose: false
@@ -74973,16 +74968,12 @@ Averrage Date/Second ${avgDataRatePS} kb
74973
74968
  }
74974
74969
  function body$1(url) {
74975
74970
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: vcRoboto, children: [
74976
- mainText(/* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
74977
- "Oops, it appears that there’s an ",
74978
- bold("error starting a stream on the VIM Ultra Server"),
74979
- ". Please check the following conditions to get back up and running quickly."
74980
- ] })),
74981
- subTitle("Troubleshooting tips:"),
74971
+ mainText(/* @__PURE__ */ jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: "We encountered a streaming error with VIM Ultra." })),
74972
+ subTitle("Tips"),
74982
74973
  numList([
74983
- "Close other applications that may be using the server.",
74984
- "Try reconnecting to the server.",
74985
- "Restart the server."
74974
+ "Reload the page",
74975
+ "Close other applications that may be using VIM Ultra",
74976
+ "Restart VIM Ultra"
74986
74977
  ])
74987
74978
  ] });
74988
74979
  }
@@ -76788,12 +76779,12 @@ Averrage Date/Second ${avgDataRatePS} kb
76788
76779
  };
76789
76780
  return useSectionBox(ultraAdapter);
76790
76781
  }
76791
- function useUltraControlBar(viewer, section, isolation, camera2, settings2, side, customization) {
76782
+ function useUltraControlBar(viewer, section, isolation, camera2, settings2, side, modal, customization) {
76792
76783
  let bar = [
76793
76784
  controlBarCamera(camera2, settings2.ui),
76794
76785
  controlBarVisibility(isolation, settings2.ui),
76795
76786
  controlBarSectionBox(section, viewer.selection.any(), settings2.ui),
76796
- controlBarMiscUltra(side, settings2)
76787
+ controlBarMiscUltra(modal, side, settings2)
76797
76788
  ];
76798
76789
  bar = (customization == null ? void 0 : customization(bar)) ?? bar;
76799
76790
  return bar;
@@ -77052,6 +77043,7 @@ Averrage Date/Second ${avgDataRatePS} kb
77052
77043
  camera2,
77053
77044
  settings2.value,
77054
77045
  side,
77046
+ modalHandle.current,
77055
77047
  (_2) => _2
77056
77048
  );
77057
77049
  useViewerInput(props.core.inputs, camera2);
@@ -77168,6 +77160,13 @@ Averrage Date/Second ${avgDataRatePS} kb
77168
77160
  createViewer,
77169
77161
  getDefaultUltraSettings
77170
77162
  }, Symbol.toStringTag, { value: "Module" }));
77163
+ const supportUltra = "https://docs.vimaec.com/docs/vim-for-windows/configuring-vim-ultra";
77164
+ const supportControls = "https://docs.vimaec.com/docs/vim-cloud/webgl-navigation-and-controls-guide";
77165
+ const urls = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
77166
+ __proto__: null,
77167
+ supportControls,
77168
+ supportUltra
77169
+ }, Symbol.toStringTag, { value: "Module" }));
77171
77170
  const SectionBoxPanel = {
77172
77171
  Ids
77173
77172
  };