.. role:: clio-const
   :class: clio-flag clio-flag-const


#####################################
@ts3d-hoops/web-viewer-components API
#####################################

.. describe:: @ts3d-hoops/web-viewer-components API

   @ts3d-hoops/web-viewer-components
   
   High-level web components and services for building HOOPS Web Viewer applications. This package provides ready-to-use UI components like model trees, toolbars, settings panels, and a complete service architecture for common viewer operations.
   
   
   - Built with Lit and TypeScript
   - Complete viewer UI components (trees, toolbars, panels)
   - Service-based architecture for viewer operations
   - Context management for component communication
   - Framework-agnostic web components
   
   Installation
   
   .. code-block:: bash
   
      npm install @ts3d-hoops/web-viewer-components
   
   This package depends on ``@ts3d-hoops/web-viewer`` and ``@ts3d-hoops/ui-kit``\ , which will be installed automatically.
   
   Quick start
   
   Basic viewer with components
   
   .. code-block:: html
   
      <!doctype html>
      <html>
        <head>
          <script type="module">
            import '@ts3d-hoops/web-viewer-components';
          </script>
        </head>
        <body>
          <hoops-web-viewer endpoint-uri="/models/sample.scs" style="width: 100%; height: 500px;">
            <!-- Add toolbar with buttons -->
            <hoops-toolbar-home slot="toolbar"></hoops-toolbar-home>
            <hoops-toolbar-camera slot="toolbar"></hoops-toolbar-camera>
            <hoops-toolbar-drawmode slot="toolbar"></hoops-toolbar-drawmode>
      
            <!-- Add model tree panel -->
            <hoops-model-tree slot="sidebar"></hoops-model-tree>
          </hoops-web-viewer>
        </body>
      </html>
   
   TypeScript setup
   
   .. code-block:: ts
   
      import '@ts3d-hoops/web-viewer-components';
      import { WebViewerComponent } from '@ts3d-hoops/web-viewer-components';
      
      // Configure the viewer
      const viewer = document.querySelector('hoops-web-viewer') as WebViewerComponent;
      viewer.endpointUri = '/models/microengine.scs';
      viewer.enginePath = '/engine';
      
      // Listen for viewer events
      viewer.addEventListener('model-loaded', (e) => {
        console.log('Model loaded:', e.detail);
      });
   
   Core components
   
   Viewer component
   
   
   - **hoops-web-viewer** — Complete viewer component with slots for toolbars and panels
   
   Trees and navigation
   
   
   - **hoops-model-tree** — Hierarchical model structure tree
   - **hoops-layer-tree** — CAD layer management tree
   - **hoops-view-tree** — Saved views and configurations tree
   - **hoops-types-tree** — Object type filtering tree
   - **hoops-markup-tree** — Markup and annotation tree
   
   Toolbar buttons
   
   
   - **hoops-toolbar-home** — Home/fit view button
   - **hoops-toolbar-camera** — Camera controls and projections
   - **hoops-toolbar-drawmode** — Rendering mode toggle (shaded, wireframe, etc.)
   - **hoops-toolbar-layers** — Layer visibility controls
   - **hoops-toolbar-views** — View management
   - **hoops-toolbar-model-tree** — Model tree toggle
   - **hoops-toolbar-properties** — Properties panel toggle
   - **hoops-toolbar-snapshot** — Screenshot capture
   - **hoops-toolbar-explode** — Model explode controls
   - **hoops-toolbar-redlines** — Markup and redlining tools
   - **hoops-toolbar-tools** — Additional viewer tools
   - **hoops-toolbar-settings** — Settings panel toggle
   - **hoops-toolbar-cad-configuration** — CAD configuration controls
   
   Panels and dialogs
   
   
   - **hoops-settings-panel** — Viewer settings and preferences
   - **hoops-tools-panel** — Tool collection panel
   - **hoops-context-menu** — Right-click context menu
   - **hoops-info-button** — Information display button
   - **hoops-cad-configuration-list** — CAD configuration selection
   
   Service architecture
   
   The package includes a comprehensive service system for viewer operations:
   
   Available services
   
   
   - **CameraService** — Camera manipulation and animation
   - **SelectionService** — Object selection and highlighting
   - **CuttingService** — Cutting plane management
   - **ExplodeService** — Model explosion controls
   - **RedlineService** — Markup and annotation tools
   - **RenderOptionsService** — Rendering and visual settings
   - **ViewService** — View management and navigation
   - **PmiService** — PMI (Product Manufacturing Information) handling
   - **SheetService** — Drawing sheet management
   - **SpaceMouseService** — 3D mouse integration
   - **WalkOperatorService** — Walk-through navigation
   
   Using services
   
   .. code-block:: ts
   
      import {
        CameraService,
        SelectionService,
        serviceRegistry,
      } from '@ts3d-hoops/web-viewer-components/services';
      
      // Get services from the registry
      const cameraService = serviceRegistry.get(CameraService);
      const selectionService = serviceRegistry.get(SelectionService);
      
      // Use camera service
      await cameraService.fitView();
      await cameraService.setProjection('orthographic');
      
      // Use selection service
      const selectedNodes = await selectionService.getSelection();
      await selectionService.selectByNodeId([nodeId]);
   
   Advanced examples
   
   Complete viewer application
   
   .. code-block:: ts
   
      import '@ts3d-hoops/web-viewer-components';
      
      const container = document.getElementById('app')!;
      container.innerHTML = `
        <hoops-web-viewer 
          endpoint-uri="/models/assembly.scs"
          engine-path="/engine"
          style="width: 100vw; height: 100vh;">
          
          <!-- Toolbar -->
          <div slot="toolbar" style="display: flex; gap: 4px;">
            <hoops-toolbar-home></hoops-toolbar-home>
            <hoops-toolbar-camera></hoops-toolbar-camera>
            <hoops-toolbar-drawmode></hoops-toolbar-drawmode>
            <hoops-toolbar-explode></hoops-toolbar-explode>
            <hoops-toolbar-snapshot></hoops-toolbar-snapshot>
            <hoops-toolbar-settings></hoops-toolbar-settings>
          </div>
          
          <!-- Left sidebar -->
          <div slot="sidebar" style="width: 300px; display: flex; flex-direction: column;">
            <hoops-model-tree style="flex: 1;"></hoops-model-tree>
            <hoops-layer-tree style="flex: 1;"></hoops-layer-tree>
          </div>
          
          <!-- Right panel -->
          <div slot="panel" style="width: 250px;">
            <hoops-settings-panel></hoops-settings-panel>
          </div>
        </hoops-web-viewer>
      `;
   
   Custom service integration
   
   .. code-block:: ts
   
      import {
        serviceRegistry,
        CameraService,
        SelectionService,
      } from '@ts3d-hoops/web-viewer-components/services';
      
      class MyCustomService {
        constructor(
          private cameraService: CameraService,
          private selectionService: SelectionService,
        ) {}
      
        async focusOnSelected() {
          const selection = await this.selectionService.getSelection();
          if (selection.length > 0) {
            await this.cameraService.fitNodes(selection);
          }
        }
      }
      
      // Register custom service
      const cameraService = serviceRegistry.get(CameraService);
      const selectionService = serviceRegistry.get(SelectionService);
      const myService = new MyCustomService(cameraService, selectionService);
   
   Event handling
   
   .. code-block:: ts
   
      // Listen for tree selection changes
      const modelTree = document.querySelector('hoops-model-tree')!;
      modelTree.addEventListener('selectionChange', (e) => {
        console.log('Model tree selection:', e.detail);
      });
      
      // Listen for viewer state changes
      const viewer = document.querySelector('hoops-web-viewer')!;
      viewer.addEventListener('model-loaded', (e) => {
        console.log('Model loaded successfully');
      });
      
      viewer.addEventListener('selection-changed', (e) => {
        console.log('Viewer selection changed:', e.detail);
      });
   
   Modular imports
   
   Import only the components you need:
   
   .. code-block:: ts
   
      // Individual components
      import '@ts3d-hoops/web-viewer-components/hoops-web-viewer';
      import '@ts3d-hoops/web-viewer-components/hoops-model-tree';
      import '@ts3d-hoops/web-viewer-components/hoops-toolbar-buttons';
      
      // Specific services
      import { CameraService, SelectionService } from '@ts3d-hoops/web-viewer-components/services';
      
      // Everything (not recommended for production)
      import '@ts3d-hoops/web-viewer-components';
   
   Context management
   
   Components use Lit Context for communication:
   
   .. code-block:: ts
   
      import { WebViewerContextManager } from '@ts3d-hoops/web-viewer-components';
      
      // Context provides shared state between components
      const contextManager = new WebViewerContextManager();
   
   Styling and theming
   
   Components inherit theming from @ts3d-hoops/ui-kit and can be styled with CSS custom properties:
   
   .. code-block:: css
   
      hoops-web-viewer {
        --hoops-neutral-foreground: #ffffff;
        --hoops-accent-foreground: #0078d4;
        --hoops-body-font: 'Segoe UI', system-ui, sans-serif;
      }
      
      hoops-model-tree {
        border: 1px solid #ccc;
        border-radius: 4px;
      }
   
   Storybook documentation
   
   This package includes Storybook for component documentation and testing:
   
   .. code-block:: bash
   
      # Run Storybook locally (if you have the source)
      npm run storybook
   
   TypeScript
   
   Full TypeScript definitions are included for all components and services:
   
   .. code-block:: ts
   
      import type {
        WebViewerComponent,
        HoopsModelTreeElement,
        CameraService,
      } from '@ts3d-hoops/web-viewer-components';
   
   Browser support
   
   
   - Modern browsers with web component support
   - ES2020+ environments
   - WebGL-capable devices
   - Works with all major bundlers (Vite, Webpack, Rollup, esbuild)
   
   Framework integration
   
   React
   
   .. code-block:: tsx
   
      import '@ts3d-hoops/web-viewer-components';
      
      declare global {
        namespace JSX {
          interface IntrinsicElements {
            'hoops-web-viewer': any;
            'hoops-model-tree': any;
          }
        }
      }
      
      function ViewerApp() {
        return (
          <hoops-web-viewer endpoint-uri="/models/sample.scs">
            <hoops-model-tree slot="sidebar" />
          </hoops-web-viewer>
        );
      }
   
   Vue
   
   .. code-block:: vue
   
      <template>
        <hoops-web-viewer :endpoint-uri="modelUri">
          <hoops-model-tree slot="sidebar" />
        </hoops-web-viewer>
      </template>
      
      <script setup>
      import '@ts3d-hoops/web-viewer-components';
      const modelUri = '/models/sample.scs';
      </script>
   
   Related packages
   
   
   - ``@ts3d-hoops/web-viewer`` — Core HOOPS Web Viewer library
   - ``@ts3d-hoops/web-viewer-components-react`` — React wrappers for these components
   - ``@ts3d-hoops/ui-kit`` — Base UI component library
   - ``@ts3d-hoops/streamcache`` — Low-level streaming client
   
   License
   
   Commercial license. For evaluation or production licensing, contact Tech Soft 3D.
   
   
   Index
   =====
   
   .. rubric:: Variables
   
   
   .. rst-class:: api-xref-list
   
   
   * :js:data:`~wvc.ActiveToolOperatorPosition`
   * :js:data:`~wvc.CameraOperatorPosition`
   * :js:data:`~wvc.contextManagerContext`
   * :js:data:`~wvc.OrbitFallbackModeValues`
   * :js:data:`~wvc.PointSizeUnitValues`
   * :js:data:`~wvc.ProjectionValues`
   * :js:data:`~wvc.redlineModes`
   * :js:data:`~wvc.ServiceNames`
   * :js:data:`~wvc.serviceRegistry`
   * :js:data:`~wvc.WalkModeNames`
   * :js:data:`~wvc.WalkSpeedUnitNames`
   * :js:data:`~wvc.webViewerContext`
   * :js:data:`~wvc.webViewerStateContext`
   
   



.. rst-class:: kind-group kind-classes

.. rubric:: Classes
   :class: kind-group-title


.. rst-class:: api-xref-list


* :js:class:`~wvc.CameraService`
* :js:class:`~wvc.CuttingService`
* :js:class:`~wvc.ExplodeService`
* :js:class:`~wvc.HoopsCadConfigurationButtonElement`
* :js:class:`~wvc.HoopsCadConfigurationListElement`
* :js:class:`~wvc.HoopsCameraButtonElement`
* :js:class:`~wvc.HoopsCameraOperatorButtonElement`
* :js:class:`~wvc.HoopsContextMenuElement`
* :js:class:`~wvc.HoopsCuttingPlaneEditorElement`
* :js:class:`~wvc.HoopsCuttingPlaneElement`
* :js:class:`~wvc.HoopsCuttingPlanePanelElement`
* :js:class:`~wvc.HoopsCuttingPlaneToolbarElement`
* :js:class:`~wvc.HoopsCuttingSectionElement`
* :js:class:`~wvc.HoopsCuttingSectionToolbarElement`
* :js:class:`~wvc.HoopsDrawmodeButtonElement`
* :js:class:`~wvc.HoopsExplodeButtonElement`
* :js:class:`~wvc.HoopsHomeButtonElement`
* :js:class:`~wvc.HoopsIFCRelationshipElement`
* :js:class:`~wvc.HoopsLayersButtonElement`
* :js:class:`~wvc.HoopsLayerTreeElement`
* :js:class:`~wvc.HoopsModelTreeButtonElement`
* :js:class:`~wvc.HoopsModelTreeElement`
* :js:class:`~wvc.HoopsPropertiesButtonElement`
* :js:class:`~wvc.HoopsRedlinesButtonElement`
* :js:class:`~wvc.HoopsServiceRegistryElement`
* :js:class:`~wvc.HoopsSettingsButtonElement`
* :js:class:`~wvc.HoopsSettingsControlsSectionElement`
* :js:class:`~wvc.HoopsSettingsGraphicsSectionElement`
* :js:class:`~wvc.HoopsSettingsInterfaceSectionElement`
* :js:class:`~wvc.HoopsSettingsPanelElement`
* :js:class:`~wvc.HoopsSnapshotButtonElement`
* :js:class:`~wvc.HoopsToolsButtonElement`
* :js:class:`~wvc.HoopsToolsGroupElement`
* :js:class:`~wvc.HoopsToolsGroupMarkupElement`
* :js:class:`~wvc.HoopsToolsMeasurementGroupElement`
* :js:class:`~wvc.HoopsToolsPanelElement`
* :js:class:`~wvc.HoopsToolsRedlineGroupElement`
* :js:class:`~wvc.HoopsToolsSelectGroupElement`
* :js:class:`~wvc.HoopsTypesButtonElement`
* :js:class:`~wvc.HoopsTypesTreeElement`
* :js:class:`~wvc.HoopsViewsButtonElement`
* :js:class:`~wvc.HoopsViewTreeElement`
* :js:class:`~wvc.IFCRelationshipsService`
* :js:class:`~wvc.InfoButton`
* :js:class:`~wvc.PmiService`
* :js:class:`~wvc.RedlineService`
* :js:class:`~wvc.RenderOptionsService`
* :js:class:`~wvc.SelectionService`
* :js:class:`~wvc.SheetService`
* :js:class:`~wvc.SpaceMouseService`
* :js:class:`~wvc.ViewService`
* :js:class:`~wvc.WalkOperatorService`
* :js:class:`~wvc.WebViewerComponent`
* :js:class:`~wvc.WebViewerContextManager`

.. rst-class:: kind-group kind-interfaces

.. rubric:: Interfaces
   :class: kind-group-title


.. rst-class:: api-xref-list


* :js:class:`~wvc.BimElementInfo`
* :js:class:`~wvc.ICameraService`
* :js:class:`~wvc.ICuttingService`
* :js:class:`~wvc.IExplodeService`
* :js:class:`~wvc.IIFCRelationshipsService`
* :js:class:`~wvc.IPmiService`
* :js:class:`~wvc.IRedlineService`
* :js:class:`~wvc.IRenderOptionsService`
* :js:class:`~wvc.IResettableConfigurationService`
* :js:class:`~wvc.ISelectionService`
* :js:class:`~wvc.IService`
* :js:class:`~wvc.ISheetService`
* :js:class:`~wvc.ISpaceMouseService`
* :js:class:`~wvc.IViewService`
* :js:class:`~wvc.IWalkOperatorService`
* :js:class:`~wvc.MarkupData`
* :js:class:`~wvc.RedlineItemData`
* :js:class:`~wvc.RedlineViewData`
* :js:class:`~wvc.RelatedElementInfo`
* :js:class:`~wvc.RelationshipData`
* :js:class:`~wvc.VerticalGradient`
* :js:class:`~wvc.WebViewerState`

.. rst-class:: kind-group kind-type-aliases

.. rubric:: Type Aliases
   :class: kind-group-title


.. rst-class:: api-xref-list


* :js:data:`~wvc.CadConfigurationListClickEvent`
* :js:data:`~wvc.CameraServiceConfiguration`
* :js:data:`~wvc.CuttingPlane`
* :js:data:`~wvc.CuttingServiceConfiguration`
* :js:data:`~wvc.LayerClicked`
* :js:data:`~wvc.LayerNodeVisibilityClickEvent`
* :js:data:`~wvc.LayerTreeElementClickEvent`
* :js:data:`~wvc.LayerTreeNodeClicked`
* :js:data:`~wvc.LayerTreeNodeSelectedEvent`
* :js:data:`~wvc.LayerTreeVisibilityChanged`
* :js:data:`~wvc.LayerVisibilityClickEvent`
* :js:data:`~wvc.ModelTreeNodeClickEvent`
* :js:data:`~wvc.ModelTreeNodeVisibilityClickEvent`
* :js:data:`~wvc.OrbitFallbackMode`
* :js:data:`~wvc.PmiServiceConfiguration`
* :js:data:`~wvc.PointSizeUnit`
* :js:data:`~wvc.Projection`
* :js:data:`~wvc.RedlineItemType`
* :js:data:`~wvc.RenderOptionsServiceConfiguration`
* :js:data:`~wvc.Section`
* :js:data:`~wvc.SelectedFace`
* :js:data:`~wvc.SelectionServiceConfiguration`
* :js:data:`~wvc.ServiceName`
* :js:data:`~wvc.ServiceRegistry`
* :js:data:`~wvc.SheetServiceConfiguration`
* :js:data:`~wvc.TypesTreeNodeClickEvent`
* :js:data:`~wvc.TypesTreeNodeVisibilityChangeEvent`
* :js:data:`~wvc.TypesTreeTypeNodeClickEvent`
* :js:data:`~wvc.ViewServiceConfiguration`
* :js:data:`~wvc.ViewTreeNodeClickEvent`
* :js:data:`~wvc.WalkModeName`
* :js:data:`~wvc.WalkOperatorServiceConfiguration`
* :js:data:`~wvc.WalkSpeedUnitName`

.. rst-class:: kind-group kind-variables

.. rubric:: Variables
   :class: kind-group-title


.. js:data:: wvc.ActiveToolOperatorPosition

      .. rst-class:: clio-flags
      
         :clio-const:`const`
      
      .. rst-class:: sig-pretty-signature
      
         | ActiveToolOperatorPosition: *1*
      



.. js:data:: wvc.CameraOperatorPosition

      .. rst-class:: clio-flags
      
         :clio-const:`const`
      
      .. rst-class:: sig-pretty-signature
      
         | CameraOperatorPosition: *0*
      



.. js:data:: wvc.contextManagerContext

      .. rst-class:: clio-flags
      
         :clio-const:`const`
      
      .. rst-class:: sig-pretty-signature
      
         | contextManagerContext: Unhandled type Opaque
      



.. js:data:: wvc.OrbitFallbackModeValues

      .. rst-class:: clio-flags
      
         :clio-const:`const`
      
      .. rst-class:: sig-pretty-signature
      
         | OrbitFallbackModeValues: readonly [*"Camera Target"*\ , *"Model Center"*\ , *"Orbit Target"*\ ]
      



.. js:data:: wvc.PointSizeUnitValues

      .. rst-class:: clio-flags
      
         :clio-const:`const`
      
      .. rst-class:: sig-pretty-signature
      
         | PointSizeUnitValues: readonly [*"Screen Pixels"*\ , *"CSS Pixels"*\ , *"World"*\ , *"Proportion Of Screen Width"*\ , *"Proportion Of Screen Height"*\ , *"Proportion Of Bounding Diagonal"*\ ]
      



.. js:data:: wvc.ProjectionValues

      .. rst-class:: clio-flags
      
         :clio-const:`const`
      
      .. rst-class:: sig-pretty-signature
      
         | ProjectionValues: readonly [*"Perspective"*\ , *"Orthographic"*\ ]
      



.. js:data:: wvc.redlineModes

      .. rst-class:: clio-flags
      
         :clio-const:`const`
      
      .. rst-class:: sig-pretty-signature
      
         | redlineModes: readonly [*RedlineCircle*\ , *RedlineText*\ , *RedlineRectangle*\ , *RedlinePolyline*\ ]
      



.. js:data:: wvc.ServiceNames

      .. rst-class:: clio-flags
      
         :clio-const:`const`
      
      .. rst-class:: sig-pretty-signature
      
         | ServiceNames: readonly [*"CameraService"*\ , *"CuttingService"*\ , *"ExplodeService"*\ , *"SheetService"*\ , *"IFCRelationshipsService"*\ , *"MeasurementService"*\ , *"NoteTextService"*\ , *"PmiService"*\ , *"RedlineService"*\ , *"RenderOptionsService"*\ , *"SelectionService"*\ , *"SpaceMouseService"*\ , *"ViewService"*\ , *"FloorplanService"*\ , *"WalkOperatorService"*\ ]
      
      The following types are used to define the structure of services in the web viewer components. They include a list of service names, a type for service names, and an interface for services. The ``ServiceRegistry`` type maps service names to their respective service instances. This allows for easy registration, retrieval, and management of services within the application.
      
      The ``ServiceNames`` constant defines the available service names, which can be extended as needed. The ``ServiceName`` type is a union of the defined service names and allows for string literals, providing flexibility in service naming while ensuring type safety.
      
      This concept is named loose completion in typescript, you can learn more about it here: https://www.totaltypescript.com/tips/create-autocomplete-helper-which-allows-for-arbitrary-values
      



.. js:data:: wvc.serviceRegistry

      .. rst-class:: clio-flags
      
         :clio-const:`const`
      
      .. rst-class:: sig-pretty-signature
      
         | serviceRegistry: :js:data:`ServiceRegistry <wvc.ServiceRegistry>`
      
      Service Registry for managing services in the application. This registry allows for registering, unregistering, and retrieving services by their names. It also provides utility functions to check for service existence and clear all services.
      



.. js:data:: wvc.WalkModeNames

      .. rst-class:: clio-flags
      
         :clio-const:`const`
      
      .. rst-class:: sig-pretty-signature
      
         | WalkModeNames: readonly [*"Mouse"*\ , *"Keyboard"*\ ]
      



.. js:data:: wvc.WalkSpeedUnitNames

      .. rst-class:: clio-flags
      
         :clio-const:`const`
      
      .. rst-class:: sig-pretty-signature
      
         | WalkSpeedUnitNames: *string*\ []
      



.. js:data:: wvc.webViewerContext

      .. rst-class:: clio-flags
      
         :clio-const:`const`
      
      .. rst-class:: sig-pretty-signature
      
         | webViewerContext: Unhandled type Opaque
      



.. js:data:: wvc.webViewerStateContext

      .. rst-class:: clio-flags
      
         :clio-const:`const`
      
      .. rst-class:: sig-pretty-signature
      
         | webViewerStateContext: Unhandled type Opaque
      



.. rst-class:: kind-group kind-functions

.. rubric:: Functions
   :class: kind-group-title


.. rst-class:: api-xref-list


* :js:func:`~wvc.calculateWalkSpeedUnitFactor`
* :js:func:`~wvc.clearServices`
* :js:func:`~wvc.formatRedlineIcon`
* :js:func:`~wvc.formatRedlineItem`
* :js:func:`~wvc.formatRedlineView`
* :js:func:`~wvc.getAllServices`
* :js:func:`~wvc.getService`
* :js:func:`~wvc.getWalkSpeedUnitFactor`
* :js:func:`~wvc.getWalkSpeedUnitName`
* :js:func:`~wvc.hasService`
* :js:func:`~wvc.isCameraServiceConfiguration`
* :js:func:`~wvc.isCuttingServiceConfiguration`
* :js:func:`~wvc.isOrbitFallbackMode`
* :js:func:`~wvc.isPmiServiceConfiguration`
* :js:func:`~wvc.isPointSizeUnit`
* :js:func:`~wvc.isProjection`
* :js:func:`~wvc.isRenderOptionsServiceConfiguration`
* :js:func:`~wvc.isResettableConfigurationService`
* :js:func:`~wvc.isSelectionServiceConfiguration`
* :js:func:`~wvc.isService`
* :js:func:`~wvc.isSheetServiceConfiguration`
* :js:func:`~wvc.isVerticalGradient`
* :js:func:`~wvc.isViewServiceConfiguration`
* :js:func:`~wvc.isWalkModeName`
* :js:func:`~wvc.isWalkOperatorServiceConfiguration`
* :js:func:`~wvc.isWalkSpeedUnitName`
* :js:func:`~wvc.registerService`
* :js:func:`~wvc.stringToWalkMode`
* :js:func:`~wvc.toServiceOrbitFallbackMode`
* :js:func:`~wvc.toServiceProjectionMode`
* :js:func:`~wvc.toWebViewerOrbitFallbackMode`
* :js:func:`~wvc.toWebViewerProjectionMode`
* :js:func:`~wvc.tryGetService`
* :js:func:`~wvc.unregisterService`
* :js:func:`~wvc.walkModeToString`

.. toctree::
   :maxdepth: 1
   :hidden:

   interfaces/BimElementInfo
   types/CadConfigurationListClickEvent
   functions/calculateWalkSpeedUnitFactor
   classes/CameraService
   types/CameraServiceConfiguration
   functions/clearServices
   types/CuttingPlane
   classes/CuttingService
   types/CuttingServiceConfiguration
   classes/ExplodeService
   functions/formatRedlineIcon
   functions/formatRedlineItem
   functions/formatRedlineView
   functions/getAllServices
   functions/getService
   functions/getWalkSpeedUnitFactor
   functions/getWalkSpeedUnitName
   functions/hasService
   classes/HoopsCadConfigurationButtonElement
   classes/HoopsCadConfigurationListElement
   classes/HoopsCameraButtonElement
   classes/HoopsCameraOperatorButtonElement
   classes/HoopsContextMenuElement
   classes/HoopsCuttingPlaneEditorElement
   classes/HoopsCuttingPlaneElement
   classes/HoopsCuttingPlanePanelElement
   classes/HoopsCuttingPlaneToolbarElement
   classes/HoopsCuttingSectionElement
   classes/HoopsCuttingSectionToolbarElement
   classes/HoopsDrawmodeButtonElement
   classes/HoopsExplodeButtonElement
   classes/HoopsHomeButtonElement
   classes/HoopsIFCRelationshipElement
   classes/HoopsLayersButtonElement
   classes/HoopsLayerTreeElement
   classes/HoopsModelTreeButtonElement
   classes/HoopsModelTreeElement
   classes/HoopsPropertiesButtonElement
   classes/HoopsRedlinesButtonElement
   classes/HoopsServiceRegistryElement
   classes/HoopsSettingsButtonElement
   classes/HoopsSettingsControlsSectionElement
   classes/HoopsSettingsGraphicsSectionElement
   classes/HoopsSettingsInterfaceSectionElement
   classes/HoopsSettingsPanelElement
   classes/HoopsSnapshotButtonElement
   classes/HoopsToolsButtonElement
   classes/HoopsToolsGroupElement
   classes/HoopsToolsGroupMarkupElement
   classes/HoopsToolsMeasurementGroupElement
   classes/HoopsToolsPanelElement
   classes/HoopsToolsRedlineGroupElement
   classes/HoopsToolsSelectGroupElement
   classes/HoopsTypesButtonElement
   classes/HoopsTypesTreeElement
   classes/HoopsViewsButtonElement
   classes/HoopsViewTreeElement
   interfaces/ICameraService
   interfaces/ICuttingService
   interfaces/IExplodeService
   classes/IFCRelationshipsService
   interfaces/IIFCRelationshipsService
   classes/InfoButton
   interfaces/IPmiService
   interfaces/IRedlineService
   interfaces/IRenderOptionsService
   interfaces/IResettableConfigurationService
   functions/isCameraServiceConfiguration
   functions/isCuttingServiceConfiguration
   interfaces/ISelectionService
   interfaces/IService
   interfaces/ISheetService
   functions/isOrbitFallbackMode
   interfaces/ISpaceMouseService
   functions/isPmiServiceConfiguration
   functions/isPointSizeUnit
   functions/isProjection
   functions/isRenderOptionsServiceConfiguration
   functions/isResettableConfigurationService
   functions/isSelectionServiceConfiguration
   functions/isService
   functions/isSheetServiceConfiguration
   functions/isVerticalGradient
   functions/isViewServiceConfiguration
   functions/isWalkModeName
   functions/isWalkOperatorServiceConfiguration
   functions/isWalkSpeedUnitName
   interfaces/IViewService
   interfaces/IWalkOperatorService
   types/LayerClicked
   types/LayerNodeVisibilityClickEvent
   types/LayerTreeElementClickEvent
   types/LayerTreeNodeClicked
   types/LayerTreeNodeSelectedEvent
   types/LayerTreeVisibilityChanged
   types/LayerVisibilityClickEvent
   interfaces/MarkupData
   types/ModelTreeNodeClickEvent
   types/ModelTreeNodeVisibilityClickEvent
   types/OrbitFallbackMode
   classes/PmiService
   types/PmiServiceConfiguration
   types/PointSizeUnit
   types/Projection
   interfaces/RedlineItemData
   types/RedlineItemType
   classes/RedlineService
   interfaces/RedlineViewData
   functions/registerService
   interfaces/RelatedElementInfo
   interfaces/RelationshipData
   classes/RenderOptionsService
   types/RenderOptionsServiceConfiguration
   types/Section
   types/SelectedFace
   classes/SelectionService
   types/SelectionServiceConfiguration
   types/ServiceName
   types/ServiceRegistry
   classes/SheetService
   types/SheetServiceConfiguration
   classes/SpaceMouseService
   functions/stringToWalkMode
   functions/toServiceOrbitFallbackMode
   functions/toServiceProjectionMode
   functions/toWebViewerOrbitFallbackMode
   functions/toWebViewerProjectionMode
   functions/tryGetService
   types/TypesTreeNodeClickEvent
   types/TypesTreeNodeVisibilityChangeEvent
   types/TypesTreeTypeNodeClickEvent
   functions/unregisterService
   interfaces/VerticalGradient
   classes/ViewService
   types/ViewServiceConfiguration
   types/ViewTreeNodeClickEvent
   types/WalkModeName
   functions/walkModeToString
   classes/WalkOperatorService
   types/WalkOperatorServiceConfiguration
   types/WalkSpeedUnitName
   classes/WebViewerComponent
   classes/WebViewerContextManager
   interfaces/WebViewerState


