/** @packageDocumentation * @module Base */ import * as React from "react"; import { Point, PointProps, SizeProps } from "@bentley/ui-core"; import { PanelSide } from "../widget-panels/Panel"; import { FloatingWidgetResizeHandle } from "../widget/FloatingWidget"; import { Event } from "./Event"; import { TabState, WidgetState } from "./NineZoneState"; /** @internal */ export interface DragItemDragStartArgs { initialPointerPosition: Point; } /** @internal */ export interface DragTabDragStartArgs extends DragItemDragStartArgs { widgetSize: SizeProps; } /** @internal */ export interface UseDragTabArgs { tabId: TabState["id"]; onDrag?: (dragBy: PointProps) => void; onDragEnd?: (target: DragTarget | undefined, widgetSize: SizeProps) => void; } /** @internal */ export declare function useDragTab(args: UseDragTabArgs): ({ initialPointerPosition, widgetSize }: DragTabDragStartArgs) => void; declare type UpdateWidgetDragItemFn = (id: WidgetDragItem["id"]) => void; /** @internal */ export interface UseDragWidgetArgs { widgetId: WidgetState["id"]; onDragStart?: (updateWidgetId: UpdateWidgetDragItemFn, initialPointerPosition: PointProps) => void; onDrag?: (dragBy: PointProps) => void; onDragEnd?: (target: DragTarget | undefined) => void; } /** @internal */ export declare function useDragWidget(args: UseDragWidgetArgs): ({ initialPointerPosition }: DragItemDragStartArgs) => void; /** @internal */ export interface UseDragPanelGripArgs { side: PanelSide; onDrag?: (pointerPosition: Point, lastPointerPosition: Point) => void; onDragEnd?: () => void; } /** @internal */ export declare function useDragPanelGrip(args: UseDragPanelGripArgs): ({ initialPointerPosition }: DragItemDragStartArgs) => void; /** @internal */ export interface UseDragResizeHandleArgs { widgetId: WidgetState["id"]; handle: FloatingWidgetResizeHandle; onDrag?: (pointerPosition: Point) => void; } /** @internal */ export declare function useDragResizeHandle(args: UseDragResizeHandleArgs): ({ initialPointerPosition }: DragItemDragStartArgs) => void; /** @internal */ export interface UseDragToolSettingsArgs { newWidgetDragItemId: WidgetDragItem["id"]; } /** @internal */ export declare function useDragToolSettings(args: UseDragToolSettingsArgs): ({ initialPointerPosition }: DragItemDragStartArgs) => void; /** @internal */ export interface UseTabTargetArgs { widgetId: WidgetState["id"]; tabIndex: number; } /** @internal */ export declare function useTabTarget(args: UseTabTargetArgs): [ React.Ref, boolean ]; /** @internal */ export interface UsePanelTargetArgs { side: PanelSide; } /** @internal */ export declare function usePanelTarget(args: UsePanelTargetArgs): [ React.Ref, boolean ]; /** @internal */ export interface UseWidgetTargetArgs { side: PanelSide; widgetIndex: number; } /** @internal */ export declare function useWidgetTarget(args: UseWidgetTargetArgs): [ React.Ref, boolean ]; /** @internal */ export interface UseDragItemArgs { item: T; isDragItem?: (item: T | undefined, dragged: DragItem) => boolean; onDragStart?: DragEventHandler; onDrag?: DragEventHandler; onDragEnd?: DragEventHandler; } /** @internal */ export declare function useDragItem(args: UseDragItemArgs): (info: DragItemInfo) => void; /** @internal */ export declare function useIsDragged(callback: () => boolean): boolean; /** @internal */ export declare function useIsDraggedItem(item: DragItem): boolean; /** @internal */ export declare function useIsDraggedType(type: DragItem["type"]): boolean; /** @internal */ export declare function useDraggedItemId(type: T["type"]): T["id"] | undefined; /** @internal */ export interface DragProviderProps { children?: React.ReactNode; } /** @internal */ export declare const DragProvider: React.NamedExoticComponent; interface TabDragItem { type: "tab"; id: TabState["id"]; } interface WidgetDragItem { type: "widget"; id: WidgetState["id"]; } interface PanelGripDragItem { type: "panelGrip"; id: PanelSide; } interface ResizeHandleDragItem { type: "resizeHandle"; id: FloatingWidgetResizeHandle; widgetId: WidgetState["id"]; } declare type DragItem = TabDragItem | WidgetDragItem | PanelGripDragItem | ResizeHandleDragItem; interface TabTarget { type: "tab"; widgetId: WidgetState["id"]; tabIndex: number; } interface PanelTarget { type: "panel"; side: PanelSide; } interface WidgetTarget { type: "widget"; side: PanelSide; widgetIndex: number; } /** @internal */ export declare type DragTarget = TabTarget | PanelTarget | WidgetTarget; /** @internal */ export declare function isTabTarget(target: DragTarget): target is TabTarget; interface BaseDragItemInfo { initialPointerPosition: Point; lastPointerPosition: Point; pointerPosition: Point; } interface TabDragItemInfo extends BaseDragItemInfo { widgetSize: SizeProps; } declare type DragItemInfo = BaseDragItemInfo | TabDragItemInfo; interface HandleDragStartArgs { item: DragItem; info: DragItemInfo; } declare type DragEventHandler = (item: DragItem, info: DragItemInfo, target: DragTarget | undefined) => void; /** @internal */ export declare class DragManager { private _dragged; private _onDragStartEmitter; private _onDragEmitter; private _onDragEndEmitter; isDragged(item: DragItem): boolean; isDraggedType(type: DragItem["type"]): boolean; getDraggedIdOfType(type: T["type"]): T["id"] | undefined; get onDragStart(): Event; get onDrag(): Event; get onDragEnd(): Event; handleDragStart({ item, info }: HandleDragStartArgs): void; handleDrag(x: number, y: number): void; handleDragEnd(): void; handleTargetChanged(target: DragTarget | undefined): void; } /** @internal */ export declare const DragManagerContext: React.Context; /** @internal */ export declare const DraggedWidgetIdContext: React.Context; /** @internal */ export declare const DraggedPanelSideContext: React.Context; /** @internal */ export declare const DraggedResizeHandleContext: React.Context; export {}; //# sourceMappingURL=DragManager.d.ts.map