/** * @module viw-webgl-component */ /** * Makes all fields optional recursively * https://stackoverflow.com/questions/41980195/recursive-partialt-in-typescript */ export type RecursivePartial = { [P in keyof T]?: T[P] extends (infer U)[] ? RecursivePartial[] : T[P] extends object ? RecursivePartial : T[P]; }; /** * true, false or restricted * Restricted: is false and cannot be changed by the user. */ export type UserBoolean = boolean | 'AlwaysTrue' | 'AlwaysFalse'; export declare function isTrue(value: UserBoolean | boolean): boolean; export declare function isFalse(value: UserBoolean | boolean): boolean; /** * Vim component settings, can either be set at component intialization or by user using UI. */ export type ComponentSettings = { peformance: { useFastMaterial: boolean; }; isolation: { enable: boolean; useIsolationMaterial: boolean; }; capacity: { canFollowUrl: boolean; canGoFullScreen: boolean; useOrthographicCamera: boolean; canDownload: boolean; }; ui: { logo: UserBoolean; bimTreePanel: UserBoolean; bimInfoPanel: UserBoolean; performance: UserBoolean; axesPanel: UserBoolean; orthographic: UserBoolean; resetCamera: UserBoolean; enableGhost: UserBoolean; controlBar: UserBoolean; orbit: UserBoolean; lookAround: UserBoolean; pan: UserBoolean; zoom: UserBoolean; zoomWindow: UserBoolean; zoomToFit: UserBoolean; sectioningMode: UserBoolean; measuringMode: UserBoolean; toggleIsolation: UserBoolean; projectInspector: UserBoolean; settings: UserBoolean; help: UserBoolean; maximise: UserBoolean; }; }; export type PartialComponentSettings = RecursivePartial; export declare function anyUiAxesButton(settings: ComponentSettings): UserBoolean; export declare function anyUiCursorButton(settings: ComponentSettings): boolean; export declare function anyUiToolButton(settings: ComponentSettings): boolean; export declare function anyUiSettingButton(settings: ComponentSettings): boolean; export declare const defaultSettings: ComponentSettings;