flipper-plugin
Version:
Flipper Desktop plugin SDK and components
114 lines • 3.67 kB
TypeScript
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
*/
import React from 'react';
import type { Rect } from '../utils/Rect';
type CursorState = {
top: number;
left: number;
};
type ResizingSides = {
left?: boolean;
top?: boolean;
bottom?: boolean;
right?: boolean;
} | null | undefined;
export type InteractiveProps = {
isMovableAnchor?: (event: React.MouseEvent) => boolean;
onMoveStart?: () => void;
onMoveEnd?: () => void;
onMove?: (top: number, left: number, event: MouseEvent) => void;
id?: string;
movable?: boolean;
hidden?: boolean;
moving?: boolean;
grow?: boolean;
siblings?: Partial<{
[key: string]: Rect;
}>;
updateCursor?: (cursor?: string | null | undefined) => void;
zIndex?: number;
top?: number;
left?: number;
minTop?: number;
minLeft?: number;
width?: number | string;
height?: number | string;
minWidth?: number;
minHeight?: number;
maxWidth?: number;
maxHeight?: number;
onCanResize?: (sides: ResizingSides) => void;
onResizeStart?: () => void;
onResizeEnd?: () => void;
onResize?: (width: number, height: number) => void;
resizing?: boolean;
resizable?: boolean | ResizingSides;
innerRef?: (elem: HTMLElement | null) => void;
style?: Object;
className?: string;
children?: React.ReactNode;
gutterWidth?: number;
};
type InteractiveState = {
moving: boolean;
movingInitialProps: InteractiveProps | null | undefined;
movingInitialCursor: CursorState | null | undefined;
cursor: string | undefined;
resizingSides: ResizingSides;
couldResize: boolean;
resizing: boolean;
resizingInitialRect: Rect | null | undefined;
resizingInitialCursor: CursorState | null | undefined;
};
export declare class Interactive extends React.Component<InteractiveProps, InteractiveState> {
constructor(props: InteractiveProps, context: Object);
globalMouse: boolean;
ref?: HTMLElement | null;
nextTop?: number | null;
nextLeft?: number | null;
nextEvent?: MouseEvent | null;
static defaultProps: {
minHeight: number;
minLeft: number;
minTop: number;
minWidth: number;
};
onMouseMove: (event: MouseEvent) => void;
startAction: (event: React.MouseEvent) => void;
startTitleAction(event: React.MouseEvent): void;
startMoving(event: React.MouseEvent): void;
getPossibleTargetWindows(rect: Rect): Rect[];
startWindowAction(event: React.MouseEvent): void;
startResizeAction(event: React.MouseEvent): void;
componentDidUpdate(_prevProps: InteractiveProps, prevState: InteractiveState): void;
resetMoving(): void;
resetResizing(): void;
componentWillUnmount(): void;
endAction: () => void;
onMouseLeave: () => void;
onClick: (e: React.MouseEvent) => void;
calculateMove(event: MouseEvent): void;
resize(width: number, height: number): void;
move(top: number, left: number, event: MouseEvent): void;
calculateResize(event: MouseEvent): void;
getRect(): Rect;
getResizable(): ResizingSides;
checkIfResizable(event: MouseEvent): {
left: boolean;
right: boolean;
top: boolean;
bottom: boolean;
} | undefined;
calculateResizable(event: MouseEvent): void;
setRef: (ref: HTMLElement | null) => void;
onLocalMouseMove: (event: React.MouseEvent) => void;
render(): JSX.Element;
}
export {};
//# sourceMappingURL=Interactive.d.ts.map