vim-webgl-component
Version:
A demonstration app built on top of the vim-webgl-viewer
76 lines (75 loc) • 2.44 kB
TypeScript
/**
* @module viw-webgl-component
*/
import React from 'react';
import * as VIM from 'vim-webgl-viewer/';
import { Isolation } from '../helpers/isolation';
import { ComponentCamera } from '../helpers/camera';
import { TreeActionRef } from '../bim/bimTree';
import { ModalRef } from './modal';
export declare const VIM_CONTEXT_MENU_ID = "vim-context-menu-id";
export type ClickCallback = React.MouseEvent<HTMLDivElement, MouseEvent>;
export declare function showContextMenu(position: {
x: number;
y: number;
} | undefined): void;
/**
* Current list of context menu item ids. Used to find and replace items when customizing the context menu.
*/
export declare const contextMenuElementIds: {
showControls: string;
dividerCamera: string;
resetCamera: string;
zoomToFit: string;
dividerSelection: string;
isolateSelection: string;
selectSimilar: string;
hideObject: string;
showObject: string;
clearSelection: string;
showAll: string;
dividerMeasure: string;
deleteMeasurement: string;
dividerSection: string;
ignoreSection: string;
resetSection: string;
fitSectionToSelection: string;
};
/**
* Represents a button in the context menu. It can't be clicked triggering given action.
*/
export interface IContextMenuButton {
id: string;
label: string;
keyboard: string;
action: (e: ClickCallback) => void;
enabled: boolean;
}
/**
* Represents a divider in the context menu. It can't be clicked.
*/
export interface IContextMenuDivider {
id: string;
enabled: boolean;
}
export type ContextMenuElement = IContextMenuButton | IContextMenuDivider;
/**
* A map function that changes the context menu.
*/
export type ContextMenuCustomization = (e: ContextMenuElement[]) => ContextMenuElement[];
/**
* Memoized version of VimContextMenu.
*/
export declare const VimContextMenuMemo: React.MemoExoticComponent<typeof VimContextMenu>;
/**
* Context menu component definition according to current state.
*/
export declare function VimContextMenu(props: {
viewer: VIM.Viewer;
camera: ComponentCamera;
modal: ModalRef;
isolation: Isolation;
selection: VIM.Object3D[];
customization?: (e: ContextMenuElement[]) => ContextMenuElement[];
treeRef: React.MutableRefObject<TreeActionRef | undefined>;
}): import("react/jsx-runtime").JSX.Element;