declare module INSPECTOR { interface IActionTabsComponentProps { scene?: BABYLON.Scene; noCommands?: boolean; noHeader?: boolean; noExpand?: boolean; noClose?: boolean; popupMode?: boolean; onPopup?: () => void; onClose?: () => void; globalState?: GlobalState; initialTab?: BABYLON.DebugLayerTab; } export class ActionTabsComponent extends React.Component { private _onSelectionChangeObserver; private _onTabChangedObserver; private _once; constructor(props: IActionTabsComponentProps); componentDidMount(): void; componentWillUnmount(): void; changeSelectedTab(index: number): void; renderContent(): JSX.Element | null; onClose(): void; onPopup(): void; render(): JSX.Element; } interface IMeshPickerComponentProps { globalState: GlobalState; target: any; property: string; scene: BABYLON.Scene; label: string; onPropertyChangedObservable?: BABYLON.Observable; } export class MeshPickerComponent extends React.Component { constructor(props: IMeshPickerComponentProps); render(): JSX.Element; } interface IQuaternionLineComponentProps { label: string; target: any; useEuler?: boolean; propertyName: string; onPropertyChangedObservable?: BABYLON.Observable; lockObject: INSPECTOR.SharedUIComponents.LockObject; } export class QuaternionLineComponent extends React.Component { private _localChange; constructor(props: IQuaternionLineComponentProps); _checkRoundCircle(a: number, b: number): boolean; shouldComponentUpdate(nextProps: IQuaternionLineComponentProps, nextState: { isExpanded: boolean; value: BABYLON.Quaternion; eulerValue: BABYLON.Vector3; }): boolean; switchExpandState(): void; raiseOnPropertyChanged(currentValue: BABYLON.Quaternion, previousValue: BABYLON.Quaternion): void; updateQuaternion(): void; updateStateX(value: number): void; updateStateY(value: number): void; updateStateZ(value: number): void; updateStateW(value: number): void; updateQuaternionFromEuler(): void; updateStateEulerX(value: number): void; updateStateEulerY(value: number): void; updateStateEulerZ(value: number): void; render(): JSX.Element; } interface ITextureLineComponentProps { texture: BABYLON.BaseTexture; width: number; height: number; globalState?: GlobalState; hideChannelSelect?: boolean; } export class TextureLineComponent extends React.Component { private _canvasRef; private static _TextureChannelStates; constructor(props: ITextureLineComponentProps); shouldComponentUpdate(nextProps: ITextureLineComponentProps, nextState: { channels: TextureChannelsToDisplay; face: number; }): boolean; componentDidMount(): void; componentDidUpdate(): void; updatePreview(): Promise; render(): JSX.Element; } export interface ITextureLinkLineComponentProps { label: string; texture: BABYLON.Nullable; material?: BABYLON.Material; texturedObject?: { getScene: () => BABYLON.Scene; }; onSelectionChangedObservable?: BABYLON.Observable; onDebugSelectionChangeObservable?: BABYLON.Observable; propertyName?: string; onTextureCreated?: (texture: BABYLON.BaseTexture) => void; customDebugAction?: (state: boolean) => void; onTextureRemoved?: () => void; fileFormats?: string; cubeOnly?: boolean; } export class TextureLinkLineComponent extends React.Component { private _onDebugSelectionChangeObserver; constructor(props: ITextureLinkLineComponentProps); componentDidMount(): void; componentWillUnmount(): void; debugTexture(): void; onLink(): void; updateTexture(file: File): void; removeTexture(): void; render(): JSX.Element | null; } export interface IPaneComponentProps { title: string; icon: any; scene: BABYLON.Scene; selectedEntity?: any; onSelectionChangedObservable?: BABYLON.Observable; onPropertyChangedObservable?: BABYLON.Observable; globalState: GlobalState; } export class PaneComponent extends React.Component { constructor(props: IPaneComponentProps); render(): JSX.Element | null; } /// export class DebugTabComponent extends PaneComponent { private _physicsViewersEnabled; constructor(props: IPaneComponentProps); switchPhysicsViewers(): void; render(): JSX.Element | null; } export class GradientPropertyTabComponent extends React.Component { private _gradientBlock; constructor(props: IPropertyComponentProps); forceRebuild(): void; deleteStep(step: BABYLON.GradientBlockColorStep): void; copyStep(step: BABYLON.GradientBlockColorStep): void; addNewStep(): void; checkForReOrder(): void; render(): JSX.Element; } interface IGradientStepComponentProps { globalState: GlobalState; step: BABYLON.GradientBlockColorStep; lineIndex: number; lockObject?: INSPECTOR.SharedUIComponents.LockObject; onDelete: () => void; onUpdateStep: () => void; onCheckForReOrder: () => void; onCopy?: () => void; } export class GradientStepComponent extends React.Component { constructor(props: IGradientStepComponentProps); updateColor(color: string): void; updateStep(gradient: number): void; onPointerUp(): void; render(): JSX.Element; } interface IPerformancePlayheadButtonProps { returnToPlayhead: BABYLON.Observable; } export var PerformancePlayheadButtonComponent: React.FC; interface IPerformanceViewerComponentProps { scene: BABYLON.Scene; } export enum IPerfMetadataCategory { Count = "Count", FrameSteps = "Frame Steps Duration" } export var PerformanceViewerComponent: React.FC; interface IPerformanceViewerPopupComponentProps { scene: BABYLON.Scene; layoutObservable: BABYLON.Observable; returnToLiveObservable: BABYLON.Observable; performanceCollector: BABYLON.PerformanceViewerCollector; initialGraphSize?: { width: number; height: number; }; } export var PerformanceViewerPopupComponent: React.FC; /// interface IPerformanceViewerSidebarComponentProps { collector: BABYLON.PerformanceViewerCollector; onVisibleRangeChangedObservable?: BABYLON.Observable; } export const PerformanceViewerSidebarComponent: (props: IPerformanceViewerSidebarComponentProps) => JSX.Element; export interface IPropertyComponentProps { globalState: GlobalState; block: BABYLON.NodeMaterialBlock; } interface IAnimationGroupGridComponentProps { globalState: GlobalState; animationGroup: BABYLON.AnimationGroup; scene: BABYLON.Scene; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class AnimationGroupGridComponent extends React.Component { private _onAnimationGroupPlayObserver; private _onAnimationGroupPauseObserver; private _onBeforeRenderObserver; private _timelineRef; private _animationCurveEditorContext; constructor(props: IAnimationGroupGridComponentProps); componentDidMount(): void; disconnect(animationGroup: BABYLON.AnimationGroup): void; connect(animationGroup: BABYLON.AnimationGroup): void; updateCurrentFrame(animationGroup: BABYLON.AnimationGroup): void; shouldComponentUpdate(nextProps: IAnimationGroupGridComponentProps): boolean; componentWillUnmount(): void; playOrPause(): void; onCurrentFrameChange(value: number): void; render(): JSX.Element; } interface IAnimationGridComponentProps { globalState: GlobalState; animatable: BABYLON.IAnimatable; scene: BABYLON.Scene; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class AnimationGridComponent extends React.Component { private _animations; private _ranges; private _mainAnimatable; private _onBeforeRenderObserver; private _isPlaying; private _timelineRef; private _animationCurveEditorContext; private _animationControl; constructor(props: IAnimationGridComponentProps); playOrPause(): void; componentDidMount(): void; componentWillUnmount(): void; onCurrentFrameChange(value: number): void; onChangeFromOrTo(): void; componentDidUpdate(prevProps: IAnimationGridComponentProps): void; render(): JSX.Element; } interface IAnimationCurveEditorComponentProps { globalState: GlobalState; context: Context; } interface IAnimationCurveEditorComponentState { isOpen: boolean; } export class AnimationCurveEditorComponent extends React.Component { constructor(props: IAnimationCurveEditorComponentProps); onCloseAnimationCurveEditor(window: Window | null): void; shouldComponentUpdate(newProps: IAnimationCurveEditorComponentProps, newState: IAnimationCurveEditorComponentState): boolean; private _onKeyDown; render(): JSX.Element; } interface IBottomBarComponentProps { globalState: GlobalState; context: Context; } interface IBottomBarComponentState { clipLength: string; } export class BottomBarComponent extends React.Component { private _onAnimationsLoadedObserver; private _onActiveAnimationChangedObserver; private _onClipLengthIncreasedObserver; private _onClipLengthDecreasedObserver; constructor(props: IBottomBarComponentProps); private _changeClipLength; componentWillUnmount(): void; render(): JSX.Element; } interface IMediaPlayerComponentProps { globalState: GlobalState; context: Context; } interface IMediaPlayerComponentState { } export class MediaPlayerComponent extends React.Component { private _isMounted; constructor(props: IMediaPlayerComponentProps); componentDidMount(): void; componentWillUnmount(): void; private _onFirstKey; private _onPrevKey; private _onRewind; private _onForward; private _onPrevFrame; private _onNextFrame; private _onNextKey; private _onEndKey; private _onStop; render(): JSX.Element; } interface IRangeSelectorComponentProps { globalState: GlobalState; context: Context; } interface IRangeSelectorComponentState { } export class RangeSelectorComponent extends React.Component { private _rangeHost; private _rangeScrollbarHost; private _viewWidth; private _pointerIsDown; private _minFrame; private _maxFrame; private _leftHandleIsActive; private _bothHandleIsActive; private _currentOffset; private _currentFrom; private _currentTo; constructor(props: IRangeSelectorComponentProps); private _computeSizes; private _onPointerDown; private _onPointerMove; private _updateLimits; private _onPointerUp; render(): JSX.Element; } export interface IActiveAnimationChangedOptions { evaluateKeys?: boolean; frame?: boolean; range?: boolean; } export class Context { title: string; animations: BABYLON.Nullable; scene: BABYLON.Scene; target: BABYLON.Nullable; rootAnimationGroup: BABYLON.Nullable; activeAnimations: BABYLON.Animation[]; activeChannels: { [key: number]: string; }; activeKeyPoints: BABYLON.Nullable; mainKeyPoint: BABYLON.Nullable; snippetId: string; useTargetAnimations: boolean; activeFrame: number; fromKey: number; toKey: number; useExistingPlayRange: boolean; forwardAnimation: boolean; isPlaying: boolean; clipLength: number; referenceMinFrame: number; referenceMaxFrame: number; focusedInput: boolean; onActiveAnimationChanged: BABYLON.Observable; onActiveKeyPointChanged: BABYLON.Observable; onHostWindowResized: BABYLON.Observable; onSelectAllKeys: BABYLON.Observable; onActiveKeyFrameChanged: BABYLON.Observable; onFrameSet: BABYLON.Observable; onFrameManuallyEntered: BABYLON.Observable; onMainKeyPointSet: BABYLON.Observable; onMainKeyPointMoved: BABYLON.Observable; onValueSet: BABYLON.Observable; onValueManuallyEntered: BABYLON.Observable; onFrameRequired: BABYLON.Observable; onCreateOrUpdateKeyPointRequired: BABYLON.Observable; onFlattenTangentRequired: BABYLON.Observable; onLinearTangentRequired: BABYLON.Observable; onBreakTangentRequired: BABYLON.Observable; onUnifyTangentRequired: BABYLON.Observable; onStepTangentRequired: BABYLON.Observable; onDeleteAnimation: BABYLON.Observable; onGraphMoved: BABYLON.Observable; onGraphScaled: BABYLON.Observable; onRangeUpdated: BABYLON.Observable; onMoveToFrameRequired: BABYLON.Observable; onAnimationStateChanged: BABYLON.Observable; onDeleteKeyActiveKeyPoints: BABYLON.Observable; onSelectionRectangleMoved: BABYLON.Observable; onAnimationsLoaded: BABYLON.Observable; onEditAnimationRequired: BABYLON.Observable; onEditAnimationUIClosed: BABYLON.Observable; onClipLengthIncreased: BABYLON.Observable; onClipLengthDecreased: BABYLON.Observable; onInterpolationModeSet: BABYLON.Observable<{ keyId: number; value: BABYLON.AnimationKeyInterpolation; }>; onSelectToActivated: BABYLON.Observable<{ from: number; to: number; }>; onRangeFrameBarResized: BABYLON.Observable; onPlayheadMoved: BABYLON.Observable; lockLastFrameValue: boolean; lockLastFrameFrame: boolean; onActiveKeyDataChanged: BABYLON.Observable; prepare(): void; play(forward: boolean): void; stop(): void; moveToFrame(frame: number): void; refreshTarget(): void; clearSelection(): void; enableChannel(animation: BABYLON.Animation, color: string): void; disableChannel(animation: BABYLON.Animation): void; isChannelEnabled(animation: BABYLON.Animation, color: string): boolean; getActiveChannel(animation: BABYLON.Animation): string; resetAllActiveChannels(): void; getAnimationSortIndex(animation: BABYLON.Animation): number; getPrevKey(): BABYLON.Nullable; getNextKey(): BABYLON.Nullable; /** * If any current active animation has a key at the received frameNumber, * return the index of the animation in the active animation array, and * the index of the frame on the animation. * @param frameNumber */ getKeyAtAnyFrameIndex(frameNumber: number): { animationIndex: number; keyIndex: number; } | null; hasActiveQuaternionAnimationKeyPoints(): boolean; } interface IActionButtonComponentProps { globalState: GlobalState; context: Context; icon: string; id?: string; className?: string; isActive?: boolean; onClick: () => void; tooltip?: string; } interface IActionButtonComponentState { } export class ActionButtonComponent extends React.Component { constructor(props: IActionButtonComponentProps); render(): JSX.Element; } interface IControlButtonComponentProps { globalState: GlobalState; context: Context; icon: string; hoverIcon: string; id?: string; className?: string; onClick: () => void; tooltip?: string; } interface IControlButtonComponentState { } export class ControlButtonComponent extends React.Component { constructor(props: IControlButtonComponentProps); render(): JSX.Element; } interface IPushButtonComponentProps { globalState: GlobalState; context: Context; icon: string; id?: string; className?: string; isPushed?: boolean; onClick: (state: boolean) => void; tooltip?: string; } interface IPushButtonComponentState { isPushed: boolean; } export class PushButtonComponent extends React.Component { constructor(props: IPushButtonComponentProps); render(): JSX.Element; } interface ITextInputComponentProps { globalState: GlobalState; context: Context; id?: string; className?: string; tooltip?: string; value: string; isNumber?: boolean; complement?: string; onValueAsNumberChanged?: (value: number, isFocused: boolean) => void; disabled?: boolean; } interface ITextInputComponentState { value: string; isFocused: boolean; } export class TextInputComponent extends React.Component { private _lastKnownGoodValue; constructor(props: ITextInputComponentProps); private _onChange; private _onBlur; private _onFocus; shouldComponentUpdate(newProps: ITextInputComponentProps, newState: ITextInputComponentState): boolean; private _onKeyPress; render(): JSX.Element; } interface ICanvasComponentProps { globalState: GlobalState; context: Context; } interface ICanvasComponentState { } export class CanvasComponent extends React.Component { private _onActiveAnimationChangedObserver; constructor(props: ICanvasComponentProps); componentWillUnmount(): void; render(): JSX.Element; } export interface KeyEntry { frame: number; value: number; inTangent?: number; outTangent?: number; lockedTangent: boolean; interpolation?: BABYLON.AnimationKeyInterpolation; } export class Curve { static readonly SampleRate = 50; keys: KeyEntry[]; animation: BABYLON.Animation; color: string; onDataUpdatedObservable: BABYLON.Observable; property?: string; tangentBuilder?: () => any; setDefaultInTangent?: (keyId: number) => any; setDefaultOutTangent?: (keyId: number) => any; static readonly TangentLength = 50; constructor(color: string, animation: BABYLON.Animation, property?: string, tangentBuilder?: () => any, setDefaultInTangent?: (keyId: number) => any, setDefaultOutTangent?: (keyId: number) => any); getPathData(convertX: (x: number) => number, convertY: (y: number) => number): string; updateLockedTangentMode(keyIndex: number, enabled: boolean): void; updateInterpolationMode(keyIndex: number, interpolationMode: BABYLON.AnimationKeyInterpolation): void; getInControlPoint(keyIndex: number): number | undefined; getOutControlPoint(keyIndex: number): number | undefined; hasDefinedOutTangent(keyIndex: number): boolean; evaluateOutTangent(keyIndex: number): number; hasDefinedInTangent(keyIndex: number): boolean; evaluateInTangent(keyIndex: number): number; storeDefaultInTangent(keyIndex: number): void; storeDefaultOutTangent(keyIndex: number): void; updateInTangentFromControlPoint(keyId: number, slope: number): void; updateOutTangentFromControlPoint(keyId: number, slope: number): void; updateKeyFrame(keyId: number, frame: number): void; updateKeyValue(keyId: number, value: number): void; } interface ICurveComponentProps { curve: Curve; convertX: (x: number) => number; convertY: (x: number) => number; context: Context; } interface ICurveComponentState { isSelected: boolean; } export class CurveComponent extends React.Component { private _onDataUpdatedObserver; private _onActiveAnimationChangedObserver; private _onInterpolationModeSetObserver; constructor(props: ICurveComponentProps); componentWillUnmount(): void; componentDidUpdate(): boolean; render(): JSX.Element | null; } interface IFrameBarComponentProps { globalState: GlobalState; context: Context; } interface IFrameBarComponentState { } export class FrameBarComponent extends React.Component { private readonly _graphAbsoluteWidth; private _svgHost; private _viewWidth; private _viewScale; private _offsetX; private _onActiveAnimationChangedObserver; constructor(props: IFrameBarComponentProps); componentWillUnmount(): void; private _computeSizes; private _buildFrames; render(): JSX.Element; } interface IGraphComponentProps { globalState: GlobalState; context: Context; } interface IGraphComponentState { } export class GraphComponent extends React.Component { private readonly _minScale; private readonly _maxScale; private readonly _graphAbsoluteWidth; private readonly _graphAbsoluteHeight; private _viewWidth; private _viewCurveWidth; private _viewHeight; private _viewScale; private _offsetX; private _offsetY; private _inSelectionMode; private _graphOffsetX; private _minValue; private _maxValue; private _minFrame; private _maxFrame; private _svgHost; private _svgHost2; private _selectionRectangle; private _curves; private _pointerIsDown; private _sourcePointerX; private _sourcePointerY; private _selectionMade; private _selectionStartX; private _selectionStartY; private _onActiveAnimationChangedObserver; constructor(props: IGraphComponentProps); componentWillUnmount(): void; private _computeSizes; private _setDefaultInTangent; private _setDefaultOutTangent; private _evaluateKeys; private _extractValuesFromKeys; private _convertX; private _invertX; private _convertY; private _invertY; private _buildFrameIntervalAxis; private _buildYAxis; private _frameFromActiveKeys; private _dropKeyFrames; private _onPointerDown; private _onPointerMove; private _onPointerUp; private _onWheel; render(): JSX.Element; } interface IKeyPointComponentProps { x: number; y: number; getPreviousX: () => BABYLON.Nullable; getNextX: () => BABYLON.Nullable; invertX: (x: number) => number; invertY: (y: number) => number; convertX: (x: number) => number; convertY: (y: number) => number; nextX?: number; scale: number; keyId: number; curve: Curve; context: Context; channel: string; onFrameValueChanged: (value: number) => void; onKeyValueChanged: (value: number) => void; } interface IKeyPointComponentState { selectedState: SelectionState; tangentSelectedIndex: number; x: number; y: number; } export enum SelectionState { None = 0, Selected = 1, Siblings = 2 } export class KeyPointComponent extends React.Component { private _onActiveKeyPointChangedObserver; private _onActiveKeyFrameChangedObserver; private _onFrameManuallyEnteredObserver; private _onValueManuallyEnteredObserver; private _onMainKeyPointSetObserver; private _onMainKeyPointMovedObserver; private _onSelectionRectangleMovedObserver; private _onFlattenTangentRequiredObserver; private _onLinearTangentRequiredObserver; private _onBreakTangentRequiredObserver; private _onUnifyTangentRequiredObserver; private _onStepTangentRequiredObserver; private _onSelectAllKeysObserver; private _pointerIsDown; private _sourcePointerX; private _sourcePointerY; private _offsetXToMain; private _offsetYToMain; private _svgHost; private _keyPointSVG; private _controlMode; private _storedLengthIn; private _storedLengthOut; private _inVec; private _outVec; private _lockX; private _lockY; private _accumulatedX; private _accumulatedY; constructor(props: IKeyPointComponentProps); componentWillUnmount(): void; shouldComponentUpdate(newProps: IKeyPointComponentProps, newState: IKeyPointComponentState): boolean; private _breakTangent; private _unifyTangent; private _flattenTangent; private _linearTangent; private _stepTangent; private _select; private _onPointerDown; private _extractSlope; private _processTangentMove; private _onPointerMove; private _onPointerUp; render(): JSX.Element | null; } interface IPlayHeadComponentProps { globalState: GlobalState; context: Context; } interface IPlayHeadComponentState { } export class PlayHeadComponent extends React.Component { private readonly _graphAbsoluteWidth; private _playHead; private _playHeadCircle; private _onBeforeRenderObserver; private _onActiveAnimationChangedObserver; private _onRangeFrameBarResizedObserver; private _onMoveToFrameRequiredObserver; private _onGraphMovedObserver; private _onGraphScaledObserver; private _viewScale; private _offsetX; private _offsetRange; private _viewWidth; private readonly _rangeWidthToPlayheadWidth; private _pointerIsDown; constructor(props: IPlayHeadComponentProps); private _moveHead; private _frameToPixel; private _pixelToFrame; componentWillUnmount(): void; private _getPixelValues; private _onPointerDown; private _onPointerMove; private _onPointerUp; render(): JSX.Element | null; } interface IRangeFrameBarComponentProps { globalState: GlobalState; context: Context; } interface IRangeFrameBarComponentState { } export class RangeFrameBarComponent extends React.Component { private _svgHost; private _viewWidth; private _offsetX; private _isMounted; private _onActiveAnimationChangedObserver; private _onPlayheadMovedObserver; private _onFrameManuallyEnteredObserver; constructor(props: IRangeFrameBarComponentProps); componentDidMount(): void; componentWillUnmount(): void; private _computeSizes; private _dropKeyFrames; private _buildActiveFrame; private _buildFrames; render(): JSX.Element; } interface IAddAnimationComponentProps { globalState: GlobalState; context: Context; } interface IAddAnimationComponentState { customPropertyMode: boolean; } export class AddAnimationComponent extends React.Component { private _root; private _displayName; private _property; private _typeElement; private _propertylement; private _loopModeElement; constructor(props: IAddAnimationComponentProps); createNew(): void; getInferredType(activeProperty?: string): any; render(): JSX.Element; } interface IAnimationEntryComponentProps { globalState: GlobalState; context: Context; animation: BABYLON.Animation; } interface IAnimationEntryComponentState { isExpanded: boolean; isSelected: boolean; } export class AnimationEntryComponent extends React.Component { private _onActiveAnimationChangedObserver; private _onActiveKeyPointChangedObserver; private _onSelectToActivatedObserver; private _unmount; constructor(props: IAnimationEntryComponentProps); private _onGear; private _onDelete; componentWillUnmount(): void; private _activate; private _expandOrCollapse; render(): JSX.Element; } interface IAnimationListComponentProps { globalState: GlobalState; context: Context; } interface IAnimationListComponentState { isVisible: boolean; } export class AnimationListComponent extends React.Component { private _onEditAnimationRequiredObserver; private _onEditAnimationUIClosedObserver; private _onDeleteAnimationObserver; constructor(props: IAnimationListComponentProps); componentWillUnmount(): void; render(): JSX.Element | null; } interface IAnimationSubEntryComponentProps { globalState: GlobalState; context: Context; animation: BABYLON.Animation; color: string; subName: string; } interface IAnimationSubEntryComponentState { isSelected: boolean; } export class AnimationSubEntryComponent extends React.Component { private _onActiveAnimationChangedObserver; private _onActiveKeyPointChangedObserver; constructor(props: IAnimationSubEntryComponentProps); componentWillUnmount(): void; private _activate; render(): JSX.Element; } interface IEditAnimationComponentProps { globalState: GlobalState; context: Context; } interface IEditAnimationComponentState { isVisible: boolean; animation: BABYLON.Nullable; } export class EditAnimationComponent extends React.Component { private _root; private _displayName; private _property; private _loopModeElement; private _onEditAnimationRequiredObserver; constructor(props: IEditAnimationComponentProps); componentWillUnmount(): void; close(): void; validate(): void; render(): JSX.Element | null; } interface ILoadAnimationComponentProps { globalState: GlobalState; context: Context; } interface ILoadAnimationComponentState { } export class LoadAnimationComponent extends React.Component { private _root; private _textInput; constructor(props: ILoadAnimationComponentProps); loadFromFile(evt: React.ChangeEvent): void; loadFromSnippetServer(): void; render(): JSX.Element; } interface ISaveAnimationComponentProps { globalState: GlobalState; context: Context; } interface ISaveAnimationComponentState { } export class SaveAnimationComponent extends React.Component { private _selectedAnimations; private _root; constructor(props: ISaveAnimationComponentProps); private _getJson; saveToSnippetServer(): void; saveToFile(): void; render(): JSX.Element; } interface ISideBarComponentProps { globalState: GlobalState; context: Context; } interface ISideBarComponentState { mode: Mode; } enum Mode { Edit = 0, Add = 1, Load = 2, Save = 3 } export class SideBarComponent extends React.Component { constructor(props: ISideBarComponentProps); private _onAddAnimation; private _onLoadAnimation; private _onSaveAnimation; private _onEditAnimation; render(): JSX.Element; } interface ITopBarComponentProps { globalState: GlobalState; context: Context; } interface ITopBarComponentState { keyFrameValue: string; keyValue: string; frameControlEnabled: boolean; valueControlEnabled: boolean; } export class TopBarComponent extends React.Component { private _onFrameSetObserver; private _onValueSetObserver; private _onActiveAnimationChangedObserver; private _onActiveKeyPointChanged; constructor(props: ITopBarComponentProps); componentWillUnmount(): void; render(): JSX.Element; } interface ITargetedAnimationGridComponentProps { globalState: GlobalState; targetedAnimation: BABYLON.TargetedAnimation; scene: BABYLON.Scene; lockObject: INSPECTOR.SharedUIComponents.LockObject; onSelectionChangedObservable?: BABYLON.Observable; onPropertyChangedObservable?: BABYLON.Observable; } export class TargetedAnimationGridComponent extends React.Component { private _animationGroup; private _animationCurveEditorContext; constructor(props: ITargetedAnimationGridComponentProps); findAnimationGroup: () => void; playOrPause: () => void; deleteAnimation: () => void; updateContextFromProps: () => void; componentDidMount(): void; componentDidUpdate(prevProps: Readonly, prevState: Readonly<{}>, snapshot?: any): void; render(): JSX.Element; } interface IArcRotateCameraPropertyGridComponentProps { globalState: GlobalState; camera: BABYLON.ArcRotateCamera; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class ArcRotateCameraPropertyGridComponent extends React.Component { constructor(props: IArcRotateCameraPropertyGridComponentProps); render(): JSX.Element; } interface ICommonCameraPropertyGridComponentProps { globalState: GlobalState; camera: BABYLON.Camera; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class CommonCameraPropertyGridComponent extends React.Component { constructor(props: ICommonCameraPropertyGridComponentProps); render(): JSX.Element; } interface IFollowCameraPropertyGridComponentProps { globalState: GlobalState; camera: BABYLON.FollowCamera; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class FollowCameraPropertyGridComponent extends React.Component { constructor(props: IFollowCameraPropertyGridComponentProps); render(): JSX.Element; } interface IFreeCameraPropertyGridComponentProps { globalState: GlobalState; camera: BABYLON.FreeCamera; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class FreeCameraPropertyGridComponent extends React.Component { constructor(props: IFreeCameraPropertyGridComponentProps); render(): JSX.Element; } interface ICommonPropertyGridComponentProps { globalState: GlobalState; host: { metadata: any; }; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class CommonPropertyGridComponent extends React.Component { constructor(props: ICommonPropertyGridComponentProps); renderLevel(jsonObject: any): JSX.Element[]; render(): JSX.Element | null; } interface ICustomPropertyGridComponentProps { globalState: GlobalState; target: any; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class CustomPropertyGridComponent extends React.Component { constructor(props: ICustomPropertyGridComponentProps); renderInspectable(inspectable: BABYLON.IInspectable): JSX.Element | null; render(): JSX.Element | null; } interface IEmptyPropertyGridComponentProps { globalState: GlobalState; item: { inspectableCustomProperties: any; }; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class EmptyPropertyGridComponent extends React.Component { constructor(props: IEmptyPropertyGridComponentProps); render(): JSX.Element; } interface IFogPropertyGridComponentProps { globalState: GlobalState; scene: BABYLON.Scene; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class FogPropertyGridComponent extends React.Component { constructor(props: IFogPropertyGridComponentProps); render(): JSX.Element; } interface ILayerPropertyGridComponentProps { globalState: GlobalState; layer: BABYLON.EffectLayer; extensibilityGroups?: BABYLON.IExplorerExtensibilityGroup[]; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class LayerPropertyGridComponent extends React.Component { constructor(props: ILayerPropertyGridComponentProps); render(): JSX.Element; } interface ICommonLightPropertyGridComponentProps { globalState: GlobalState; light: BABYLON.Light; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class CommonLightPropertyGridComponent extends React.Component { constructor(props: ICommonLightPropertyGridComponentProps); render(): JSX.Element; } interface ICommonShadowLightPropertyGridComponentProps { globalState: GlobalState; light: BABYLON.IShadowLight; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class CommonShadowLightPropertyGridComponent extends React.Component { private _internals; constructor(props: ICommonShadowLightPropertyGridComponentProps); createShadowGenerator(): void; disposeShadowGenerator(): void; render(): JSX.Element; } interface IDirectionalLightPropertyGridComponentProps { globalState: GlobalState; light: BABYLON.DirectionalLight; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class DirectionalLightPropertyGridComponent extends React.Component { constructor(props: IDirectionalLightPropertyGridComponentProps); displayFrustum(): void; render(): JSX.Element; } interface IHemisphericLightPropertyGridComponentProps { globalState: GlobalState; light: BABYLON.HemisphericLight; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class HemisphericLightPropertyGridComponent extends React.Component { constructor(props: IHemisphericLightPropertyGridComponentProps); render(): JSX.Element; } interface IPointLightPropertyGridComponentProps { globalState: GlobalState; light: BABYLON.PointLight; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class PointLightPropertyGridComponent extends React.Component { constructor(props: IPointLightPropertyGridComponentProps); render(): JSX.Element; } interface ISpotLightPropertyGridComponentProps { globalState: GlobalState; light: BABYLON.SpotLight; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class SpotLightPropertyGridComponent extends React.Component { constructor(props: ISpotLightPropertyGridComponentProps); render(): JSX.Element; } interface IBackgroundMaterialPropertyGridComponentProps { globalState: GlobalState; material: BABYLON.BackgroundMaterial; lockObject: INSPECTOR.SharedUIComponents.LockObject; onSelectionChangedObservable?: BABYLON.Observable; onPropertyChangedObservable?: BABYLON.Observable; } export class BackgroundMaterialPropertyGridComponent extends React.Component { private _onDebugSelectionChangeObservable; constructor(props: IBackgroundMaterialPropertyGridComponentProps); renderTextures(): JSX.Element; render(): JSX.Element; } interface ICommonMaterialPropertyGridComponentProps { globalState: GlobalState; material: BABYLON.Material; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class CommonMaterialPropertyGridComponent extends React.Component { constructor(props: ICommonMaterialPropertyGridComponentProps); render(): JSX.Element; } interface IMaterialPropertyGridComponentProps { globalState: GlobalState; material: BABYLON.Material; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class MaterialPropertyGridComponent extends React.Component { constructor(props: IMaterialPropertyGridComponentProps); render(): JSX.Element; } interface IMultiMaterialPropertyGridComponentProps { globalState: GlobalState; material: BABYLON.MultiMaterial; lockObject: INSPECTOR.SharedUIComponents.LockObject; onSelectionChangedObservable?: BABYLON.Observable; onPropertyChangedObservable?: BABYLON.Observable; } export class MultiMaterialPropertyGridComponent extends React.Component { constructor(props: IMultiMaterialPropertyGridComponentProps); onMaterialLink(mat: BABYLON.Material): void; renderChildMaterial(): JSX.Element; render(): JSX.Element; } interface INodeMaterialPropertyGridComponentProps { globalState: GlobalState; material: BABYLON.NodeMaterial; lockObject: INSPECTOR.SharedUIComponents.LockObject; onSelectionChangedObservable?: BABYLON.Observable; onPropertyChangedObservable?: BABYLON.Observable; } export class NodeMaterialPropertyGridComponent extends React.Component { private _onDebugSelectionChangeObservable; constructor(props: INodeMaterialPropertyGridComponentProps); edit(): void; renderTextures(): JSX.Element | null; renderInputBlock(block: BABYLON.InputBlock): JSX.Element | null; renderInputValues(): JSX.Element; render(): JSX.Element; } interface IPBRMaterialPropertyGridComponentProps { globalState: GlobalState; material: BABYLON.PBRMaterial; lockObject: INSPECTOR.SharedUIComponents.LockObject; onSelectionChangedObservable?: BABYLON.Observable; onPropertyChangedObservable?: BABYLON.Observable; } export class PBRMaterialPropertyGridComponent extends React.Component { private _onDebugSelectionChangeObservable; constructor(props: IPBRMaterialPropertyGridComponentProps); switchAmbientMode(state: boolean): void; renderTextures(onDebugSelectionChangeObservable: BABYLON.Observable): JSX.Element; render(): JSX.Element; } interface IPBRMetallicRoughnessMaterialPropertyGridComponentProps { globalState: GlobalState; material: BABYLON.PBRMetallicRoughnessMaterial; lockObject: INSPECTOR.SharedUIComponents.LockObject; onSelectionChangedObservable?: BABYLON.Observable; onPropertyChangedObservable?: BABYLON.Observable; } export class PBRMetallicRoughnessMaterialPropertyGridComponent extends React.Component { private _onDebugSelectionChangeObservable; constructor(props: IPBRMetallicRoughnessMaterialPropertyGridComponentProps); renderTextures(): JSX.Element; render(): JSX.Element; } interface IPBRSpecularGlossinessMaterialPropertyGridComponentProps { globalState: GlobalState; material: BABYLON.PBRSpecularGlossinessMaterial; lockObject: INSPECTOR.SharedUIComponents.LockObject; onSelectionChangedObservable?: BABYLON.Observable; onPropertyChangedObservable?: BABYLON.Observable; } export class PBRSpecularGlossinessMaterialPropertyGridComponent extends React.Component { private _onDebugSelectionChangeObservable; constructor(props: IPBRSpecularGlossinessMaterialPropertyGridComponentProps); renderTextures(): JSX.Element; render(): JSX.Element; } interface IStandardMaterialPropertyGridComponentProps { globalState: GlobalState; material: BABYLON.StandardMaterial; lockObject: INSPECTOR.SharedUIComponents.LockObject; onSelectionChangedObservable?: BABYLON.Observable; onPropertyChangedObservable?: BABYLON.Observable; } export class StandardMaterialPropertyGridComponent extends React.Component { private _onDebugSelectionChangeObservable; constructor(props: IStandardMaterialPropertyGridComponentProps); renderTextures(): JSX.Element; render(): JSX.Element; } interface ITexturePropertyGridComponentProps { texture: BABYLON.BaseTexture; lockObject: INSPECTOR.SharedUIComponents.LockObject; globalState: GlobalState; onPropertyChangedObservable?: BABYLON.Observable; } interface ITexturePropertyGridComponentState { isTextureEditorOpen: boolean; textureEditing: BABYLON.Nullable; } export class TexturePropertyGridComponent extends React.Component { private _adtInstrumentation; private _popoutWindowRef; private _textureLineRef; private _textureInspectorSize; constructor(props: ITexturePropertyGridComponentProps); componentWillUnmount(): void; updateTexture(file: File): void; openTextureEditor(): void; onOpenTextureEditor(): void; onCloseTextureEditor(callback?: { (): void; }): void; forceRefresh(): void; findTextureFormat(format: number): { label: string; normalizable: number; value: number; hideType?: undefined; compressed?: undefined; } | { label: string; normalizable: number; hideType: boolean; value: number; compressed?: undefined; } | { label: string; normalizable: number; compressed: boolean; value: number; hideType?: undefined; } | null; findTextureType(type: number): { label: string; normalizable: number; value: number; } | null; render(): JSX.Element; } interface IBottomBarProps { texture: BABYLON.BaseTexture; mipLevel: number; } export class BottomBar extends React.PureComponent { render(): JSX.Element; } export var canvasShader: { path: { vertexSource: string; fragmentSource: string; }; options: { attributes: string[]; uniforms: string[]; }; }; export interface IChannel { visible: boolean; editable: boolean; name: string; id: "R" | "G" | "B" | "A"; icon: any; } interface IChannelsBarProps { channels: IChannel[]; setChannels(channelState: IChannel[]): void; } export class ChannelsBar extends React.PureComponent { render(): JSX.Element; } export var Contrast: IToolData; var _default: IToolData[]; export var Eyedropper: IToolData; export var Floodfill: IToolData; export var Paintbrush: IToolData; export var RectangleSelect: IToolData; interface IPropertiesBarProps { texture: BABYLON.BaseTexture; size: BABYLON.ISize; saveTexture(): void; pixelData: IPixelData; face: number; setFace(face: number): void; resetTexture(): void; resizeTexture(width: number, height: number): void; uploadTexture(file: File): void; mipLevel: number; setMipLevel: (mipLevel: number) => void; } interface IPropertiesBarState { width: number; height: number; } export class PropertiesBar extends React.PureComponent { private _faces; constructor(props: IPropertiesBarProps); private _pixelData; private _getNewDimension; componentWillUpdate(nextProps: IPropertiesBarProps): void; render(): JSX.Element; } interface ITextureCanvasComponentProps { canvasUI: React.RefObject; canvas2D: React.RefObject; canvas3D: React.RefObject; texture: BABYLON.BaseTexture; } export class TextureCanvasComponent extends React.Component { render(): JSX.Element; } export interface IPixelData { x?: number; y?: number; r?: number; g?: number; b?: number; a?: number; } export class TextureCanvasManager { private _engine; private _scene; private _camera; private _cameraPos; private _scale; private _isPanning; private _mouseX; private _mouseY; private _uiCanvas; private _size; /** The canvas we paint onto using the canvas API */ private _2DCanvas; /** The canvas we apply post processes to */ private _3DCanvas; /** The canvas which handles channel filtering */ private _channelsTexture; private _3DEngine; private _3DPlane; private _3DCanvasTexture; private _3DScene; private _channels; private _face; private _mipLevel; /** The texture from the original engine that we invoked the editor on */ private _originalTexture; /** This is a hidden texture which is only responsible for holding the actual texture memory in the original engine */ private _target; private _originalTextureProperties; /** Keeps track of whether we have modified the texture */ private _didEdit; private _plane; private _planeMaterial; /** Tracks which keys are currently pressed */ private _keyMap; /** Tracks which mouse buttons are currently pressed */ private _buttonsPressed; private readonly ZOOM_MOUSE_SPEED; private readonly ZOOM_KEYBOARD_SPEED; private readonly ZOOM_IN_KEY; private readonly ZOOM_OUT_KEY; private readonly PAN_SPEED; private readonly PAN_KEY; private readonly MIN_SCALE; private readonly GRID_SCALE; private readonly MAX_SCALE; private readonly SELECT_ALL_KEY; private readonly SAVE_KEY; private readonly RESET_KEY; private readonly DESELECT_KEY; /** The number of milliseconds between texture updates */ private readonly PUSH_FREQUENCY; private _tool; private _setPixelData; private _setMipLevel; private _window; private _metadata; private _editing3D; private _onUpdate; private _setMetadata; private _imageData; private _canPush; private _shouldPush; private _paintCanvas; constructor(texture: BABYLON.BaseTexture, window: Window, canvasUI: HTMLCanvasElement, canvas2D: HTMLCanvasElement, canvas3D: HTMLCanvasElement, setPixelData: (pixelData: IPixelData) => void, metadata: IMetadata, onUpdate: () => void, setMetadata: (metadata: any) => void, setMipLevel: (level: number) => void); updateTexture(): Promise; private pushTexture; startPainting(): Promise; updatePainting(): void; stopPainting(): void; private updateDisplay; set channels(channels: IChannel[]); paintPixelsOnCanvas(pixelData: Uint8Array, canvas: HTMLCanvasElement): void; grabOriginalTexture(): Promise; getMouseCoordinates(pointerInfo: BABYLON.PointerInfo): BABYLON.Vector2; get scene(): BABYLON.Scene; get canvas2D(): HTMLCanvasElement; get size(): BABYLON.ISize; set tool(tool: BABYLON.Nullable); get tool(): BABYLON.Nullable; set face(face: number); set mipLevel(mipLevel: number); /** Returns the 3D scene used for postprocesses */ get scene3D(): BABYLON.Scene; set metadata(metadata: IMetadata); private makePlane; reset(): void; resize(newSize: BABYLON.ISize): Promise; setSize(size: BABYLON.ISize): void; upload(file: File): void; saveTexture(): void; toolInteractionEnabled(): boolean; dispose(): void; } } var _TOOL_DATA_: IToolData; declare module INSPECTOR { interface ITextureEditorComponentProps { texture: BABYLON.BaseTexture; url: string; window: React.RefObject; onUpdate: () => void; } interface ITextureEditorComponentState { tools: ITool[]; activeToolIndex: number; metadata: IMetadata; channels: IChannel[]; pixelData: IPixelData; face: number; mipLevel: number; pickerOpen: boolean; } export interface IToolParameters { /** The visible scene in the editor. Useful for adding pointer and keyboard events. */ scene: BABYLON.Scene; /** The 2D canvas which you can sample pixel data from. Tools should not paint directly on this canvas. */ canvas2D: HTMLCanvasElement; /** The 3D scene which tools can add post processes to. */ scene3D: BABYLON.Scene; /** The size of the texture. */ size: BABYLON.ISize; /** Pushes the editor texture back to the original scene. This should be called every time a tool makes any modification to a texture. */ updateTexture: () => void; /** The metadata object which is shared between all tools. Feel free to store any information here. Do not set this directly: instead call setMetadata. */ metadata: IMetadata; /** Call this when you want to mutate the metadata. */ setMetadata: (data: any) => void; /** Returns the texture coordinates under the cursor */ getMouseCoordinates: (pointerInfo: BABYLON.PointerInfo) => BABYLON.Vector2; /** Provides a canvas that you can use the canvas API to paint on. */ startPainting: () => Promise; /** After you have painted on your canvas, call this method to push the updates back to the texture. */ updatePainting: () => void; /** Call this when you are finished painting. */ stopPainting: () => void; /** Returns whether the tool should be allowed to interact */ interactionEnabled: () => boolean; } export interface IToolGUIProps { instance: IToolType; } /** An interface representing the definition of a tool */ export interface IToolData { /** Name to display on the toolbar */ name: string; /** A class definition for the tool including setup and cleanup methods */ type: IToolConstructable; /** An SVG icon encoded in Base64 */ icon: string; /** Whether the tool uses postprocesses */ is3D?: boolean; cursor?: string; settingsComponent?: React.ComponentType; } export interface IToolType { /** Called when the tool is selected. */ setup: () => void; /** Called when the tool is deselected. */ cleanup: () => void; /** Optional. Called when the user resets the texture or uploads a new texture. Tools may want to reset their state when this happens. */ onReset?: () => void; } /** For constructable types, TS requires that you define a separate interface which constructs your actual interface */ interface IToolConstructable { new (getParameters: () => IToolParameters): IToolType; } export interface IMetadata { color: string; alpha: number; select: { x1: number; y1: number; x2: number; y2: number; }; [key: string]: any; } export class TextureEditorComponent extends React.Component { private _textureCanvasManager; private _uiCanvas; private _2DCanvas; private _3DCanvas; private _pickerRef; private _timer; private static _PREVIEW_UPDATE_DELAY_MS; constructor(props: ITextureEditorComponentProps); componentDidMount(): void; componentDidUpdate(): void; componentWillUnmount(): void; textureDidUpdate(): void; loadToolFromURL(url: string): void; addTools(tools: IToolData[]): void; getToolParameters(): IToolParameters; changeTool(index: number): void; setMetadata(newMetadata: any): void; setPickerOpen(open: boolean): void; onPointerDown(evt: React.PointerEvent): void; saveTexture(): void; resetTexture(): void; resizeTexture(width: number, height: number): void; uploadTexture(file: File): void; render(): JSX.Element; } export interface ITool extends IToolData { instance: IToolType; } interface IToolBarProps { tools: ITool[]; addTool(url: string): void; changeTool(toolIndex: number): void; activeToolIndex: number; metadata: IMetadata; setMetadata(data: any): void; pickerOpen: boolean; setPickerOpen(open: boolean): void; pickerRef: React.RefObject; hasAlpha: boolean; } interface IToolBarState { toolURL: string; addOpen: boolean; } export class ToolBar extends React.Component { private _lockObject; constructor(props: IToolBarProps); computeRGBAColor(): BABYLON.Color4; shouldComponentUpdate(nextProps: IToolBarProps): boolean; render(): JSX.Element; } interface IToolSettingsProps { tool: ITool | undefined; } export class ToolSettings extends React.Component { render(): JSX.Element; } interface IBonePropertyGridComponentProps { globalState: GlobalState; bone: BABYLON.Bone; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class BonePropertyGridComponent extends React.Component { constructor(props: IBonePropertyGridComponentProps); onTransformNodeLink(): void; render(): JSX.Element; } interface IMeshPropertyGridComponentProps { globalState: GlobalState; mesh: BABYLON.Mesh; lockObject: INSPECTOR.SharedUIComponents.LockObject; onSelectionChangedObservable?: BABYLON.Observable; onPropertyChangedObservable?: BABYLON.Observable; } export class MeshPropertyGridComponent extends React.Component { constructor(props: IMeshPropertyGridComponentProps); renderWireframeOver(): void; renderNormalVectors(): void; displayNormals(): void; displayVertexColors(): void; displayBoneWeights(): void; displaySkeletonMap(): void; onBoneDisplayIndexChange(value: number): void; onMaterialLink(): void; onSourceMeshLink(): void; onSkeletonLink(): void; convertPhysicsTypeToString(): string; render(): JSX.Element; } interface ISkeletonPropertyGridComponentProps { globalState: GlobalState; skeleton: BABYLON.Skeleton; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class SkeletonPropertyGridComponent extends React.Component { private _skeletonViewersEnabled; private _skeletonViewerDisplayOptions; private _skeletonViewers; constructor(props: ISkeletonPropertyGridComponentProps); switchSkeletonViewers(): void; checkSkeletonViewerState(props: ISkeletonPropertyGridComponentProps): void; changeDisplayMode(): void; changeDisplayOptions(option: string, value: number): void; shouldComponentUpdate(nextProps: ISkeletonPropertyGridComponentProps): boolean; render(): JSX.Element; } interface ITransformNodePropertyGridComponentProps { globalState: GlobalState; transformNode: BABYLON.TransformNode; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class TransformNodePropertyGridComponent extends React.Component { constructor(props: ITransformNodePropertyGridComponentProps); render(): JSX.Element; } interface IMetadataComponentProps { globalState: GlobalState; entity: any; } enum MetadataTypes { UNDEFINED = "undefined", NULL = "null", STRING = "string", OBJECT = "Object", JSON = "JSON" } /** @ignorenaming */ export class MetadataGridComponent extends React.Component { private readonly _textAreaHost; /** @ignorenaming */ constructor(props: IMetadataComponentProps); /** @ignorenaming */ componentDidMount(): void; /** @ignorenaming */ componentDidUpdate(prevProps: Readonly): void; /** on entity refresh */ refreshSelected(): void; /** @ignorenaming */ setTextAreaDisabled(disabled: boolean): void; /** textarea style */ getClassName(): string; /** * Determines the Metadata type * @param entity Picked entity * @returns MetadataTypes */ getEntityType(entity: any): MetadataTypes; /** @ignorenaming */ isString(input: any): boolean; /** @ignorenaming */ parsableJson(object: Object): boolean; /** @ignorenaming */ parsableString(string: string): JSON | null; /** @ignorenaming */ parseMetaObject(validJson: boolean, metadata: any): any; /** * Recurse through an object to check for any Functions, returns False if found at least one * @param o Any Object, String or number * @returns Boolean */ objectCanSafelyStringify(o: Object | string | number): boolean; copyToClipboard(): void; /** Safely checks if valid JSON then appends necessary props without overwriting existing */ populateGltfExtras(): void; /** @ignorenaming */ render(): JSX.Element; } interface IParentPropertyGridComponentProps { globalState: GlobalState; lockObject: INSPECTOR.SharedUIComponents.LockObject; node: BABYLON.Node; onPropertyChangedObservable?: BABYLON.Observable; } export class ParentPropertyGridComponent extends React.Component { constructor(props: IParentPropertyGridComponentProps); render(): JSX.Element; } interface IBoxEmitterGridComponentProps { globalState: GlobalState; emitter: BABYLON.BoxParticleEmitter; onPropertyChangedObservable?: BABYLON.Observable; lockObject: INSPECTOR.SharedUIComponents.LockObject; } export class BoxEmitterGridComponent extends React.Component { constructor(props: IBoxEmitterGridComponentProps); render(): JSX.Element; } interface IColorGradientStepGridComponent { globalState: GlobalState; gradient: BABYLON.ColorGradient | BABYLON.Color3Gradient; lockObject: INSPECTOR.SharedUIComponents.LockObject; lineIndex: number; isColor3: boolean; onDelete: () => void; onUpdateGradient: () => void; onCheckForReOrder: () => void; host: BABYLON.IParticleSystem; codeRecorderPropertyName: string; } export class ColorGradientStepGridComponent extends React.Component { constructor(props: IColorGradientStepGridComponent); updateColor1(color: string): void; updateColor2(color: string): void; updateGradient(gradient: number): void; onPointerUp(): void; lock(): void; unlock(): void; render(): JSX.Element; } interface IConeEmitterGridComponentProps { globalState: GlobalState; emitter: BABYLON.ConeParticleEmitter; lockObject: INSPECTOR.SharedUIComponents.LockObject; onSelectionChangedObservable?: BABYLON.Observable; onPropertyChangedObservable?: BABYLON.Observable; } export class ConeEmitterGridComponent extends React.Component { constructor(props: IConeEmitterGridComponentProps); render(): JSX.Element; } interface ICylinderEmitterGridComponentProps { globalState: GlobalState; emitter: BABYLON.CylinderParticleEmitter; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class CylinderEmitterGridComponent extends React.Component { constructor(props: ICylinderEmitterGridComponentProps); render(): JSX.Element; } interface IFactorGradientStepGridComponent { globalState: GlobalState; gradient: BABYLON.FactorGradient; lockObject: INSPECTOR.SharedUIComponents.LockObject; lineIndex: number; onDelete: () => void; onUpdateGradient: () => void; onCheckForReOrder: () => void; host: BABYLON.IParticleSystem; codeRecorderPropertyName: string; } export class FactorGradientStepGridComponent extends React.Component { constructor(props: IFactorGradientStepGridComponent); shouldComponentUpdate(nextProps: IFactorGradientStepGridComponent, nextState: { gradient: number; factor1: string; factor2?: string; }): boolean; updateFactor1(valueString: string): void; updateFactor2(valueString: string): void; updateGradient(gradient: number): void; onPointerUp(): void; lock(): void; unlock(): void; render(): JSX.Element; } interface IHemisphericEmitterGridComponentProps { globalState: GlobalState; emitter: BABYLON.HemisphericParticleEmitter; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class HemisphericEmitterGridComponent extends React.Component { constructor(props: IHemisphericEmitterGridComponentProps); render(): JSX.Element; } interface IMeshEmitterGridComponentProps { globalState: GlobalState; emitter: BABYLON.MeshParticleEmitter; scene: BABYLON.Scene; lockObject: INSPECTOR.SharedUIComponents.LockObject; onSelectionChangedObservable?: BABYLON.Observable; onPropertyChangedObservable?: BABYLON.Observable; } export class MeshEmitterGridComponent extends React.Component { constructor(props: IMeshEmitterGridComponentProps); render(): JSX.Element; } interface IParticleSystemPropertyGridComponentProps { globalState: GlobalState; system: BABYLON.IParticleSystem; lockObject: INSPECTOR.SharedUIComponents.LockObject; onSelectionChangedObservable?: BABYLON.Observable; onPropertyChangedObservable?: BABYLON.Observable; } export class ParticleSystemPropertyGridComponent extends React.Component { private _snippetUrl; constructor(props: IParticleSystemPropertyGridComponentProps); renderEmitter(): JSX.Element | null; raiseOnPropertyChanged(property: string, newValue: any, previousValue: any): void; renderControls(): JSX.Element; saveToFile(): void; loadFromFile(file: File): void; loadFromSnippet(): void; saveToSnippet(): void; render(): JSX.Element; } interface IPointEmitterGridComponentProps { globalState: GlobalState; emitter: BABYLON.PointParticleEmitter; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class PointEmitterGridComponent extends React.Component { constructor(props: IPointEmitterGridComponentProps); render(): JSX.Element; } interface ISphereEmitterGridComponentProps { globalState: GlobalState; emitter: BABYLON.SphereParticleEmitter; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class SphereEmitterGridComponent extends React.Component { constructor(props: ISphereEmitterGridComponentProps); render(): JSX.Element; } export enum GradientGridMode { Factor = 0, Color3 = 1, Color4 = 2 } interface IValueGradientGridComponent { globalState: GlobalState; label: string; gradients: BABYLON.Nullable>; lockObject: INSPECTOR.SharedUIComponents.LockObject; docLink?: string; mode: GradientGridMode; host: BABYLON.IParticleSystem; codeRecorderPropertyName: string; onCreateRequired: () => void; } export class ValueGradientGridComponent extends React.Component { constructor(props: IValueGradientGridComponent); deleteStep(step: BABYLON.IValueGradient): void; addNewStep(): void; checkForReOrder(): void; updateAndSync(): void; render(): JSX.Element; } interface ICommonPostProcessPropertyGridComponentProps { globalState: GlobalState; postProcess: BABYLON.PostProcess; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class CommonPostProcessPropertyGridComponent extends React.Component { constructor(props: ICommonPostProcessPropertyGridComponentProps); render(): JSX.Element; } interface ICommonRenderingPipelinePropertyGridComponentProps { globalState: GlobalState; renderPipeline: BABYLON.PostProcessRenderPipeline; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class CommonRenderingPipelinePropertyGridComponent extends React.Component { constructor(props: ICommonRenderingPipelinePropertyGridComponentProps); render(): JSX.Element; } interface IDefaultRenderingPipelinePropertyGridComponentProps { globalState: GlobalState; renderPipeline: BABYLON.DefaultRenderingPipeline; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class DefaultRenderingPipelinePropertyGridComponent extends React.Component { constructor(props: IDefaultRenderingPipelinePropertyGridComponentProps); render(): JSX.Element; } interface ILenstRenderingPipelinePropertyGridComponentProps { globalState: GlobalState; renderPipeline: BABYLON.LensRenderingPipeline; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class LensRenderingPipelinePropertyGridComponent extends React.Component { constructor(props: ILenstRenderingPipelinePropertyGridComponentProps); render(): JSX.Element; } interface IPostProcessPropertyGridComponentProps { globalState: GlobalState; postProcess: BABYLON.PostProcess; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class PostProcessPropertyGridComponent extends React.Component { constructor(props: IPostProcessPropertyGridComponentProps); edit(): void; render(): JSX.Element; } interface IRenderingPipelinePropertyGridComponentProps { globalState: GlobalState; renderPipeline: BABYLON.PostProcessRenderPipeline; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class RenderingPipelinePropertyGridComponent extends React.Component { constructor(props: IRenderingPipelinePropertyGridComponentProps); render(): JSX.Element; } interface ISSAO2RenderingPipelinePropertyGridComponentProps { globalState: GlobalState; renderPipeline: BABYLON.SSAO2RenderingPipeline; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class SSAO2RenderingPipelinePropertyGridComponent extends React.Component { constructor(props: ISSAO2RenderingPipelinePropertyGridComponentProps); render(): JSX.Element; } interface ISSAORenderingPipelinePropertyGridComponentProps { globalState: GlobalState; renderPipeline: BABYLON.SSAORenderingPipeline; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class SSAORenderingPipelinePropertyGridComponent extends React.Component { constructor(props: ISSAORenderingPipelinePropertyGridComponentProps); render(): JSX.Element; } interface ISSRRenderingPipelinePropertyGridComponentProps { globalState: GlobalState; renderPipeline: BABYLON.SSRRenderingPipeline; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class SSRRenderingPipelinePropertyGridComponent extends React.Component { constructor(props: ISSRRenderingPipelinePropertyGridComponentProps); render(): JSX.Element; } interface IRenderGridPropertyGridComponentProps { globalState: GlobalState; scene: BABYLON.Scene; } export class RenderGridPropertyGridComponent extends React.Component { private _gridMesh; constructor(props: IRenderGridPropertyGridComponentProps); componentDidMount(): void; addOrRemoveGrid(): void; render(): JSX.Element; } interface IScenePropertyGridComponentProps { globalState: GlobalState; scene: BABYLON.Scene; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; onSelectionChangedObservable?: BABYLON.Observable; } export class ScenePropertyGridComponent extends React.Component { private _storedEnvironmentTexture; private _renderingModeGroupObservable; constructor(props: IScenePropertyGridComponentProps); setRenderingModes(point: boolean, wireframe: boolean): void; switchIBL(): void; updateEnvironmentTexture(file: File): void; updateGravity(newValue: BABYLON.Vector3): void; updateTimeStep(newValue: number): void; normalizeScene(): void; render(): JSX.Element; } interface ISoundPropertyGridComponentProps { globalState: GlobalState; sound: BABYLON.Sound; extensibilityGroups?: BABYLON.IExplorerExtensibilityGroup[]; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class SoundPropertyGridComponent extends React.Component { constructor(props: ISoundPropertyGridComponentProps); render(): JSX.Element; } interface ISpriteManagerPropertyGridComponentProps { globalState: GlobalState; spriteManager: BABYLON.SpriteManager; lockObject: INSPECTOR.SharedUIComponents.LockObject; onSelectionChangedObservable?: BABYLON.Observable; onPropertyChangedObservable?: BABYLON.Observable; } export class SpriteManagerPropertyGridComponent extends React.Component { private _snippetUrl; constructor(props: ISpriteManagerPropertyGridComponentProps); addNewSprite(): void; disposeManager(): void; saveToFile(): void; loadFromFile(file: File): void; loadFromSnippet(): void; saveToSnippet(): void; render(): JSX.Element; } interface ISpritePropertyGridComponentProps { globalState: GlobalState; sprite: BABYLON.Sprite; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; onSelectionChangedObservable?: BABYLON.Observable; } export class SpritePropertyGridComponent extends React.Component { private _canvasRef; private _imageData; private _cachedCellIndex; constructor(props: ISpritePropertyGridComponentProps); onManagerLink(): void; switchPlayStopState(): void; disposeSprite(): void; componentDidMount(): void; componentDidUpdate(): void; shouldComponentUpdate(nextProps: ISpritePropertyGridComponentProps): boolean; updatePreview(): void; render(): JSX.Element; } interface IVariantsPropertyGridComponentProps { globalState: GlobalState; host: any; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class VariantsPropertyGridComponent extends React.Component { constructor(props: IVariantsPropertyGridComponentProps); private _getVariantsExtension; render(): JSX.Element | null; } /// export class PropertyGridTabComponent extends PaneComponent { private _timerIntervalId; private _lockObject; constructor(props: IPaneComponentProps); timerRefresh(): void; componentDidMount(): void; componentWillUnmount(): void; renderContent(): JSX.Element | null; render(): JSX.Element; } /// export class SettingsTabComponent extends PaneComponent { constructor(props: IPaneComponentProps); render(): JSX.Element; } /// export class StatisticsTabComponent extends PaneComponent { private _sceneInstrumentation; private _engineInstrumentation; private _timerIntervalId; constructor(props: IPaneComponentProps); componentWillUnmount(): void; render(): JSX.Element | null; } interface IGLTFComponentProps { scene: BABYLON.Scene; globalState: GlobalState; lockObject: INSPECTOR.SharedUIComponents.LockObject; } export class GLTFComponent extends React.Component { private _onValidationResultsUpdatedObserver; openValidationDetails(): void; prepareText(singularForm: string, count: number): string; componentDidMount(): void; componentWillUnmount(): void; renderValidation(): JSX.Element | null; render(): JSX.Element; } /// export class ToolsTabComponent extends PaneComponent { private _lockObject; private _videoRecorder; private _screenShotSize; private _gifOptions; private _useWidthHeight; private _isExportingGltf; private _gltfExportOptions; private _gifWorkerBlob; private _gifRecorder; private _previousRenderingScale; private _crunchingGIF; private _reflectorHostname; private _reflectorPort; private _reflector; private _envOptions; constructor(props: IPaneComponentProps); componentDidMount(): void; componentWillUnmount(): void; captureScreenshot(): void; captureRender(): void; recordVideo(): void; recordGIFInternal(): void; recordGIF(): void; importAnimations(event: any): void; exportGLTF(): void; exportBabylon(): void; createEnvTexture(): void; exportReplay(): void; startRecording(): void; applyDelta(file: File): void; connectReflector(): void; render(): JSX.Element | null; } interface ITabsComponentProps { children: any[]; selectedIndex: number; onSelectedIndexChange: (value: number) => void; } export class TabsComponent extends React.Component { constructor(props: ITabsComponentProps); onSelect(index: number): void; renderLabel(child: PaneComponent, index: number): JSX.Element; render(): JSX.Element; } interface IEmbedHostComponentProps { scene: BABYLON.Scene; globalState: GlobalState; popupMode: boolean; noClose?: boolean; noExpand?: boolean; onClose: () => void; onPopup: () => void; extensibilityGroups?: BABYLON.IExplorerExtensibilityGroup[]; additionalNodes?: BABYLON.IExplorerAdditionalNode[]; initialTab?: BABYLON.DebugLayerTab; } export class EmbedHostComponent extends React.Component { private _once; private _splitRef; private _topPartRef; private _bottomPartRef; constructor(props: IEmbedHostComponentProps); componentDidMount(): void; renderContent(): JSX.Element; render(): JSX.Element; } export class GlobalState { onSelectionChangedObservable: BABYLON.Observable; onPropertyChangedObservable: BABYLON.Observable; onInspectorClosedObservable: BABYLON.Observable; onTabChangedObservable: BABYLON.Observable; onSelectionRenamedObservable: BABYLON.Observable; onPluginActivatedObserver: BABYLON.Nullable>; onNewSceneObservable: BABYLON.Observable; sceneImportDefaults: { [key: string]: any; }; validationResults: BABYLON.Nullable; onValidationResultsUpdatedObservable: BABYLON.Observable>; onExtensionLoadedObservable: BABYLON.Observable; glTFLoaderExtensionDefaults: { [name: string]: { [key: string]: any; }; }; glTFLoaderDefaults: { [key: string]: any; }; glTFLoaderExtensions: { [key: string]: BABYLON.IGLTFLoaderExtension; }; blockMutationUpdates: boolean; selectedLineContainerTitles: Array; selectedLineContainerTitlesNoFocus: Array; recorder: ReplayRecorder; private _onlyUseEulers; get onlyUseEulers(): boolean; set onlyUseEulers(value: boolean); private _ignoreBackfacesForPicking; get ignoreBackfacesForPicking(): boolean; set ignoreBackfacesForPicking(value: boolean); init(propertyChangedObservable: BABYLON.Observable): void; prepareGLTFPlugin(loader: BABYLON.GLTFFileLoader): void; resetGLTFValidationResults(): void; lightGizmos: Array; enableLightGizmo(light: BABYLON.Light, enable?: boolean): void; cameraGizmos: Array; enableCameraGizmo(camera: BABYLON.Camera, enable?: boolean): void; onSceneExplorerClosedObservable: BABYLON.Observable; onActionTabsClosedObservable: BABYLON.Observable; } interface ICanvasGraphComponentProps { id: string; scene: BABYLON.Scene; collector: BABYLON.PerformanceViewerCollector; layoutObservable?: BABYLON.Observable; returnToPlayheadObservable?: BABYLON.Observable; onVisibleRangeChangedObservable?: BABYLON.Observable; initialGraphSize?: { width: number; height: number; }; } export var CanvasGraphComponent: React.FC; export class CanvasGraphService { private _ctx; private _width; private _height; private _sizeOfWindow; private _ticks; private _panPosition; private _position; private _datasetBounds; private _globalTimeMinMax; private _hoverPosition; private _drawableArea; private _axisHeight; private _tooltipItems; private _tooltipTextCache; private _tickerTextCache; private _tickerItems; private _preprocessedTooltipInfo; private _numberOfTickers; private _onVisibleRangeChangedObservable?; private readonly _addonFontLineHeight; private readonly _defaultLineHeight; readonly datasets: BABYLON.IPerfDatasets; metadata: Map; /** * Creates an instance of CanvasGraphService. * * @param canvas a pointer to the canvas dom element we would like to write to. * @param settings settings for our service. */ constructor(canvas: HTMLCanvasElement, settings: ICanvasGraphServiceSettings); /** * This method lets the service know it should get ready to update what it is displaying. */ update: (...args: any[]) => void; /** * Update the canvas graph service with the new height and width of the canvas. * @param size The new size of the canvas. */ resize(size: IPerfLayoutSize): void; /** * Force resets the position in the data, effectively returning to the most current data. */ resetDataPosition(): void; private _prevPointById; private _prevValueById; /** * This method draws the data and sets up the appropriate scales. */ private _draw; private _drawTickers; /** * Returns the index of the closest time for the datasets. * Uses a modified binary search to get value. * * @param targetTime the time we want to get close to. * @returns index of the item with the closest time to the targetTime */ private _getClosestPointToTimestamp; /** * This is a convenience method to get the number of collected slices. * @returns the total number of collected slices. */ private _getNumberOfSlices; /** * Draws the time axis, adjusts the drawable area for the graph. * * @param timeMinMax the minimum and maximum for the time axis. * @param drawableArea the current allocated drawable area. */ private _drawTimeAxis; /** * Given a timestamp (should be the maximum timestamp in view), this function returns the maximum unit the timestamp contains. * This information can be used for formatting purposes. * @param timestamp the maximum timestamp to find the maximum timestamp unit for. * @returns The maximum unit the timestamp has. */ private _getTimestampUnit; /** * Given a timestamp and the interval unit, this function will parse the timestamp to the appropriate format. * @param timestamp The timestamp to parse * @param intervalUnit The maximum unit of the maximum timestamp in an interval. * @returns a string representing the parsed timestamp. */ private _parseTimestamp; /** * Generates a list of ticks given the min and max of the axis, and the space available in the axis. * * @param minMax the minimum and maximum values of the axis * @param spaceAvailable the total amount of space we have allocated to our axis */ private _generateTicks; /** * Nice number algorithm based on psueudo code defined in "Graphics Gems" by Andrew S. Glassner. * This will find a "nice" number approximately equal to num. * * @param num The number we want to get close to. * @param shouldRound if true we will round the number, otherwise we will get the ceiling. * @returns a "nice" number approximately equal to num. */ private _niceNumber; /** * Gets the min and max as a single object from an array of numbers. * @param bounds * @param offset * @returns the min and max of the array. */ private _getMinMax; /** * Converts a single number to a pixel coordinate in a single axis by normalizing the data to a [0, 1] scale using the minimum and maximum values. * * @param num the number we want to get the pixel coordinate for * @param minMax the min and max of the dataset in the axis we want the pixel coordinate for. * @param startingPixel the starting pixel coordinate (this means it takes account for any offset). * @param spaceAvailable the total space available in this axis. * @param shouldFlipValue if we should use a [1, 0] scale instead of a [0, 1] scale. * @returns the pixel coordinate of the value in a single axis. */ private _getPixelForNumber; /** * Add in any necessary event listeners. * * @param canvas The canvas we want to attach listeners to. */ private _attachEventListeners; /** * We remove all event listeners we added. * * @param canvas The canvas we want to remove listeners from. */ private _removeEventListeners; /** * Handles what to do when we are hovering over the canvas and not panning. * * @param event A reference to the event to be handled. */ private _handleDataHover; /** * Debounced processing and drawing of tooltip. */ private _debouncedTooltip; /** * Handles what to do when we stop hovering over the canvas. */ private _handleStopHover; /** * Given a line defined by P1: (x1, y1) and P2: (x2, y2) get the distance of P0 (x0, y0) from the line. * https://en.wikipedia.org/wiki/Distance_from_a_point_to_a_line#Line_defined_by_two_points * @param x1 x position of point P1 * @param y1 y position of point P1 * @param x2 x position of point P2 * @param y2 y position of point P2 * @param x0 x position of point P0 * @param y0 y position of point P0 * @returns distance of P0 from the line defined by P1 and P2 */ private _getDistanceFromLine; /** * This method does preprocessing calculations for the tooltip. * @param pos the position of our mouse. * @param drawableArea the remaining drawable area. */ private _preprocessTooltip; /** * Draws the tooltip given the area it is allowed to draw in and the current pixel position. * * @param pos the position of the mouse cursor in pixels (x, y). * @param drawableArea the available area we can draw in. */ private _drawTooltip; /** * Gets the number from a pixel position given the minimum and maximum value in range, and the starting pixel and the ending pixel. * * @param pixel current pixel position we want to get the number for. * @param minMax the minimum and maximum number in the range. * @param startingPixel position of the starting pixel in range. * @param endingPixel position of ending pixel in range. * @param shouldFlip if we should use a [1, 0] scale instead of a [0, 1] scale. * @returns number corresponding to pixel position */ private _getNumberFromPixel; /** * The handler for when we want to zoom in and out of the graph. * * @param event a mouse wheel event. */ private _handleZoom; /** * Initializes the panning object and attaches appropriate listener. * * @param event the mouse event containing positional information. */ private _handlePanStart; /** * While panning this event will keep track of the delta and update the "positions". * * @param event The mouse event that contains positional information. */ private _handlePan; /** * Clears the panning object and removes the appropriate listener. */ private _handlePanStop; /** * Method which returns true if the data should become realtime, false otherwise. * * @returns if the data should become realtime or not. */ private _shouldBecomeRealtime; /** * Will generate a playhead with a futurebox that takes up (1-scalefactor)*100% of the canvas. * * @param drawableArea The remaining drawable area. * @param scaleFactor The Percentage between 0.0 and 1.0 of the canvas the data gets drawn on. */ private _drawPlayheadRegion; /** * Method to do cleanup when the object is done being used. * */ destroy(): void; /** * This method clears the canvas */ clear(): void; } /** * Defines a structure to hold max, min and a optional current. */ export interface IPerfMinMax { min: number; max: number; current?: number; } /** * Defines structure of the object which contains information related to panning. */ export interface IPerfMousePanningPosition { xPos: number; delta: number; } /** * Defines structure of the object which contains information regarding the bounds of each dataset we want to consider. */ export interface IPerfIndexBounds { start: number; end: number; } export interface IPerfLayoutSize { width: number; height: number; } /** * Defines the structure of the meta object for the tooltip that appears when hovering over a performance graph! */ export interface IPerfTooltip { text: string; color: string; } /** * Defines the structure of a cache object used to store the result of measureText(). */ export interface IPerfTextMeasureCache { text: string; width: number; } /** * Defines a structure defining the available space in a drawable area. */ export interface IGraphDrawableArea { top: number; left: number; bottom: number; right: number; } /** * Defines the structure representing necessary ticker information. */ export interface IPerfTicker extends IPerfMinMax { id: string; text: string; } export interface IVisibleRangeChangedObservableProps { valueMap: Map; } /** * Defines what settings our canvas graphing service accepts */ export interface ICanvasGraphServiceSettings { datasets: BABYLON.IPerfDatasets; onVisibleRangeChangedObservable?: BABYLON.Observable; } /** * Defines the structure representing the preprocessable tooltip information. */ export interface ITooltipPreprocessedInformation { xForActualTimestamp: number; numberOfTooltipItems: number; longestText: string; focusedId: string; } export interface IPerfTooltipHoverPosition { xPos: number; yPos: number; } /** * Defines the supported timestamp units. */ export enum TimestampUnit { Milliseconds = 0, Seconds = 1, Minutes = 2, Hours = 3 } export interface IHeaderComponentProps { title: string; handleBack?: boolean; noExpand?: boolean; noClose?: boolean; noCommands?: boolean; onPopup: () => void; onClose: () => void; onSelectionChangedObservable?: BABYLON.Observable; } export class HeaderComponent extends React.Component { private _backStack; private _onSelectionChangeObserver; constructor(props: IHeaderComponentProps); componentDidMount(): void; componentWillUnmount(): void; goBack(): void; renderLogo(): JSX.Element | null; render(): JSX.Element; } export interface IPopupComponentProps { id: string; title: string; size: { width: number; height: number; }; onOpen?: (window: Window) => void; onClose: (window: Window) => void; onResize?: (window: Window) => void; onKeyUp?: (evt: KeyboardEvent) => void; onKeyDown?: (evt: KeyboardEvent) => void; } export class PopupComponent extends React.Component { private _container; private _window; private _host; constructor(props: IPopupComponentProps); componentDidMount(): void; onBeforeUnloadListener: () => void; openPopup(): void; componentWillUnmount(): void; getWindow(): Window | null; render(): React.ReactPortal | null; } export class PropertyChangedEvent { object: any; property: string; value: any; initialValue: any; allowNullValue?: boolean; } export class ReplayRecorder { private _sceneRecorder; private _isRecording; get isRecording(): boolean; cancel(): void; trackScene(scene: BABYLON.Scene): void; applyDelta(json: any, scene: BABYLON.Scene): void; export(): void; } interface IAnimationGroupItemComponentProps { animationGroup: BABYLON.AnimationGroup; extensibilityGroups?: BABYLON.IExplorerExtensibilityGroup[]; onClick: () => void; } export class AnimationGroupItemComponent extends React.Component { constructor(props: IAnimationGroupItemComponentProps); render(): JSX.Element; } interface IBoneTreeItemComponentProps { bone: BABYLON.Bone; extensibilityGroups?: BABYLON.IExplorerExtensibilityGroup[]; onClick: () => void; } export class BoneTreeItemComponent extends React.Component { constructor(props: IBoneTreeItemComponentProps); render(): JSX.Element; } interface ICameraTreeItemComponentProps { camera: BABYLON.Camera; extensibilityGroups?: BABYLON.IExplorerExtensibilityGroup[]; onClick: () => void; globalState: GlobalState; } export class CameraTreeItemComponent extends React.Component { private _onBeforeRenderObserver; constructor(props: ICameraTreeItemComponentProps); setActive(): void; componentDidMount(): void; componentWillUnmount(): void; toggleGizmo(): void; render(): JSX.Element; } interface IEffectLayerItemComponenttProps { layer: BABYLON.EffectLayer; extensibilityGroups?: BABYLON.IExplorerExtensibilityGroup[]; onClick: () => void; } export class EffectLayerItemComponent extends React.Component { constructor(props: IEffectLayerItemComponenttProps); render(): JSX.Element; } interface IAdvancedDynamicTextureTreeItemComponentProps { texture: BABYLON.GUI.AdvancedDynamicTexture; extensibilityGroups?: BABYLON.IExplorerExtensibilityGroup[]; onSelectionChangedObservable?: BABYLON.Observable; onClick: () => void; } export class AdvancedDynamicTextureTreeItemComponent extends React.Component { private _onControlPickedObserver; constructor(props: IAdvancedDynamicTextureTreeItemComponentProps); componentWillUnmount(): void; onPickingMode(): void; render(): JSX.Element; } interface IControlTreeItemComponentProps { control: BABYLON.GUI.Control; extensibilityGroups?: BABYLON.IExplorerExtensibilityGroup[]; onClick: () => void; } export class ControlTreeItemComponent extends React.Component { constructor(props: IControlTreeItemComponentProps); highlight(): void; switchVisibility(): void; render(): JSX.Element; } /** * Used to pass in the gui-editor package. * @param guiEditorPackage */ export function InjectGUIEditor(guiEditorPackage: any): void; /** * Change the URL that the GUI editor loads from * @param guiEditorURL */ export function SetGUIEditorURL(guiEditorURL: string): void; /** * Opens an ADT in the GUI editor * if you are in an ES6 environment, you must first call InjectGUIEditor to provide the gui-editor package * If you are in a UMD environment, it will load the package from a URL * @param adt * @param embed defines whether editor is being opened from the Playground */ export function EditAdvancedDynamicTexture(adt: BABYLON.GUI.AdvancedDynamicTexture, embed?: boolean): Promise; interface ILightTreeItemComponentProps { light: BABYLON.Light; extensibilityGroups?: BABYLON.IExplorerExtensibilityGroup[]; onClick: () => void; globalState: GlobalState; } export class LightTreeItemComponent extends React.Component { constructor(props: ILightTreeItemComponentProps); switchIsEnabled(): void; toggleGizmo(): void; render(): JSX.Element; } interface IMaterialTreeItemComponentProps { material: BABYLON.Material | BABYLON.NodeMaterial; extensibilityGroups?: BABYLON.IExplorerExtensibilityGroup[]; onClick: () => void; } export class MaterialTreeItemComponent extends React.Component { constructor(props: IMaterialTreeItemComponentProps); render(): JSX.Element; } interface IMeshTreeItemComponentProps { mesh: BABYLON.AbstractMesh; extensibilityGroups?: BABYLON.IExplorerExtensibilityGroup[]; onClick: () => void; globalState: GlobalState; } export class MeshTreeItemComponent extends React.Component { constructor(props: IMeshTreeItemComponentProps); showBoundingBox(): void; switchVisibility(): void; render(): JSX.Element; } interface IParticleSystemTreeItemComponentProps { system: BABYLON.IParticleSystem; extensibilityGroups?: BABYLON.IExplorerExtensibilityGroup[]; onClick: () => void; } export class ParticleSystemTreeItemComponent extends React.Component { constructor(props: IParticleSystemTreeItemComponentProps); render(): JSX.Element; } interface IPostProcessItemComponentProps { postProcess: BABYLON.PostProcess; extensibilityGroups?: BABYLON.IExplorerExtensibilityGroup[]; onClick: () => void; } export class PostProcessItemComponent extends React.Component { constructor(props: IPostProcessItemComponentProps); render(): JSX.Element; } interface IRenderPipelineItemComponenttProps { renderPipeline: BABYLON.PostProcessRenderPipeline; extensibilityGroups?: BABYLON.IExplorerExtensibilityGroup[]; onClick: () => void; } export class RenderingPipelineItemComponent extends React.Component { constructor(props: IRenderPipelineItemComponenttProps); render(): JSX.Element; } interface ISceneTreeItemComponentProps { scene: BABYLON.Scene; gizmoCamera?: BABYLON.Camera; onRefresh: () => void; selectedEntity?: any; extensibilityGroups?: BABYLON.IExplorerExtensibilityGroup[]; onSelectionChangedObservable?: BABYLON.Observable; globalState: GlobalState; } export class SceneTreeItemComponent extends React.Component { private _gizmoLayerOnPointerObserver; private _onPointerObserver; private _onSelectionChangeObserver; private _selectedEntity; private _posDragEnd; private _scaleDragEnd; private _rotateDragEnd; constructor(props: ISceneTreeItemComponentProps); shouldComponentUpdate(nextProps: ISceneTreeItemComponentProps, nextState: { isSelected: boolean; isInPickingMode: boolean; }): boolean; updateGizmoAutoPicking(isInPickingMode: boolean): void; componentDidMount(): void; componentWillUnmount(): void; onSelect(): void; onPickingMode(): void; setGizmoMode(mode: number): void; render(): JSX.Element; } interface ISkeletonTreeItemComponentProps { skeleton: BABYLON.Skeleton; extensibilityGroups?: BABYLON.IExplorerExtensibilityGroup[]; onClick: () => void; } export class SkeletonTreeItemComponent extends React.Component { constructor(props: ISkeletonTreeItemComponentProps); render(): JSX.Element; } interface ISoundTreeItemComponentProps { sound: BABYLON.Sound; extensibilityGroups?: BABYLON.IExplorerExtensibilityGroup[]; onClick: () => void; } export class SoundTreeItemComponent extends React.Component { constructor(props: ISoundTreeItemComponentProps); render(): JSX.Element; } interface ISpriteManagerTreeItemComponentProps { spriteManager: BABYLON.SpriteManager; extensibilityGroups?: BABYLON.IExplorerExtensibilityGroup[]; onClick: () => void; } export class SpriteManagerTreeItemComponent extends React.Component { constructor(props: ISpriteManagerTreeItemComponentProps); render(): JSX.Element; } interface ISpriteTreeItemComponentProps { sprite: BABYLON.Sprite; extensibilityGroups?: BABYLON.IExplorerExtensibilityGroup[]; onClick: () => void; } export class SpriteTreeItemComponent extends React.Component { constructor(props: ISpriteTreeItemComponentProps); render(): JSX.Element; } interface ITargetedAnimationItemComponentProps { targetedAnimation: BABYLON.TargetedAnimation; extensibilityGroups?: BABYLON.IExplorerExtensibilityGroup[]; onClick: () => void; } export class TargetedAnimationItemComponent extends React.Component { constructor(props: ITargetedAnimationItemComponentProps); render(): JSX.Element; } interface ITextureTreeItemComponentProps { texture: BABYLON.Texture; extensibilityGroups?: BABYLON.IExplorerExtensibilityGroup[]; onClick: () => void; } export class TextureTreeItemComponent extends React.Component { constructor(props: ITextureTreeItemComponentProps); render(): JSX.Element; } interface ITransformNodeItemComponentProps { transformNode: BABYLON.TransformNode; extensibilityGroups?: BABYLON.IExplorerExtensibilityGroup[]; onClick: () => void; } export class TransformNodeItemComponent extends React.Component { constructor(props: ITransformNodeItemComponentProps); render(): JSX.Element; } interface IExtensionsComponentProps { target: any; extensibilityGroups?: BABYLON.IExplorerExtensibilityGroup[]; } export class ExtensionsComponent extends React.Component { private _popup; private _extensionRef; constructor(props: IExtensionsComponentProps); showPopup(): void; componentDidMount(): void; componentDidUpdate(): void; render(): JSX.Element | null; } interface ISceneExplorerFilterComponentProps { onFilter: (filter: string) => void; } export class SceneExplorerFilterComponent extends React.Component { constructor(props: ISceneExplorerFilterComponentProps); render(): JSX.Element; } interface ISceneExplorerComponentProps { scene: BABYLON.Scene; contextMenu?: BABYLON.IInspectorOptions["contextMenu"]; contextMenuOverride?: BABYLON.IInspectorOptions["contextMenuOverride"]; gizmoCamera?: BABYLON.Camera; noCommands?: boolean; noHeader?: boolean; noExpand?: boolean; noClose?: boolean; extensibilityGroups?: BABYLON.IExplorerExtensibilityGroup[]; additionalNodes?: BABYLON.IExplorerAdditionalNode[]; globalState: GlobalState; popupMode?: boolean; onPopup?: () => void; onClose?: () => void; } export class SceneExplorerComponent extends React.Component; selectedEntity: any; scene: BABYLON.Scene; }> { private _onSelectionChangeObserver; private _onSelectionRenamedObserver; private _onNewSceneAddedObserver; private _onNewSceneObserver; private _sceneExplorerRef; private _mutationTimeout; private _once; private _hooked; private _sceneMutationFunc; constructor(props: ISceneExplorerComponentProps); processMutation(): void; componentDidMount(): void; componentWillUnmount(): void; filterContent(filter: string): void; findSiblings(parent: any, items: any[], target: any, goNext: boolean, data: { previousOne?: any; found?: boolean; }): boolean; processKeys(keyEvent: React.KeyboardEvent): void; private _getPipelineContextMenus; private _getNodeContextMenus; private _getMaterialsContextMenus; private _getSpriteManagersContextMenus; private _getParticleSystemsContextMenus; renderContent(): JSX.Element | null; onClose(): void; onPopup(): void; render(): JSX.Element; } export interface ITreeItemComponentProps { items?: BABYLON.Nullable; label: string; offset: number; filter: BABYLON.Nullable; forceSubitems?: boolean; globalState: GlobalState; entity?: any; selectedEntity: any; extensibilityGroups?: BABYLON.IExplorerExtensibilityGroup[]; contextMenuItems?: BABYLON.IInspectorContextMenuItem[]; } export class TreeItemComponent extends React.Component { static _ContextMenuUniqueIdGenerator: number; constructor(props: ITreeItemComponentProps); switchExpandedState(): void; shouldComponentUpdate(nextProps: ITreeItemComponentProps, nextState: { isExpanded: boolean; }): boolean; expandAll(expand: boolean): void; renderContextMenu(): JSX.Element | null; render(): JSX.Element; } interface ITreeItemLabelComponentProps { label: string; onClick?: () => void; icon: any; color: string; } export class TreeItemLabelComponent extends React.Component { constructor(props: ITreeItemLabelComponentProps); onClick(): void; render(): JSX.Element; } export interface ITreeItemSelectableComponentProps { entity: any; selectedEntity?: any; mustExpand?: boolean; offset: number; globalState: GlobalState; extensibilityGroups?: BABYLON.IExplorerExtensibilityGroup[]; filter: BABYLON.Nullable; } export class TreeItemSelectableComponent extends React.Component { private _wasSelected; constructor(props: ITreeItemSelectableComponentProps); switchExpandedState(): void; shouldComponentUpdate(nextProps: ITreeItemSelectableComponentProps, nextState: { isExpanded: boolean; isSelected: boolean; }): boolean; scrollIntoView(): void; componentDidMount(): void; componentDidUpdate(): void; onSelect(): void; renderChildren(): JSX.Element[] | null; render(): JSX.Element | null; } interface ITreeItemSpecializedComponentProps { label: string; entity?: any; extensibilityGroups?: BABYLON.IExplorerExtensibilityGroup[]; globalState: GlobalState; onClick?: () => void; } export class TreeItemSpecializedComponent extends React.Component { constructor(props: ITreeItemSpecializedComponentProps); onClick(): void; render(): JSX.Element; } export interface IPersistentPopupConfiguration { props: IPopupComponentProps; children: React.ReactNode; closeWhenSceneExplorerCloses?: boolean; closeWhenActionTabsCloses?: boolean; } export class Inspector { private static _SceneExplorerHost; private static _ActionTabsHost; private static _EmbedHost; private static _NewCanvasContainer; private static _PersistentPopupHost; private static _SceneExplorerWindow; private static _ActionTabsWindow; private static _EmbedHostWindow; private static _Scene; private static _OpenedPane; private static _OnBeforeRenderObserver; private static _OnSceneExplorerClosedObserver; private static _OnActionTabsClosedObserver; static OnSelectionChangeObservable: BABYLON.Observable; static OnPropertyChangedObservable: BABYLON.Observable; private static _GlobalState; static MarkLineContainerTitleForHighlighting(title: string): void; static MarkMultipleLineContainerTitlesForHighlighting(titles: string[]): void; private static _CopyStyles; private static _CreateSceneExplorer; private static _CreateActionTabs; private static _CreateEmbedHost; static _CreatePopup(title: string, windowVariableName: string, width?: number, height?: number, lateBinding?: boolean): HTMLDivElement | null; static get IsVisible(): boolean; static EarlyAttachToLoader(): void; static Show(scene: BABYLON.Scene, userOptions: Partial): void; static _SetNewScene(scene: BABYLON.Scene): void; static _CreateCanvasContainer(parentControl: HTMLElement): void; private static _DestroyCanvasContainer; private static _Cleanup; private static _RemoveElementFromDOM; static Hide(): void; static _CreatePersistentPopup(config: IPersistentPopupConfiguration, hostElement: HTMLElement): void; static _ClosePersistentPopup(): void; } /** @internal */ export var lodPixelShader: { name: string; shader: string; }; /** @internal */ export var lodCubePixelShader: { name: string; shader: string; }; export interface TextureChannelsToDisplay { R: boolean; G: boolean; B: boolean; A: boolean; } export class TextureHelper { private static _ProcessAsync; static GetTextureDataAsync(texture: BABYLON.BaseTexture, width: number, height: number, face: number, channels: TextureChannelsToDisplay, globalState?: GlobalState, lod?: number): Promise; } export class Tools { static LookForItem(item: any, selectedEntity: any): boolean; private static _RecursiveRemoveHiddenMeshesAndHoistChildren; static GetNameString(obj: any): any; static SortAndFilter(parent: any, items: any[]): any[]; } } declare module INSPECTOR.SharedUIComponents { export interface IColorComponentEntryProps { value: number; label: string; max?: number; min?: number; onChange: (value: number) => void; disabled?: boolean; lockObject: INSPECTOR.SharedUIComponents.LockObject; } export class ColorComponentEntry extends React.Component { constructor(props: IColorComponentEntryProps); updateValue(valueString: string): void; lock(): void; unlock(): void; render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { /** * Interface used to specify creation options for color picker */ export interface IColorPickerProps { color: BABYLON.Color3 | BABYLON.Color4; linearhint?: boolean; debugMode?: boolean; onColorChanged?: (color: BABYLON.Color3 | BABYLON.Color4) => void; lockObject: INSPECTOR.SharedUIComponents.LockObject; } /** * Interface used to specify creation options for color picker */ export interface IColorPickerState { color: BABYLON.Color3; alpha: number; } /** * Class used to create a color picker */ export class ColorPicker extends React.Component { private _saturationRef; private _hueRef; private _isSaturationPointerDown; private _isHuePointerDown; constructor(props: IColorPickerProps); shouldComponentUpdate(nextProps: IColorPickerProps, nextState: IColorPickerState): boolean; onSaturationPointerDown(evt: React.PointerEvent): void; onSaturationPointerUp(evt: React.PointerEvent): void; onSaturationPointerMove(evt: React.PointerEvent): void; onHuePointerDown(evt: React.PointerEvent): void; onHuePointerUp(evt: React.PointerEvent): void; onHuePointerMove(evt: React.PointerEvent): void; private _evaluateSaturation; private _evaluateHue; componentDidUpdate(): void; raiseOnColorChanged(): void; render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export interface IHexColorProps { value: string; expectedLength: number; onChange: (value: string) => void; lockObject: INSPECTOR.SharedUIComponents.LockObject; } export class HexColor extends React.Component { constructor(props: IHexColorProps); shouldComponentUpdate(nextProps: IHexColorProps, nextState: { hex: string; }): boolean; lock(): void; unlock(): void; updateHexValue(valueString: string): void; render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export interface ICommandBarComponentProps { onSaveButtonClicked?: () => void; onSaveToSnippetButtonClicked?: () => void; onLoadFromSnippetButtonClicked?: () => void; onHelpButtonClicked?: () => void; onGiveFeedbackButtonClicked?: () => void; onSelectButtonClicked?: () => void; onPanButtonClicked?: () => void; onZoomButtonClicked?: () => void; onFitButtonClicked?: () => void; onArtboardColorChanged?: (newColor: string) => void; artboardColor?: string; artboardColorPickerColor?: string; } export var CommandBarComponent: React.FC; } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export interface ICommandButtonComponentProps { tooltip: string; shortcut?: string; icon: string; iconLabel?: string; isActive: boolean; onClick: () => void; disabled?: boolean; } export var CommandButtonComponent: React.FC; } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { interface ICommandDropdownComponentProps { icon?: string; tooltip: string; defaultValue?: string; items: { label: string; icon?: string; fileButton?: boolean; onClick?: () => void; onCheck?: (value: boolean) => void; storeKey?: string; isActive?: boolean; defaultValue?: boolean | string; subItems?: string[]; }[]; toRight?: boolean; } export class CommandDropdownComponent extends React.Component { constructor(props: ICommandDropdownComponentProps); render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { /// export type ButtonProps = { disabled?: boolean; active?: boolean; onClick?: () => void; color: "light" | "dark"; size: "default" | "small" | "wide" | "smaller"; title?: string; backgroundColor?: string; }; export var Button: React.FC; } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export function ClassNames(names: any, styleObject: any): string; export function JoinClassNames(styleObject: any, ...names: string[]): string; } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export interface IColorComponentEntryProps { value: number; label: string; max?: number; min?: number; onChange: (value: number) => void; disabled?: boolean; lockObject: INSPECTOR.SharedUIComponents.LockObject; } export class ColorComponentEntry extends React.Component { constructor(props: IColorComponentEntryProps); updateValue(valueString: string): void; lock(): void; unlock(): void; render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { /** * Interface used to specify creation options for color picker */ export interface IColorPickerProps { color: BABYLON.Color3 | BABYLON.Color4; linearhint?: boolean; debugMode?: boolean; onColorChanged?: (color: BABYLON.Color3 | BABYLON.Color4) => void; lockObject: INSPECTOR.SharedUIComponents.LockObject; backgroundColor?: string; } /** * Interface used to specify creation options for color picker */ export interface IColorPickerState { color: BABYLON.Color3; alpha: number; } /** * Class used to create a color picker */ export class ColorPicker extends React.Component { private _saturationRef; private _hueRef; private _isSaturationPointerDown; private _isHuePointerDown; constructor(props: IColorPickerProps); shouldComponentUpdate(nextProps: IColorPickerProps, nextState: IColorPickerState): boolean; onSaturationPointerDown(evt: React.PointerEvent): void; onSaturationPointerUp(evt: React.PointerEvent): void; onSaturationPointerMove(evt: React.PointerEvent): void; onHuePointerDown(evt: React.PointerEvent): void; onHuePointerUp(evt: React.PointerEvent): void; onHuePointerMove(evt: React.PointerEvent): void; private _evaluateSaturation; private _evaluateHue; componentDidUpdate(): void; raiseOnColorChanged(): void; render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export interface IHexColorProps { value: string; expectedLength: number; onChange: (value: string) => void; lockObject: INSPECTOR.SharedUIComponents.LockObject; } export class HexColor extends React.Component { constructor(props: IHexColorProps); shouldComponentUpdate(nextProps: IHexColorProps, nextState: { hex: string; }): boolean; lock(): void; unlock(): void; updateHexValue(valueString: string): void; render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { /// export type IconProps = { color?: "dark" | "light"; icon: string; }; export var Icon: React.FC; } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export type LabelProps = { text: string; children?: React.ReactChild; color?: "dark" | "light"; }; export var Label: React.FC; } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { /** * Arguments for the DraggableIcon component. */ export interface IDraggableIconProps { /** * Icon source */ src: string; /** * Object that will be passed to the drag event */ item: INSPECTOR.SharedUIComponents.TabDrag; /** * Type of drag event */ type: INSPECTOR.SharedUIComponents.ElementTypes; } /** * An icon that can be dragged by the user */ export var DraggableIcon: React.FC; } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { /** * Arguments for the Column component. */ export interface IFlexibleColumnProps { /** * Width of column */ width: string; } /** * This component represents a single column in the layout. It receives a width * that it occupies and the content to display * @param props * @returns */ export var FlexibleColumn: React.FC; } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { /** * Arguments for the DragHandler component. */ export interface IFlexibleDragHandlerProps { /** * The size of the containing element. Used to calculate the percentage of * space occupied by the component */ containerSize: { width: number; height: number; }; } /** * This component receives the drop events and updates the layout accordingly */ export var FlexibleDragHandler: React.FC; } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { /** * Arguments for the FlexibleDropZone component. */ export interface IFlexibleDropZoneProps { /** * The row number of the component in the layout */ rowNumber: number; /** * The column number of the component in the layout */ columnNumber: number; } /** * This component contains the drag and drop zone for the resize bars that * allow redefining width and height of layout elements */ export var FlexibleDropZone: React.FC; } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { /** * Arguments for the GridContainer component. */ export interface IFlexibleGridContainerProps { } /** * Component responsible for mapping the layout to the actual components */ export var FlexibleGridContainer: React.FC; } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { /** * Arguments for the INSPECTOR.SharedUIComponents.Layout component. */ export interface IFlexibleGridLayoutProps { /** * A definition of the layout which can be changed by the user */ layoutDefinition: INSPECTOR.SharedUIComponents.Layout; } /** * This component represents a grid layout that can be resized and rearranged * by the user. */ export var FlexibleGridLayout: React.FC; } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { /** * Arguments for the ResizeBar component. */ export interface IFlexibleRowResizerProps { /** * Row number of the component that is being resized */ rowNumber: number; /** * Column number of the component being resized */ columnNumber: number; /** * If the resizing happens in row or column direction */ direction: INSPECTOR.SharedUIComponents.ResizeDirections; } /** * The item that will be sent to the drag event */ export type ResizeItem = { /** * If the resizing happens in row or column direction */ direction: INSPECTOR.SharedUIComponents.ResizeDirections; /** * The row number of the component that is being resized */ rowNumber: number; /** * the column number of the component being resized */ columnNumber: number; }; /** * A component that renders a bar that the user can drag to resize. */ export var FlexibleResizeBar: React.FC; } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { /** * Arguments for the FlexibleTab component. */ export interface IFlexibleTabProps { /** * The tab's title. */ title: string; /** * If the tab is currently selected or not */ selected: boolean; /** * What happens when the user clicks on the tab */ onClick: () => void; /** * The object that will be sent to the drag event */ item: INSPECTOR.SharedUIComponents.TabDrag; /** * What happens when the user drops another tab after this one */ onTabDroppedAction: (item: INSPECTOR.SharedUIComponents.TabDrag) => void; } /** * A component that renders a tab that the user can click * to activate or drag to reorder. It also listens for * drop events if the user wants to drop another tab * after it. */ export var FlexibleTab: React.FC; } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { /** * Arguments for the TabsContainer component. */ export interface IFlexibleTabsContainerProps { /** * The tabs to display */ tabs: INSPECTOR.SharedUIComponents.LayoutTab[]; /** * Row index of component in layout */ rowIndex: number; /** * Column index of component in layout */ columnIndex: number; /** * Which tab is selected in the layout */ selectedTab?: string; } /** * This component contains a set of tabs of which only one is visible at a time. * The tabs can also be dragged from and to different containers. */ export var FlexibleTabsContainer: React.FC; } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { /// export var LayoutContext: import("react").Context<{ /** * The layout object */ layout: INSPECTOR.SharedUIComponents.Layout; /** * Function to set the layout object in the context */ setLayout: (layout: INSPECTOR.SharedUIComponents.Layout) => void; }>; } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export type LayoutTab = { /** * Tab id */ id: string; /** * React component rendered by tab */ component: React.ReactElement; /** * Tab title */ title: string; }; export type LayoutTabsRow = { /** * row id */ id: string; /** * row height in its containing column */ height: string; /** * selected tab in row */ selectedTab: string; /** * list of tabs contained in row */ tabs: LayoutTab[]; }; export type LayoutColumn = { /** * column id */ id: string; /** * column width in the grid */ width: string; /** * column rows */ rows: LayoutTabsRow[]; }; export type Layout = { /** * layout columns */ columns?: LayoutColumn[]; }; export type TabDrag = { /** * row number of the tab being dragged */ rowNumber: number; /** * column number of the tab being dragged */ columnNumber: number; /** * the tabs being dragged */ tabs: { /** * id of tab being dragged */ id: string; }[]; }; export enum ElementTypes { RESIZE_BAR = "0", TAB = "1", TAB_GROUP = "2", NONE = "2" } export enum ResizeDirections { ROW = "row", COLUMN = "column" } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { /** * Given a column and row number in the layout, return the corresponding column/row * @param layout * @param column * @param row * @returns */ export const getPosInLayout: (layout: INSPECTOR.SharedUIComponents.Layout, column: number, row?: number) => INSPECTOR.SharedUIComponents.LayoutColumn | INSPECTOR.SharedUIComponents.LayoutTabsRow; /** * Remove a row in position row, column from the layout, and redistribute heights of remaining rows * @param layout * @param column * @param row */ export const removeLayoutRowAndRedistributePercentages: (layout: INSPECTOR.SharedUIComponents.Layout, column: number, row: number) => void; /** * Add a percentage string to a number */ export const addPercentageStringToNumber: (p1: string, p2: number) => number; /** * Parses a percentage string into a number * @param p the percentage string */ export const parsePercentage: (p: string) => number; } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export interface IColorLineComponentProps { label: string; target: any; propertyName: string; onPropertyChangedObservable: BABYLON.Observable; onChange?: () => void; isLinear?: boolean; icon?: string; iconLabel?: string; disableAlpha?: boolean; lockObject: INSPECTOR.SharedUIComponents.LockObject; } interface IColorLineComponentState { isExpanded: boolean; color: BABYLON.Color4; } export class ColorLineComponent extends React.Component { constructor(props: IColorLineComponentProps); shouldComponentUpdate(nextProps: IColorLineComponentProps, nextState: IColorLineComponentState): boolean; getValue(props?: Readonly & Readonly<{ children?: React.ReactNode; }>): BABYLON.Color4; setColorFromString(colorString: string): void; setColor(newColor: BABYLON.Color4): void; switchExpandState(): void; updateStateR(value: number): void; updateStateG(value: number): void; updateStateB(value: number): void; updateStateA(value: number): void; copyToClipboard(): void; private _convertToColor; private _toColor3; render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export interface IColorPickerComponentProps { value: BABYLON.Color4 | BABYLON.Color3; linearHint?: boolean; onColorChanged: (newOne: string) => void; icon?: string; iconLabel?: string; shouldPopRight?: boolean; lockObject?: INSPECTOR.SharedUIComponents.LockObject; backgroundColor?: string; } interface IColorPickerComponentState { pickerEnabled: boolean; color: BABYLON.Color3 | BABYLON.Color4; hex: string; } export class ColorPickerLineComponent extends React.Component { private _floatRef; private _floatHostRef; private _coverRef; constructor(props: IColorPickerComponentProps); syncPositions(): void; shouldComponentUpdate(nextProps: IColorPickerComponentProps, nextState: IColorPickerComponentState): boolean; getHexString(props?: Readonly & Readonly<{ children?: React.ReactNode; }>): string; componentDidUpdate(): void; componentDidMount(): void; render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export interface IFileButtonLineComponentProps { label: string; onClick: (file: File) => void; accept: string; icon?: string; iconLabel?: string; } export class FileButtonLineComponent extends React.Component { private static _IDGenerator; private _id; private _uploadInputRef; constructor(props: IFileButtonLineComponentProps); onChange(evt: any): void; render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { interface INumericInputComponentProps { label: string; value: number; step?: number; onChange: (value: number) => void; precision?: number; icon?: string; iconLabel?: string; lockObject: INSPECTOR.SharedUIComponents.LockObject; } export class NumericInputComponent extends React.Component { static defaultProps: { step: number; }; private _localChange; constructor(props: INumericInputComponentProps); componentWillUnmount(): void; shouldComponentUpdate(nextProps: INumericInputComponentProps, nextState: { value: string; }): boolean; updateValue(valueString: string): void; onBlur(): void; incrementValue(amount: number): void; onKeyDown(evt: React.KeyboardEvent): void; render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { /// /** * This components represents an options menu with optional * customizable properties. Option IDs should be unique. */ export interface IOption { label: string; value: string; id: string; } export interface IOptionsLineComponentProps { options: IOption[]; addOptionPlaceholder?: string; onOptionAdded?: (newOption: IOption) => void; onOptionSelected: (selectedOptionValue: string) => void; selectedOptionValue: string; validateNewOptionValue?: (newOptionValue: string) => boolean; addOptionText?: string; } export const OptionsLineComponent: (props: IOptionsLineComponentProps) => JSX.Element; } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export interface MessageDialogProps { message: string; isError: boolean; onClose?: () => void; } export var MessageDialog: React.FC; } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { /** * Props for the connector */ export interface IGraphConnectorHandlerProps { /** * id of the parent node */ parentId: string; /** * x position of the parent node */ parentX: number; /** * y position of the parent node */ parentY: number; /** * x position of the connector relative to the parent node */ offsetX?: number; /** * y position of the connector relative to the parent node */ offsetY?: number; /** * width of the parent node */ parentWidth: number; /** * height of the parent node */ parentHeight: number; /** * id of the container where its parent node is */ parentContainerId: string; } /** * This component is used to initiate a connection between two nodes. Simply * drag the handle in a node and drop it in another node to create a connection. */ export var GraphConnectorHandler: React.FC; } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export interface IGraphContainerProps { } /** * This component is just a simple container to keep the nodes and lines containers * together * @param props * @returns */ export var GraphContainer: React.FC; } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { /// /** * this context is used to pass callbacks to the graph nodes and connections */ export interface IGraphContext { onNodesConnected?: (sourceId: string, targetId: string) => void; onLineSelected?: (lineId: string) => void; onNodeSelected?: (nodeId: string) => void; } export var GraphContextManager: import("react").Context; } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { /** * props for the GraphLine component */ export interface IGraphLineProps { /** * id of the line. temporary lines can have no id */ id?: string; /** * starting x pos of the line */ x1: number; /** * ending x pos of the line */ x2: number; /** * starting y pos of the line */ y1: number; /** * ending y pos of the line */ y2: number; /** * is the line selected */ selected?: boolean; /** * does the line have a direction */ directional?: boolean; } export const MarkerArrowId = "arrow"; /** * This component draws a SVG line between two points, with an optional marker * indicating direction */ export var GraphLine: React.FC; } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { /** * props for the GraphLineContainer */ export interface IGraphLinesContainerProps { /** * id of the container */ id: string; } /** * this component handles the dragging of new connections * @param props * @returns */ export var GraphLinesContainer: React.FC; } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export interface IGraphNodeProps { id: string; name: string; x: number; y: number; selected?: boolean; width?: number; height?: number; highlighted?: boolean; parentContainerId: string; } export var GraphNode: React.FC; } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export interface IGraphContainerProps { onNodeMoved: (id: string, x: number, y: number) => void; id: string; } /** * This component contains all the nodes and handles their dragging */ export var GraphNodesContainer: React.FC; } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export type IVisualRecordsType = Record; export type IConnectionType = { id: string; sourceId: string; targetId: string; }; export type ICustomDataType = { type: string; value: any; }; export type INodeType = { id: string; label: string; customData?: ICustomDataType; }; /** * props for the node renderer */ export interface INodeRendererProps { /** * array of connections between nodes */ connections: IConnectionType[]; /** * function called when a new connection is created */ updateConnections: (sourceId: string, targetId: string) => void; /** * function called when a connection is deleted */ deleteLine: (lineId: string) => void; /** * function called when a node is deleted */ deleteNode: (nodeId: string) => void; /** * array of all nodes */ nodes: INodeType[]; /** * id of the node to highlight */ highlightedNode?: BABYLON.Nullable; /** * function to be called if a node is selected */ selectNode?: (nodeId: BABYLON.Nullable) => void; /** * id of this renderer */ id: string; /** * optional list of custom components to be rendered inside nodes of * a certain type */ customComponents?: Record>; } /** * This component is a bridge between the app logic related to the graph, and the actual rendering * of it. It manages the nodes' positions and selection states. * @param props * @returns */ export const NodeRenderer: (props: INodeRendererProps) => JSX.Element; } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { /** * utility hook to assist using the graph context * @returns */ export const useGraphContext: () => IGraphContext; } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { /// export interface ITextInputProps { label?: string; placeholder?: string; submitValue: (newValue: string) => void; validateValue?: (value: string) => boolean; cancelSubmit?: () => void; } /** * This component represents a text input that can be submitted or cancelled on buttons */ export const TextInputWithSubmit: (props: ITextInputProps) => JSX.Element; } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { /// export type ToggleProps = { toggled: "on" | "mixed" | "off"; onToggle?: () => void; padded?: boolean; color?: "dark" | "light"; }; export var Toggle: React.FC; } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export interface IBooleanLineComponentProps { label: string; value: boolean; icon?: string; iconLabel?: string; } export class BooleanLineComponent extends React.Component { constructor(props: IBooleanLineComponentProps); render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export interface IButtonLineComponentProps { label: string; onClick: () => void; icon?: string; iconLabel?: string; isDisabled?: boolean; } export class ButtonLineComponent extends React.Component { constructor(props: IButtonLineComponentProps); render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export interface ICheckBoxLineComponentProps { label?: string; target?: any; propertyName?: string; isSelected?: () => boolean; onSelect?: (value: boolean) => void; onValueChanged?: () => void; onPropertyChangedObservable?: BABYLON.Observable; disabled?: boolean; icon?: string; iconLabel?: string; faIcons?: { enabled: any; disabled: any; }; large?: boolean; } export class CheckBoxLineComponent extends React.Component { private _localChange; constructor(props: ICheckBoxLineComponentProps); shouldComponentUpdate(nextProps: ICheckBoxLineComponentProps, nextState: { isSelected: boolean; isDisabled: boolean; isConflict: boolean; }): boolean; onChange(): void; render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export interface IColor3LineComponentProps { label: string; target: any; propertyName: string; onPropertyChangedObservable?: BABYLON.Observable; isLinear?: boolean; icon?: string; lockObject: INSPECTOR.SharedUIComponents.LockObject; iconLabel?: string; onChange?: () => void; } export class Color3LineComponent extends React.Component { render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export interface IColor4LineComponentProps { label: string; target?: any; propertyName: string; onPropertyChangedObservable?: BABYLON.Observable; onChange?: () => void; isLinear?: boolean; icon?: string; iconLabel?: string; lockObject: INSPECTOR.SharedUIComponents.LockObject; } export class Color4LineComponent extends React.Component { render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export interface IColorLineComponentProps { label: string; target?: any; propertyName: string; onPropertyChangedObservable?: BABYLON.Observable; onChange?: () => void; isLinear?: boolean; icon?: string; iconLabel?: string; disableAlpha?: boolean; lockObject: INSPECTOR.SharedUIComponents.LockObject; } interface IColorLineComponentState { isExpanded: boolean; color: BABYLON.Color4; } export class ColorLineComponent extends React.Component { constructor(props: IColorLineComponentProps); shouldComponentUpdate(nextProps: IColorLineComponentProps, nextState: IColorLineComponentState): boolean; getValue(props?: Readonly & Readonly<{ children?: React.ReactNode; }>): BABYLON.Color4; setColorFromString(colorString: string): void; setColor(newColor: BABYLON.Color4): void; switchExpandState(): void; updateStateR(value: number): void; updateStateG(value: number): void; updateStateB(value: number): void; updateStateA(value: number): void; copyToClipboard(): void; private _convertToColor; private _toColor3; render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export interface IColorPickerComponentProps { value: BABYLON.Color4 | BABYLON.Color3; linearHint?: boolean; onColorChanged: (newOne: string) => void; icon?: string; iconLabel?: string; shouldPopRight?: boolean; lockObject?: INSPECTOR.SharedUIComponents.LockObject; } interface IColorPickerComponentState { pickerEnabled: boolean; color: BABYLON.Color3 | BABYLON.Color4; hex: string; } export class ColorPickerLineComponent extends React.Component { private _floatRef; private _floatHostRef; constructor(props: IColorPickerComponentProps); syncPositions(): void; shouldComponentUpdate(nextProps: IColorPickerComponentProps, nextState: IColorPickerComponentState): boolean; getHexString(props?: Readonly & Readonly<{ children?: React.ReactNode; }>): string; componentDidUpdate(): void; componentDidMount(): void; render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export interface IButtonLineComponentProps { data: string; tooltip: string; } export class DraggableLineComponent extends React.Component { constructor(props: IButtonLineComponentProps); render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { interface IFileButtonLineComponentProps { label: string; onClick: (file: File) => void; accept: string; icon?: string; iconLabel?: string; } export class FileButtonLineComponent extends React.Component { private static _IDGenerator; private _id; private _uploadInputRef; constructor(props: IFileButtonLineComponentProps); onChange(evt: any): void; render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { interface IFileMultipleButtonLineComponentProps { label: string; onClick: (event: any) => void; accept: string; icon?: string; iconLabel?: string; } export class FileMultipleButtonLineComponent extends React.Component { private static _IDGenerator; private _id; private _uploadInputRef; constructor(props: IFileMultipleButtonLineComponentProps); onChange(evt: any): void; render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { interface IFloatLineComponentProps { label: string; target: any; propertyName: string; lockObject: INSPECTOR.SharedUIComponents.LockObject; onChange?: (newValue: number) => void; isInteger?: boolean; onPropertyChangedObservable?: BABYLON.Observable; additionalClass?: string; step?: string; digits?: number; useEuler?: boolean; min?: number; max?: number; smallUI?: boolean; onEnter?: (newValue: number) => void; icon?: string; iconLabel?: string; defaultValue?: number; arrows?: boolean; unit?: React.ReactNode; onDragStart?: (newValue: number) => void; onDragStop?: (newValue: number) => void; } export class FloatLineComponent extends React.Component { private _localChange; private _store; constructor(props: IFloatLineComponentProps); componentWillUnmount(): void; getValueString(value: any): string; shouldComponentUpdate(nextProps: IFloatLineComponentProps, nextState: { value: string; dragging: boolean; }): boolean; raiseOnPropertyChanged(newValue: number, previousValue: number): void; updateValue(valueString: string): void; lock(): void; unlock(): void; incrementValue(amount: number, processStep?: boolean): void; onKeyDown(event: React.KeyboardEvent): void; render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { interface IHexLineComponentProps { label: string; target: any; propertyName: string; lockObject?: INSPECTOR.SharedUIComponents.LockObject; onChange?: (newValue: number) => void; isInteger?: boolean; replaySourceReplacement?: string; onPropertyChangedObservable?: BABYLON.Observable; additionalClass?: string; step?: string; digits?: number; useEuler?: boolean; min?: number; icon?: string; iconLabel?: string; } export class HexLineComponent extends React.Component { private _localChange; private _store; private _propertyChange; constructor(props: IHexLineComponentProps); componentWillUnmount(): void; shouldComponentUpdate(nextProps: IHexLineComponentProps, nextState: { value: string; }): boolean; raiseOnPropertyChanged(newValue: number, previousValue: number): void; convertToHexString(valueString: string): string; updateValue(valueString: string, raisePropertyChanged: boolean): void; lock(): void; unlock(): void; render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export interface IIconButtonLineComponentProps { icon: string; onClick: () => void; tooltip: string; active?: boolean; } export class IconButtonLineComponent extends React.Component { constructor(props: IIconButtonLineComponentProps); render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { interface IIconComponentProps { icon: string; label?: string; } export class IconComponent extends React.Component { render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { interface IIndentedTextLineComponentProps { value?: string; color?: string; underline?: boolean; onLink?: () => void; url?: string; additionalClass?: string; } export class IndentedTextLineComponent extends React.Component { constructor(props: IIndentedTextLineComponentProps); onLink(): void; renderContent(): JSX.Element; render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { interface IInputArrowsComponentProps { incrementValue: (amount: number) => void; setDragging: (dragging: boolean) => void; } export class InputArrowsComponent extends React.Component { private _arrowsRef; private _drag; private _releaseListener; private _lockChangeListener; render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export interface ISelectedLineContainer { selectedLineContainerTitles: Array; selectedLineContainerTitlesNoFocus: Array; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { interface ILineContainerComponentProps { selection?: INSPECTOR.SharedUIComponents.ISelectedLineContainer; title: string; children: any[] | any; closed?: boolean; } export class LineContainerComponent extends React.Component { constructor(props: ILineContainerComponentProps); switchExpandedState(): void; renderHeader(): JSX.Element; componentDidMount(): void; render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { interface ILinkButtonComponentProps { label: string; buttonLabel: string; url?: string; onClick: () => void; icon?: any; onIconClick?: () => void; } export class LinkButtonComponent extends React.Component { constructor(props: ILinkButtonComponentProps); onLink(): void; render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { interface IMatrixLineComponentProps { label: string; target: any; propertyName: string; step?: number; onChange?: (newValue: BABYLON.Matrix) => void; onModeChange?: (mode: number) => void; onPropertyChangedObservable?: BABYLON.Observable; mode?: number; lockObject: INSPECTOR.SharedUIComponents.LockObject; } export class MatrixLineComponent extends React.Component { private _localChange; constructor(props: IMatrixLineComponentProps); shouldComponentUpdate(nextProps: IMatrixLineComponentProps, nextState: { value: BABYLON.Matrix; mode: number; angle: number; }): boolean; raiseOnPropertyChanged(previousValue: BABYLON.Vector3): void; updateMatrix(): void; updateRow(value: BABYLON.Vector4, row: number): void; updateBasedOnMode(value: number): void; render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { interface IMessageLineComponentProps { text: string; color?: string; icon?: any; } export class MessageLineComponent extends React.Component { constructor(props: IMessageLineComponentProps); render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { interface INumericInputComponentProps { label: string; value: number; step?: number; onChange: (value: number) => void; precision?: number; icon?: string; iconLabel?: string; lockObject: INSPECTOR.SharedUIComponents.LockObject; } export class NumericInputComponent extends React.Component { static defaultProps: { step: number; }; private _localChange; constructor(props: INumericInputComponentProps); componentWillUnmount(): void; shouldComponentUpdate(nextProps: INumericInputComponentProps, nextState: { value: string; }): boolean; updateValue(valueString: string): void; onBlur(): void; incrementValue(amount: number): void; onKeyDown(evt: React.KeyboardEvent): void; render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export var Null_Value: number; export interface IOptionsLineComponentProps { label: string; target: any; propertyName: string; options: BABYLON.IInspectableOptions[]; noDirectUpdate?: boolean; onSelect?: (value: number | string) => void; extractValue?: (target: any) => number | string; onPropertyChangedObservable?: BABYLON.Observable; allowNullValue?: boolean; icon?: string; iconLabel?: string; className?: string; valuesAreStrings?: boolean; defaultIfNull?: number; } export class OptionsLineComponent extends React.Component { private _localChange; private _remapValueIn; private _remapValueOut; private _getValue; constructor(props: IOptionsLineComponentProps); shouldComponentUpdate(nextProps: IOptionsLineComponentProps, nextState: { value: number; }): boolean; raiseOnPropertyChanged(newValue: number, previousValue: number): void; setValue(value: string | number): void; updateValue(valueString: string): void; render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export class Popup { static CreatePopup(title: string, windowVariableName: string, width?: number, height?: number): HTMLDivElement | null; private static _CopyStyles; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { interface IRadioButtonLineComponentProps { onSelectionChangedObservable: BABYLON.Observable; label: string; isSelected: () => boolean; onSelect: () => void; icon?: string; iconLabel?: string; } export class RadioButtonLineComponent extends React.Component { private _onSelectionChangedObserver; constructor(props: IRadioButtonLineComponentProps); componentDidMount(): void; componentWillUnmount(): void; onChange(): void; render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { interface ISliderLineComponentProps { label: string; target?: any; propertyName?: string; minimum: number; maximum: number; step: number; directValue?: number; useEuler?: boolean; onChange?: (value: number) => void; onInput?: (value: number) => void; onPropertyChangedObservable?: BABYLON.Observable; decimalCount?: number; margin?: boolean; icon?: string; iconLabel?: string; lockObject: INSPECTOR.SharedUIComponents.LockObject; unit?: React.ReactNode; } export class SliderLineComponent extends React.Component { private _localChange; constructor(props: ISliderLineComponentProps); shouldComponentUpdate(nextProps: ISliderLineComponentProps, nextState: { value: number; }): boolean; onChange(newValueString: any): void; onInput(newValueString: any): void; prepareDataToRead(value: number): number; render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export const conflictingValuesPlaceholder = "\u2014"; /** * * @param targets a list of selected targets * @param onPropertyChangedObservable * @param getProperty * @returns a proxy object that can be passed as a target into the input */ export function makeTargetsProxy(targets: Type[], onPropertyChangedObservable?: BABYLON.Observable, getProperty?: (target: Type, property: keyof Type) => any): any; } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export interface ITextInputLineComponentProps { label?: string; lockObject?: INSPECTOR.SharedUIComponents.LockObject; target?: any; propertyName?: string; value?: string; onChange?: (value: string) => void; onPropertyChangedObservable?: BABYLON.Observable; icon?: string; iconLabel?: string; noUnderline?: boolean; numbersOnly?: boolean; delayInput?: boolean; arrows?: boolean; arrowsIncrement?: (amount: number) => void; step?: number; numeric?: boolean; roundValues?: boolean; min?: number; max?: number; placeholder?: string; unit?: React.ReactNode; validator?: (value: string) => boolean; multilines?: boolean; throttlePropertyChangedNotification?: boolean; throttlePropertyChangedNotificationDelay?: number; disabled?: boolean; } export class TextInputLineComponent extends React.Component { private _localChange; constructor(props: ITextInputLineComponentProps); componentWillUnmount(): void; shouldComponentUpdate(nextProps: ITextInputLineComponentProps, nextState: { value: string; dragging: boolean; }): boolean; raiseOnPropertyChanged(newValue: string, previousValue: string): void; getCurrentNumericValue(value: string): number; updateValue(value: string, valueToValidate?: string): void; incrementValue(amount: number): void; onKeyDown(event: React.KeyboardEvent): void; render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { interface ITextLineComponentProps { label?: string; value?: string; color?: string; underline?: boolean; onLink?: () => void; url?: string; ignoreValue?: boolean; additionalClass?: string; icon?: string; iconLabel?: string; tooltip?: string; } export class TextLineComponent extends React.Component { constructor(props: ITextLineComponentProps); onLink(): void; renderContent(): JSX.Element | null; render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { /// interface IUnitButtonProps { unit: string; locked?: boolean; onClick?: (unit: string) => void; } export function UnitButton(props: IUnitButtonProps): JSX.Element; } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { interface IValueLineComponentProps { label: string; value: number; color?: string; fractionDigits?: number; units?: string; icon?: string; iconLabel?: string; } export class ValueLineComponent extends React.Component { constructor(props: IValueLineComponentProps); render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { interface IVector2LineComponentProps { label: string; target: any; propertyName: string; step?: number; onChange?: (newvalue: BABYLON.Vector2) => void; onPropertyChangedObservable?: BABYLON.Observable; icon?: string; iconLabel?: string; lockObject: INSPECTOR.SharedUIComponents.LockObject; } export class Vector2LineComponent extends React.Component { static defaultProps: { step: number; }; private _localChange; constructor(props: IVector2LineComponentProps); shouldComponentUpdate(nextProps: IVector2LineComponentProps, nextState: { isExpanded: boolean; value: BABYLON.Vector2; }): boolean; switchExpandState(): void; raiseOnPropertyChanged(previousValue: BABYLON.Vector2): void; updateStateX(value: number): void; updateStateY(value: number): void; render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { interface IVector3LineComponentProps { label: string; target: any; propertyName: string; step?: number; onChange?: (newvalue: BABYLON.Vector3) => void; useEuler?: boolean; onPropertyChangedObservable?: BABYLON.Observable; noSlider?: boolean; icon?: string; iconLabel?: string; lockObject: INSPECTOR.SharedUIComponents.LockObject; } export class Vector3LineComponent extends React.Component { static defaultProps: { step: number; }; private _localChange; constructor(props: IVector3LineComponentProps); getCurrentValue(): any; shouldComponentUpdate(nextProps: IVector3LineComponentProps, nextState: { isExpanded: boolean; value: BABYLON.Vector3; }): boolean; switchExpandState(): void; raiseOnPropertyChanged(previousValue: BABYLON.Vector3): void; updateVector3(): void; updateStateX(value: number): void; updateStateY(value: number): void; updateStateZ(value: number): void; render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { interface IVector4LineComponentProps { label: string; target?: any; propertyName?: string; step?: number; onChange?: (newvalue: BABYLON.Vector4) => void; useEuler?: boolean; onPropertyChangedObservable?: BABYLON.Observable; icon?: string; iconLabel?: string; value?: BABYLON.Vector4; lockObject: INSPECTOR.SharedUIComponents.LockObject; } export class Vector4LineComponent extends React.Component { static defaultProps: { step: number; }; private _localChange; constructor(props: IVector4LineComponentProps); getCurrentValue(): any; shouldComponentUpdate(nextProps: IVector4LineComponentProps, nextState: { isExpanded: boolean; value: BABYLON.Vector4; }): boolean; switchExpandState(): void; raiseOnPropertyChanged(previousValue: BABYLON.Vector4): void; updateVector4(): void; updateStateX(value: number): void; updateStateY(value: number): void; updateStateZ(value: number): void; updateStateW(value: number): void; render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export class DisplayLedger { static RegisteredControls: { [key: string]: any; }; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export class FrameNodePort extends INSPECTOR.SharedUIComponents.NodePort { portData: INSPECTOR.SharedUIComponents.IPortData; node: INSPECTOR.SharedUIComponents.GraphNode; private _parentFrameId; private _isInput; private _framePortPosition; private _framePortId; private _onFramePortPositionChangedObservable; get parentFrameId(): number; get onFramePortPositionChangedObservable(): BABYLON.Observable; get isInput(): boolean; get framePortId(): number; get framePortPosition(): INSPECTOR.SharedUIComponents.FramePortPosition; set framePortPosition(position: INSPECTOR.SharedUIComponents.FramePortPosition); constructor(portContainer: HTMLElement, portData: INSPECTOR.SharedUIComponents.IPortData, node: INSPECTOR.SharedUIComponents.GraphNode, stateManager: INSPECTOR.SharedUIComponents.StateManager, isInput: boolean, framePortId: number, parentFrameId: number); static CreateFrameNodePortElement(portData: INSPECTOR.SharedUIComponents.IPortData, node: INSPECTOR.SharedUIComponents.GraphNode, root: HTMLElement, displayManager: BABYLON.Nullable, stateManager: INSPECTOR.SharedUIComponents.StateManager, isInput: boolean, framePortId: number, parentFrameId: number): FrameNodePort; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export interface IGraphCanvasComponentProps { stateManager: INSPECTOR.SharedUIComponents.StateManager; onEmitNewNode: (nodeData: INSPECTOR.SharedUIComponents.INodeData) => INSPECTOR.SharedUIComponents.GraphNode; } export class GraphCanvasComponent extends React.Component implements INSPECTOR.SharedUIComponents.INodeContainer { static readonly NodeWidth = 100; private readonly _minZoom; private readonly _maxZoom; private _hostCanvasRef; private _hostCanvas; private _graphCanvasRef; private _graphCanvas; private _selectionContainerRef; private _selectionContainer; private _frameContainerRef; private _frameContainer; private _svgCanvasRef; private _svgCanvas; private _rootContainerRef; private _rootContainer; private _nodes; private _links; private _mouseStartPointX; private _mouseStartPointY; private _dropPointX; private _dropPointY; private _selectionStartX; private _selectionStartY; private _candidateLinkedHasMoved; private _x; private _y; private _zoom; private _selectedNodes; private _selectedLink; private _selectedPort; private _candidateLink; private _candidatePort; private _gridSize; private _selectionBox; private _selectedFrames; private _frameCandidate; private _frames; private _nodeDataContentList; private _altKeyIsPressed; private _multiKeyIsPressed; private _oldY; _frameIsMoving: boolean; _isLoading: boolean; _targetLinkCandidate: BABYLON.Nullable; private _copiedNodes; private _copiedFrames; get gridSize(): number; set gridSize(value: number); get stateManager(): INSPECTOR.SharedUIComponents.StateManager; get nodes(): INSPECTOR.SharedUIComponents.GraphNode[]; get links(): INSPECTOR.SharedUIComponents.NodeLink[]; get frames(): INSPECTOR.SharedUIComponents.GraphFrame[]; get zoom(): number; set zoom(value: number); get x(): number; set x(value: number); get y(): number; set y(value: number); get selectedNodes(): INSPECTOR.SharedUIComponents.GraphNode[]; get selectedLink(): BABYLON.Nullable; get selectedFrames(): INSPECTOR.SharedUIComponents.GraphFrame[]; get selectedPort(): BABYLON.Nullable; get canvasContainer(): HTMLDivElement; get hostCanvas(): HTMLDivElement; get svgCanvas(): HTMLElement; get selectionContainer(): HTMLDivElement; get frameContainer(): HTMLDivElement; private _selectedFrameAndNodesConflict; constructor(props: IGraphCanvasComponentProps); populateConnectedEntriesBeforeRemoval(item: INSPECTOR.SharedUIComponents.GraphNode, items: INSPECTOR.SharedUIComponents.GraphNode[], inputs: BABYLON.Nullable[], outputs: BABYLON.Nullable[]): void; automaticRewire(inputs: BABYLON.Nullable[], outputs: BABYLON.Nullable[], firstOnly?: boolean): void; smartAddOverLink(node: INSPECTOR.SharedUIComponents.GraphNode, link: INSPECTOR.SharedUIComponents.NodeLink): void; smartAddOverNode(node: INSPECTOR.SharedUIComponents.GraphNode, source: INSPECTOR.SharedUIComponents.GraphNode): void; deleteSelection(onRemove: (nodeData: INSPECTOR.SharedUIComponents.INodeData) => void, autoReconnect?: boolean): void; handleKeyDown(evt: KeyboardEvent, onRemove: (nodeData: INSPECTOR.SharedUIComponents.INodeData) => void, mouseLocationX: number, mouseLocationY: number, dataGenerator: (nodeData: INSPECTOR.SharedUIComponents.INodeData) => any, rootElement: HTMLDivElement): void; pasteSelection(copiedNodes: INSPECTOR.SharedUIComponents.GraphNode[], currentX: number, currentY: number, dataGenerator: (nodeData: INSPECTOR.SharedUIComponents.INodeData) => any, selectNew?: boolean): INSPECTOR.SharedUIComponents.GraphNode[]; reconnectNewNodes(nodeIndex: number, newNodes: INSPECTOR.SharedUIComponents.GraphNode[], sourceNodes: INSPECTOR.SharedUIComponents.GraphNode[], done: boolean[]): void; getCachedData(): any[]; removeDataFromCache(data: any): void; createNodeFromObject(nodeData: INSPECTOR.SharedUIComponents.INodeData, onNodeCreated: (data: any) => void, recursion?: boolean): INSPECTOR.SharedUIComponents.GraphNode; getGridPosition(position: number, useCeil?: boolean): number; getGridPositionCeil(position: number): number; updateTransform(): void; onKeyUp(): void; findNodeFromData(data: any): INSPECTOR.SharedUIComponents.GraphNode; reset(): void; connectPorts(pointA: INSPECTOR.SharedUIComponents.IPortData, pointB: INSPECTOR.SharedUIComponents.IPortData): void; removeLink(link: INSPECTOR.SharedUIComponents.NodeLink): void; appendNode(nodeData: INSPECTOR.SharedUIComponents.INodeData): INSPECTOR.SharedUIComponents.GraphNode; distributeGraph(): void; componentDidMount(): void; onMove(evt: React.PointerEvent): void; onDown(evt: React.PointerEvent): void; onUp(evt: React.PointerEvent): void; onWheel(evt: React.WheelEvent): void; zoomToFit(): void; processCandidatePort(): void; connectNodes(nodeA: INSPECTOR.SharedUIComponents.GraphNode, pointA: INSPECTOR.SharedUIComponents.IPortData, nodeB: INSPECTOR.SharedUIComponents.GraphNode, pointB: INSPECTOR.SharedUIComponents.IPortData): void; drop(newNode: INSPECTOR.SharedUIComponents.GraphNode, targetX: number, targetY: number, offsetX: number, offsetY: number): void; processEditorData(editorData: INSPECTOR.SharedUIComponents.IEditorData): void; reOrganize(editorData?: BABYLON.Nullable, isImportingAFrame?: boolean): void; addFrame(frameData: INSPECTOR.SharedUIComponents.IFrameData): void; render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export enum FramePortPosition { Top = 0, Middle = 1, Bottom = 2 } export class GraphFrame { private readonly _collapsedWidth; private static _FrameCounter; private static _FramePortCounter; private _name; private _color; private _x; private _y; private _gridAlignedX; private _gridAlignedY; private _width; private _height; element: HTMLDivElement; private _borderElement; private _headerElement; private _headerTextElement; private _headerCollapseElement; private _headerCloseElement; private _commentsElement; private _portContainer; private _outputPortContainer; private _inputPortContainer; private _nodes; private _ownerCanvas; private _mouseStartPointX; private _mouseStartPointY; private _onSelectionChangedObserver; private _onGraphNodeRemovalObserver; private _onExposePortOnFrameObserver; private _onNodeLinkDisposedObservers; private _isCollapsed; private _frameInPorts; private _frameOutPorts; private _controlledPorts; private _exposedInPorts; private _exposedOutPorts; private _id; private _comments; private _frameIsResizing; private _resizingDirection; private _minFrameHeight; private _minFrameWidth; private _mouseXLimit; onExpandStateChanged: BABYLON.Observable; private readonly _closeSVG; private readonly _expandSVG; private readonly _collapseSVG; get id(): number; get isCollapsed(): boolean; private _createInputPort; private _markFramePortPositions; private _createFramePorts; private _removePortFromExposedWithNode; private _removePortFromExposedWithLink; private _createInputPorts; private _createOutputPorts; redrawFramePorts(): void; set isCollapsed(value: boolean); get nodes(): INSPECTOR.SharedUIComponents.GraphNode[]; get ports(): INSPECTOR.SharedUIComponents.FrameNodePort[]; get name(): string; set name(value: string); get color(): BABYLON.Color3; set color(value: BABYLON.Color3); get x(): number; set x(value: number); get y(): number; set y(value: number); get width(): number; set width(value: number); get height(): number; set height(value: number); get comments(): string; set comments(comments: string); constructor(candidate: BABYLON.Nullable, canvas: INSPECTOR.SharedUIComponents.GraphCanvasComponent, doNotCaptureNodes?: boolean); refresh(): void; addNode(node: INSPECTOR.SharedUIComponents.GraphNode): void; removeNode(node: INSPECTOR.SharedUIComponents.GraphNode): void; syncNode(node: INSPECTOR.SharedUIComponents.GraphNode): void; cleanAccumulation(): void; private _onDown; move(newX: number, newY: number, align?: boolean): void; private _onUp; _moveFrame(offsetX: number, offsetY: number): void; private _onMove; moveFramePortUp(nodePort: INSPECTOR.SharedUIComponents.FrameNodePort): void; private _movePortUp; moveFramePortDown(nodePort: INSPECTOR.SharedUIComponents.FrameNodePort): void; private _movePortDown; private _initResizing; private _cleanUpResizing; private _updateMinHeightWithComments; private _isResizingTop; private _isResizingRight; private _isResizingBottom; private _isResizingLeft; private _onRightHandlePointerDown; private _onRightHandlePointerMove; private _moveRightHandle; private _onRightHandlePointerUp; private _onBottomHandlePointerDown; private _onBottomHandlePointerMove; private _moveBottomHandle; private _onBottomHandlePointerUp; private _onLeftHandlePointerDown; private _onLeftHandlePointerMove; private _moveLeftHandle; private _onLeftHandlePointerUp; private _onTopHandlePointerDown; private _onTopHandlePointerMove; private _moveTopHandle; private _onTopHandlePointerUp; private _onTopRightHandlePointerDown; private _onTopRightHandlePointerMove; private _moveTopRightHandle; private _onTopRightHandlePointerUp; private _onBottomRightHandlePointerDown; private _onBottomRightHandlePointerMove; private _moveBottomRightHandle; private _onBottomRightHandlePointerUp; private _onBottomLeftHandlePointerDown; private _onBottomLeftHandlePointerMove; private _moveBottomLeftHandle; private _onBottomLeftHandlePointerUp; private _onTopLeftHandlePointerDown; private _onTopLeftHandlePointerMove; private _moveTopLeftHandle; private _onTopLeftHandlePointerUp; private _expandLeft; private _expandTop; private _expandRight; private _expandBottom; dispose(): void; private _serializePortData; serialize(saveCollapsedState: boolean): INSPECTOR.SharedUIComponents.IFrameData; export(): void; adjustPorts(): void; static Parse(serializationData: INSPECTOR.SharedUIComponents.IFrameData, canvas: INSPECTOR.SharedUIComponents.GraphCanvasComponent, map?: { [key: number]: number; }): GraphFrame; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { /// export class GraphNode { content: INSPECTOR.SharedUIComponents.INodeData; private _visual; private _headerContainer; private _headerIcon; private _headerIconImg; private _header; private _connections; private _inputsContainer; private _outputsContainer; private _content; private _comments; private _selectionBorder; private _inputPorts; private _outputPorts; private _links; private _x; private _y; private _gridAlignedX; private _gridAlignedY; private _mouseStartPointX; private _mouseStartPointY; private _stateManager; private _onSelectionChangedObserver; private _onSelectionBoxMovedObserver; private _onFrameCreatedObserver; private _onUpdateRequiredObserver; private _ownerCanvas; private _isSelected; private _displayManager; private _isVisible; private _enclosingFrameId; addClassToVisual(className: string): void; removeClassFromVisual(className: string): void; get isVisible(): boolean; set isVisible(value: boolean); private _upateNodePortNames; get outputPorts(): INSPECTOR.SharedUIComponents.NodePort[]; get inputPorts(): INSPECTOR.SharedUIComponents.NodePort[]; get links(): INSPECTOR.SharedUIComponents.NodeLink[]; get gridAlignedX(): number; get gridAlignedY(): number; get x(): number; set x(value: number); get y(): number; set y(value: number); get width(): number; get height(): number; get id(): number; get name(): string; get isSelected(): boolean; get enclosingFrameId(): number; set enclosingFrameId(value: number); set isSelected(value: boolean); setIsSelected(value: boolean, marqueeSelection: boolean): void; constructor(content: INSPECTOR.SharedUIComponents.INodeData, stateManager: INSPECTOR.SharedUIComponents.StateManager); isOverlappingFrame(frame: INSPECTOR.SharedUIComponents.GraphFrame): boolean; getPortForPortData(portData: INSPECTOR.SharedUIComponents.IPortData): INSPECTOR.SharedUIComponents.NodePort | null; getPortDataForPortDataContent(data: any): INSPECTOR.SharedUIComponents.IPortData | null; getLinksForPortDataContent(data: any): INSPECTOR.SharedUIComponents.NodeLink[]; getLinksForPortData(portData: INSPECTOR.SharedUIComponents.IPortData): INSPECTOR.SharedUIComponents.NodeLink[]; private _refreshFrames; _refreshLinks(): void; refresh(): void; private _onDown; cleanAccumulation(useCeil?: boolean): void; private _onUp; private _onMove; renderProperties(): BABYLON.Nullable; appendVisual(root: HTMLDivElement, owner: INSPECTOR.SharedUIComponents.GraphCanvasComponent): void; dispose(): void; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export interface VisualContentDescription { [key: string]: HTMLElement; } export interface IDisplayManager { getHeaderClass(data: INSPECTOR.SharedUIComponents.INodeData): string; shouldDisplayPortLabels(data: INSPECTOR.SharedUIComponents.IPortData): boolean; updatePreviewContent(data: INSPECTOR.SharedUIComponents.INodeData, contentArea: HTMLDivElement): void; updateFullVisualContent?(data: INSPECTOR.SharedUIComponents.INodeData, visualContent: VisualContentDescription): void; getBackgroundColor(data: INSPECTOR.SharedUIComponents.INodeData): string; getHeaderText(data: INSPECTOR.SharedUIComponents.INodeData): string; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export interface INodeContainer { nodes: INSPECTOR.SharedUIComponents.GraphNode[]; appendNode(data: INSPECTOR.SharedUIComponents.INodeData): INSPECTOR.SharedUIComponents.GraphNode; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export interface INodeData { data: any; name: string; uniqueId: number; isInput: boolean; comments: string; prepareHeaderIcon: (iconDiv: HTMLDivElement, img: HTMLImageElement) => void; getClassName: () => string; dispose: () => void; getPortByName: (name: string) => BABYLON.Nullable; inputs: INSPECTOR.SharedUIComponents.IPortData[]; outputs: INSPECTOR.SharedUIComponents.IPortData[]; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export interface INodeLocationInfo { blockId: number; x: number; y: number; } export interface IFrameData { x: number; y: number; width: number; height: number; color: number[]; name: string; isCollapsed: boolean; blocks: number[]; comments: string; } export interface IEditorData { locations: INodeLocationInfo[]; x: number; y: number; zoom: number; frames?: IFrameData[]; map?: { [key: number]: number; }; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export enum PortDataDirection { /** Input */ Input = 0, /** Output */ Output = 1 } export interface IPortData { data: any; name: string; internalName: string; isExposedOnFrame: boolean; exposedPortPosition: number; isConnected: boolean; direction: PortDataDirection; ownerData: any; connectedPort: BABYLON.Nullable; needDualDirectionValidation: boolean; hasEndpoints: boolean; endpoints: BABYLON.Nullable; updateDisplayName: (newName: string) => void; canConnectTo: (port: IPortData) => boolean; connectTo: (port: IPortData) => void; disconnectFrom: (port: IPortData) => void; checkCompatibilityState(port: IPortData): number; getCompatibilityIssueMessage(issue: number, targetNode: INSPECTOR.SharedUIComponents.GraphNode, targetPort: IPortData): string; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export interface IPropertyComponentProps { stateManager: INSPECTOR.SharedUIComponents.StateManager; nodeData: INSPECTOR.SharedUIComponents.INodeData; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export interface ISelectionChangedOptions { selection: BABYLON.Nullable; forceKeepSelection?: boolean; marqueeSelection?: boolean; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export class NodeLedger { static RegisteredNodeNames: string[]; static NameFormatter: (name: string) => string; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export class NodeLink { private _graphCanvas; private _portA; private _portB?; private _nodeA; private _nodeB?; private _path; private _selectionPath; private _onSelectionChangedObserver; private _isVisible; private _isTargetCandidate; onDisposedObservable: BABYLON.Observable; get isTargetCandidate(): boolean; set isTargetCandidate(value: boolean); get isVisible(): boolean; set isVisible(value: boolean); get portA(): INSPECTOR.SharedUIComponents.FrameNodePort | INSPECTOR.SharedUIComponents.NodePort; get portB(): INSPECTOR.SharedUIComponents.FrameNodePort | INSPECTOR.SharedUIComponents.NodePort | undefined; get nodeA(): INSPECTOR.SharedUIComponents.GraphNode; get nodeB(): INSPECTOR.SharedUIComponents.GraphNode | undefined; intersectsWith(rect: DOMRect): boolean; update(endX?: number, endY?: number, straight?: boolean): void; constructor(graphCanvas: INSPECTOR.SharedUIComponents.GraphCanvasComponent, portA: INSPECTOR.SharedUIComponents.NodePort, nodeA: INSPECTOR.SharedUIComponents.GraphNode, portB?: INSPECTOR.SharedUIComponents.NodePort, nodeB?: INSPECTOR.SharedUIComponents.GraphNode); onClick(evt: MouseEvent): void; dispose(notify?: boolean): void; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export class NodePort { portData: INSPECTOR.SharedUIComponents.IPortData; node: INSPECTOR.SharedUIComponents.GraphNode; protected _element: HTMLDivElement; protected _img: HTMLImageElement; protected _stateManager: INSPECTOR.SharedUIComponents.StateManager; protected _portLabelElement: Element; protected _onCandidateLinkMovedObserver: BABYLON.Nullable>>; protected _onSelectionChangedObserver: BABYLON.Nullable>>; protected _exposedOnFrame: boolean; delegatedPort: BABYLON.Nullable; get element(): HTMLDivElement; get portName(): string; set portName(newName: string); get disabled(): boolean; hasLabel(): boolean; get exposedOnFrame(): boolean; set exposedOnFrame(value: boolean); get exposedPortPosition(): number; set exposedPortPosition(value: number); private _isConnectedToNodeOutsideOfFrame; refresh(): void; constructor(portContainer: HTMLElement, portData: INSPECTOR.SharedUIComponents.IPortData, node: INSPECTOR.SharedUIComponents.GraphNode, stateManager: INSPECTOR.SharedUIComponents.StateManager); dispose(): void; static CreatePortElement(portData: INSPECTOR.SharedUIComponents.IPortData, node: INSPECTOR.SharedUIComponents.GraphNode, root: HTMLElement, displayManager: BABYLON.Nullable, stateManager: INSPECTOR.SharedUIComponents.StateManager): NodePort; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export class PropertyLedger { static DefaultControl: React.ComponentClass; static RegisteredControls: { [key: string]: React.ComponentClass; }; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export interface ISearchBoxComponentProps { stateManager: INSPECTOR.SharedUIComponents.StateManager; } /** * The search box component. */ export class SearchBoxComponent extends React.Component { private _handleEscKey; private _targetX; private _targetY; private _nodes; constructor(props: ISearchBoxComponentProps); hide(): void; onFilterChange(evt: React.ChangeEvent): void; onNewNodeRequested(name: string): void; onKeyDown(evt: React.KeyboardEvent): void; render(): JSX.Element | null; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export class StateManager { data: any; hostDocument: Document; lockObject: any; modalIsDisplayed: boolean; onSearchBoxRequiredObservable: BABYLON.Observable<{ x: number; y: number; }>; onSelectionChangedObservable: BABYLON.Observable>; onFrameCreatedObservable: BABYLON.Observable; onUpdateRequiredObservable: BABYLON.Observable; onGraphNodeRemovalObservable: BABYLON.Observable; onSelectionBoxMoved: BABYLON.Observable; onCandidateLinkMoved: BABYLON.Observable>; onCandidatePortSelectedObservable: BABYLON.Observable>; onNewNodeCreatedObservable: BABYLON.Observable; onRebuildRequiredObservable: BABYLON.Observable; onErrorMessageDialogRequiredObservable: BABYLON.Observable; onExposePortOnFrameObservable: BABYLON.Observable; onGridSizeChanged: BABYLON.Observable; onNewBlockRequiredObservable: BABYLON.Observable<{ type: string; targetX: number; targetY: number; needRepositioning?: boolean | undefined; smartAdd?: boolean | undefined; }>; exportData: (data: any, frame?: BABYLON.Nullable) => string; isElbowConnectionAllowed: (nodeA: INSPECTOR.SharedUIComponents.FrameNodePort | INSPECTOR.SharedUIComponents.NodePort, nodeB: INSPECTOR.SharedUIComponents.FrameNodePort | INSPECTOR.SharedUIComponents.NodePort) => boolean; applyNodePortDesign: (data: INSPECTOR.SharedUIComponents.IPortData, element: HTMLElement, img: HTMLImageElement) => void; storeEditorData: (serializationObject: any, frame?: BABYLON.Nullable) => void; getEditorDataMap: () => { [key: number]: number; }; createDefaultInputData: (rootData: any, portData: INSPECTOR.SharedUIComponents.IPortData, nodeContainer: INSPECTOR.SharedUIComponents.INodeContainer) => BABYLON.Nullable<{ data: INSPECTOR.SharedUIComponents.INodeData; name: string; }>; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export const IsFramePortData: (variableToCheck: any) => variableToCheck is INSPECTOR.SharedUIComponents.FramePortData; export const RefreshNode: (node: INSPECTOR.SharedUIComponents.GraphNode, visitedNodes?: Set, visitedLinks?: Set) => void; } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export class TypeLedger { static PortDataBuilder: (port: INSPECTOR.SharedUIComponents.NodePort, nodeContainer: INSPECTOR.SharedUIComponents.INodeContainer) => INSPECTOR.SharedUIComponents.IPortData; static NodeDataBuilder: (data: any, nodeContainer: INSPECTOR.SharedUIComponents.INodeContainer) => INSPECTOR.SharedUIComponents.INodeData; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export type FramePortData = { frame: INSPECTOR.SharedUIComponents.GraphFrame; port: FrameNodePort; }; } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export class PropertyChangedEvent { object: any; property: string; value: any; initialValue: any; allowNullValue?: boolean; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { export class StringTools { private static _SaveAs; private static _Click; /** * Download a string into a file that will be saved locally by the browser * @param document * @param content defines the string to download locally as a file * @param filename */ static DownloadAsFile(document: HTMLDocument, content: string, filename: string): void; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { interface ICheckboxPropertyGridComponentProps { checkbox: BABYLON.GUI.Checkbox; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class CheckboxPropertyGridComponent extends React.Component { constructor(props: ICheckboxPropertyGridComponentProps); render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { interface IColorPickerPropertyGridComponentProps { colorPicker: BABYLON.GUI.ColorPicker; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class ColorPickerPropertyGridComponent extends React.Component { constructor(props: IColorPickerPropertyGridComponentProps); render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { interface ICommonControlPropertyGridComponentProps { controls?: BABYLON.GUI.Control[]; control?: BABYLON.GUI.Control; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class CommonControlPropertyGridComponent extends React.Component { constructor(props: ICommonControlPropertyGridComponentProps); renderGridInformation(control: BABYLON.GUI.Control): JSX.Element | null; render(): JSX.Element | undefined; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { interface IControlPropertyGridComponentProps { control: BABYLON.GUI.Control; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class ControlPropertyGridComponent extends React.Component { constructor(props: IControlPropertyGridComponentProps); render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { interface IEllipsePropertyGridComponentProps { ellipse: BABYLON.GUI.Ellipse; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class EllipsePropertyGridComponent extends React.Component { constructor(props: IEllipsePropertyGridComponentProps); render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { interface IGridPropertyGridComponentProps { grid: BABYLON.GUI.Grid; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class GridPropertyGridComponent extends React.Component { constructor(props: IGridPropertyGridComponentProps); renderRows(): JSX.Element[]; renderColumns(): JSX.Element[]; render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { interface IImageBasedSliderPropertyGridComponentProps { imageBasedSlider: BABYLON.GUI.ImageBasedSlider; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class ImageBasedSliderPropertyGridComponent extends React.Component { constructor(props: IImageBasedSliderPropertyGridComponentProps); render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { interface IImagePropertyGridComponentProps { image: BABYLON.GUI.Image; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class ImagePropertyGridComponent extends React.Component { constructor(props: IImagePropertyGridComponentProps); render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { interface IInputTextPropertyGridComponentProps { inputText: BABYLON.GUI.InputText; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class InputTextPropertyGridComponent extends React.Component { constructor(props: IInputTextPropertyGridComponentProps); render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { interface ILinePropertyGridComponentProps { line: BABYLON.GUI.Line; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class LinePropertyGridComponent extends React.Component { constructor(props: ILinePropertyGridComponentProps); onDashChange(value: string): void; render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { interface IRadioButtonPropertyGridComponentProps { radioButtons: BABYLON.GUI.RadioButton[]; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class RadioButtonPropertyGridComponent extends React.Component { constructor(props: IRadioButtonPropertyGridComponentProps); render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { interface IRectanglePropertyGridComponentProps { rectangle: BABYLON.GUI.Rectangle; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class RectanglePropertyGridComponent extends React.Component { constructor(props: IRectanglePropertyGridComponentProps); render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { interface IScrollViewerPropertyGridComponentProps { scrollViewer: BABYLON.GUI.ScrollViewer; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class ScrollViewerPropertyGridComponent extends React.Component { constructor(props: IScrollViewerPropertyGridComponentProps); render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { interface ISliderPropertyGridComponentProps { slider: BABYLON.GUI.Slider; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class SliderPropertyGridComponent extends React.Component { constructor(props: ISliderPropertyGridComponentProps); render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { interface IStackPanelPropertyGridComponentProps { stackPanel: BABYLON.GUI.StackPanel; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class StackPanelPropertyGridComponent extends React.Component { constructor(props: IStackPanelPropertyGridComponentProps); render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { interface ITextBlockPropertyGridComponentProps { textBlock: BABYLON.GUI.TextBlock; lockObject: INSPECTOR.SharedUIComponents.LockObject; onPropertyChangedObservable?: BABYLON.Observable; } export class TextBlockPropertyGridComponent extends React.Component { constructor(props: ITextBlockPropertyGridComponentProps); render(): JSX.Element; } } declare module INSPECTOR { } declare module INSPECTOR.SharedUIComponents { /** * Class used to provide lock mechanism */ export class LockObject { /** * Gets or set if the lock is engaged */ lock: boolean; } } declare module INSPECTOR { }