/** * Register and trigger actions to be used in project */ declare class Actions { /** * Register an action */ register(action: string, callback: Function): void; /** * Remove a registered action */ remove(action: string): void; /** * Trigger an action */ execute(action: string, value?: any): void; } declare const actions_2: Actions; export { actions_2 as actions } declare interface AreaState { elements: HTMLElement[]; lastFocusedElement: HTMLElement | undefined; } declare type AxisGamepadOptions = { actions: AxisInput[]; type?: 'hold'; callback: ((axes: [number, number]) => void) | string; }; export declare type AxisInput = typeof GamepadMappings.axisAliases[number]; declare type ButtonGamepadOptions = { actions: ButtonInput[]; type?: 'hold' | 'press'; callback: ((buttons: GamepadButton[]) => void) | string; }; export declare type ButtonInput = keyof typeof GamepadMappings.aliases | NumericValues; declare type CustomKeysInput = Partial>; declare type Direction = typeof directions[number]; declare const directions: readonly ["down", "up", "left", "right"]; /** * Makes an element draggable */ declare abstract class DragBase { protected options: DragBaseOptions; protected draggableElements: NodeListOf | HTMLElement[]; protected draggedElement: HTMLElement | null; protected enabled: boolean; protected offset: Offset; protected abstract onMouseDown(e: MouseEvent): void; protected abstract onMouseMove(e: MouseEvent): void; protected abstract onMouseUp(): void; constructor(options: DragBaseOptions); /** * Get the index of the dragged item in the draggableElements */ protected get draggedItemIndex(): number; /** * Gets the body scroll offset to calculate in the dragging */ protected get bodyScrollOffset(): { x: number; y: number; }; protected setPointerOffset(clientX: number, clientY: number, target: HTMLElement): void; } declare interface DragBaseOptions { element: string; restrictTo?: string; dragClass?: string; lockAxis?: 'x' | 'y'; onDragStart?: (element: HTMLElement) => void; onDragMove?: (position: { x: number; y: number; }) => void; onDragEnd?: (element: HTMLElement) => void; } /** * Makes an element draggable */ declare class draggable_2 extends DragBase { readonly actionName: string; private elementRect; private restrict; private touchEvents; private _touchEnabled; constructor(options: DragBaseOptions); /** * Enables or disabled touch events */ set touchEnabled(enabled: boolean); private init; /** * Removes the eventlisteners */ deinit(): void; /** * mousedown event handler */ protected onMouseDown(event: MouseEvent): void; /** * mousemove event handler */ protected onMouseMove(event: MouseEvent): void; /** * mouseup event handler */ protected onMouseUp(): void; /** * Register dragging as an action to be able to use it externally */ private registerDragActions; /** * Removes the registered action */ private removeDragActions; /** * Add touch gestures to drag the element */ private addTouchEvents; /** * Removes the touch gestures */ private removeTouchEvents; /** * Sets the bounds if a dragged element has to be restricted */ private setRestriction; } export { draggable_2 as draggable } declare interface DropEvent { preventDefault: () => void; target: HTMLElement; dropzone: HTMLElement; } /** * Makes an element draggable with dropzones */ declare class dropzone_2 extends DragBase { protected options: DropzoneOptions; readonly actionName: string; readonly automaticAction: string; dropzones: HTMLElement[]; draggedOver: HTMLElement | null; private touchEvents; private _touchEnabled; constructor(options: DropzoneOptions); /** * Enables or disabled touch events */ set touchEnabled(enabled: boolean); private init; /** * Deinitializes the dragging */ deinit(): void; /** * mousedown event handler */ protected onMouseDown(event: MouseEvent): void; /** * mousemove event handler */ protected onMouseMove(event: MouseEvent): void; /** * mouseup event handler */ protected onMouseUp(): void; /** * Handler for the mouseenter event */ protected onMouseEnter(event: MouseEvent): void; /** * Handler for the mouseleave event */ protected onMouseLeave(): void; /** * Register dragging as an action to be able to use it externally */ private registerDragActions; /** * Removes the registered actions */ private removeActions; /** * Adds touch events to the draggable elements */ private addTouchEvents; /** * Removes the touch gestures */ private removeTouchEvents; /** * Automatically drags an element to a dropzone * @param {Object} options * @param {number} options.elementIndex The index of the element you want to move * @param {number} options.dropzoneIndex The index of the dropzone you want to move the element to */ private automaticMove; /** * Saves the dropzones */ private createDropzones; /** * Handler when you drop the dragged item */ private handleDrop; /** * Shifts the element to the nearest empty space */ private shiftElements; } export { dropzone_2 as dropzone } declare interface DropzoneOptions extends DragBaseOptions { dropzones: string[]; dragStyle?: string; dropzoneActiveClass?: string; dropType?: 'switch' | 'add' | 'shift' | 'none' | 'ignore'; onDropZoneEnter?: (element: HTMLElement) => void; onDropZoneLeave?: (element: HTMLElement) => void; onDrop?: (event: DropEvent) => void; } declare type Edge = 'bottom' | 'right' | 'bottomRight'; /** * Gamepad class that handles all gamepad interactions */ declare class Gamepad_2 { private _gamepadEnabled; private _pollingInterval; private pollingIntervalRef?; private _pressedAction; private _pressedButtons; constructor(); /** * Allow gamepads to be connected */ set enabled(isEnabled: boolean); set pollingInterval(interval: number); /** * * @param {Object} options * @param {string[] | number[]} options.actions - Action to trigger the callback. Can be name of button or joystick * @param {'press' | 'hold'} options.type - The type of action to trigger the callback. The available options are hold and press. * @param {function | string} options.callback - Function(s) or action(s) to be triggered on the set action */ on(options: ButtonGamepadOptions): void; on(options: AxisGamepadOptions): void; /** * Removes either an action or a callback from the provided action * @param {Array} actions - Array containing the action you want to remove * @param {string | Function} callback - Callback or action you want to remove */ off(actions: GamepadInput[], callback?: Function | string): void; /** * Loop that handles button presses and axis movement */ private startPolling; private stopPolling; private handleButtons; private handleJoysticks; /** * Convert button aliases to indexes or keep joystick aliases * @param {string | number} action - Actions to convert */ private sanitizeAction; /** * Gets all registered Joystick actions */ private getJoystickActions; /** * Executes the callbacks from the registered action */ private executeCallbacks; } declare const gamepad_2: Gamepad_2; export { gamepad_2 as gamepad } export declare type GamepadInput = ButtonInput | AxisInput; export declare const GamepadMappings: { readonly FACE_BUTTON_DOWN: 0; readonly FACE_BUTTON_RIGHT: 1; readonly FACE_BUTTON_LEFT: 2; readonly FACE_BUTTON_TOP: 3; readonly LEFT_SHOULDER: 4; readonly RIGHT_SHOULDER: 5; readonly LEFT_SHOULDER_BOTTOM: 6; readonly RIGHT_SHOULDER_BOTTOM: 7; readonly SELECT: 8; readonly START: 9; readonly LEFT_ANALOGUE_STICK: 10; readonly RIGHT_ANALOGUE_STICK: 11; readonly PAD_UP: 12; readonly PAD_DOWN: 13; readonly PAD_LEFT: 14; readonly PAD_RIGHT: 15; readonly CENTER_BUTTON: 16; readonly aliases: { readonly 'face-button-down': "FACE_BUTTON_DOWN"; readonly 'face-button-left': "FACE_BUTTON_LEFT"; readonly 'face-button-right': "FACE_BUTTON_RIGHT"; readonly 'face-button-top': "FACE_BUTTON_TOP"; readonly 'left-shoulder': "LEFT_SHOULDER"; readonly 'right-shoulder': "RIGHT_SHOULDER"; readonly 'left-shoulder-bottom': "LEFT_SHOULDER_BOTTOM"; readonly 'right-shoulder-bottom': "RIGHT_SHOULDER_BOTTOM"; readonly select: "SELECT"; readonly start: "START"; readonly 'left-analogue-stick': "LEFT_ANALOGUE_STICK"; readonly 'right-analogue-stick': "RIGHT_ANALOGUE_STICK"; readonly 'pad-up': "PAD_UP"; readonly 'pad-down': "PAD_DOWN"; readonly 'pad-left': "PAD_LEFT"; readonly 'pad-right': "PAD_RIGHT"; readonly 'center-button': "CENTER_BUTTON"; readonly 'playstation.x': "FACE_BUTTON_DOWN"; readonly 'playstation.square': "FACE_BUTTON_LEFT"; readonly 'playstation.circle': "FACE_BUTTON_RIGHT"; readonly 'playstation.triangle': "FACE_BUTTON_TOP"; readonly 'playstation.l1': "LEFT_SHOULDER"; readonly 'playstation.r1': "RIGHT_SHOULDER"; readonly 'playstation.l2': "LEFT_SHOULDER_BOTTOM"; readonly 'playstation.r2': "RIGHT_SHOULDER_BOTTOM"; readonly 'playstation.share': "SELECT"; readonly 'playstation.options': "START"; readonly 'playstation.l3': "LEFT_ANALOGUE_STICK"; readonly 'playstation.r3': "RIGHT_ANALOGUE_STICK"; readonly 'playstation.d-pad-up': "PAD_UP"; readonly 'playstation.d-pad-down': "PAD_DOWN"; readonly 'playstation.d-pad-left': "PAD_LEFT"; readonly 'playstation.d-pad-right': "PAD_RIGHT"; readonly 'playstation.center': "CENTER_BUTTON"; readonly 'xbox.a': "FACE_BUTTON_DOWN"; readonly 'xbox.x': "FACE_BUTTON_LEFT"; readonly 'xbox.b': "FACE_BUTTON_RIGHT"; readonly 'xbox.y': "FACE_BUTTON_TOP"; readonly 'xbox.lb': "LEFT_SHOULDER"; readonly 'xbox.rb': "RIGHT_SHOULDER"; readonly 'xbox.lt': "LEFT_SHOULDER_BOTTOM"; readonly 'xbox.rt': "RIGHT_SHOULDER_BOTTOM"; readonly 'xbox.view': "SELECT"; readonly 'xbox.menu': "START"; readonly 'xbox.left-thumbstick': "LEFT_ANALOGUE_STICK"; readonly 'xbox.right-thumbstick': "RIGHT_ANALOGUE_STICK"; readonly 'xbox.d-pad-up': "PAD_UP"; readonly 'xbox.d-pad-down': "PAD_DOWN"; readonly 'xbox.d-pad-left': "PAD_LEFT"; readonly 'xbox.d-pad-right': "PAD_RIGHT"; readonly 'xbox.center': "CENTER_BUTTON"; }; readonly axisAliases: readonly ["right.joystick", "left.joystick", "left.joystick.down", "left.joystick.up", "left.joystick.left", "left.joystick.right", "right.joystick.down", "right.joystick.up", "right.joystick.left", "right.joystick.right"]; }; declare type GestureDirection = 'top' | 'bottom' | 'left' | 'right' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right'; declare interface GestureEventData { x: number; y: number; target: EventTarget | null; currentTarget: EventTarget | null; } /** * Keyboard class that handles all keyboard interactions */ declare class Keyboard { private eventListenerAttached; private keysPressed; constructor(); /** * Registers keyboard event listeners * @param options - Configuration object * @param options.keys - Array of keys (e.g., ['A', 'SHIFT']) or key codes * @param options.callback - Function or action name to execute * @param options.type - Event type(s): 'press', 'hold', or 'lift' (can be single or array) */ on(options: KeyboardOptions): void; /** * Removes either a key combination or a callback from the provided key combination * @param keys - Key combination you want to remove (e.g., ['A', 'SHIFT']) * @param callback - Optional specific callback or action to remove */ off(keys: KeyboardKey[], callback?: string | Function): void; /** * Handles when key is pressed */ private onKeyDown; /** * Handles when key is released */ private onKeyUp; /** * Convert keyCode to string representing key */ private keyCodeToString; /** * Removes duplicates and converts KeyCodes to valid KeyName strings */ private normalizeKeys; /** * Executes the registered callbacks. Has to be invoked from the onKeyDown and onKeyUp functions * @param {KeyboardEvent} event * @param {Object} registeredKeys * @param {string[]} registeredKeys.keys - Array of keys you want to use, allows only combination of modifier and regular keys * @param {(function | string)[]} registeredKeys.callbacks - Functions or actions to be executed on the key combination * @param {('press'|'hold'|'lift')} registeredKeys.type - Type of key action you want to use. */ private executeCallbacks; } declare const keyboard_2: Keyboard; export { keyboard_2 as keyboard } declare type KeyboardEventType = 'press' | 'hold' | 'lift'; export declare type KeyboardKey = KeyName | KeyCode; export declare const KeyboardMappings: { readonly ALT: 18; readonly ARROW_DOWN: 40; readonly ARROW_LEFT: 37; readonly ARROW_RIGHT: 39; readonly ARROW_UP: 38; readonly BACKSPACE: 8; readonly CAPS_LOCK: 20; readonly CTRL: 17; readonly DELETE: 46; readonly END: 35; readonly ENTER: 13; readonly ESC: 27; readonly F1: 112; readonly F2: 113; readonly F3: 114; readonly F4: 115; readonly F5: 116; readonly F6: 117; readonly F7: 118; readonly F8: 119; readonly F9: 120; readonly F10: 121; readonly F11: 122; readonly F12: 123; readonly HOME: 36; readonly INSERT: 45; readonly NUM_LOCK: 144; readonly NUMPAD_ENTER: 13; readonly NUMPAD_DASH: 109; readonly NUMPAD_STAR: 106; readonly NUMPAD_DOT: 110; readonly NUMPAD_FORWARD_SLASH: 111; readonly NUMPAD_PLUS: 107; readonly NUMPAD_0: 96; readonly NUMPAD_1: 97; readonly NUMPAD_2: 98; readonly NUMPAD_3: 99; readonly NUMPAD_4: 100; readonly NUMPAD_5: 101; readonly NUMPAD_6: 102; readonly NUMPAD_7: 103; readonly NUMPAD_8: 104; readonly NUMPAD_9: 105; readonly PAGE_DOWN: 34; readonly PAGE_UP: 33; readonly PAUSE: 19; readonly PRINT_SCRN: 44; readonly SCROLL_LOCK: 145; readonly SHIFT: 16; readonly SPACEBAR: 32; readonly TAB: 9; readonly A: 65; readonly B: 66; readonly C: 67; readonly D: 68; readonly E: 69; readonly F: 70; readonly G: 71; readonly H: 72; readonly I: 73; readonly J: 74; readonly K: 75; readonly L: 76; readonly M: 77; readonly N: 78; readonly O: 79; readonly P: 80; readonly Q: 81; readonly R: 82; readonly S: 83; readonly T: 84; readonly U: 85; readonly V: 86; readonly W: 87; readonly X: 88; readonly Y: 89; readonly Z: 90; readonly 1: 49; readonly 2: 50; readonly 3: 51; readonly 4: 52; readonly 5: 53; readonly 6: 54; readonly 7: 55; readonly 8: 56; readonly 9: 57; readonly 0: 48; readonly QUOTE: 222; readonly DASH: 189; readonly COMMA: 188; readonly DOT: 190; readonly FORWARD_SLASH: 191; readonly SEMI_COLON: 186; readonly SQUARE_BRACKET_LEFT: 219; readonly SQUARE_BRACKET_RIGHT: 221; readonly BACKWARD_SLASH: 220; readonly BACKTICK: 192; readonly EQUAL: 187; readonly SYSTEM: 91; }; declare type KeyboardOptions = { keys: KeyboardKey[]; callback: string | Function; type?: KeyboardEventType | KeyboardEventType[]; }; export declare type KeyCode = (typeof KeyboardMappings)[KeyName]; export declare type KeyName = `${keyof typeof KeyboardMappings}`; declare interface NavigableArea { area: string; elements: (string | HTMLElement)[]; } declare type NavigationInput = (string | HTMLElement)[] | NavigableArea[]; declare type NumericValues = { [K in keyof T]: T[K] extends number ? T[K] : never; }[keyof T]; declare interface Offset { x: number; y: number; } /** * 2D coordinate point */ declare interface Point { /** Horizontal position */ x: number; /** Vertical position */ y: number; } /** * Allows you to resize elements on the screen */ declare class resize_2 { private options; resizableElement: HTMLElement; enabled: boolean; activeEdge: Edge | null; edges: { bottom: HTMLElement | null; right: HTMLElement | null; bottomRight: HTMLElement | null; }; private elementRect; readonly heightAction: string; readonly widthAction: string; private touchEvents; private _touchEnabled; constructor(options: ResizeOptions); /** * Enables or disabled touch events */ set touchEnabled(enabled: boolean); /** * Initializes the resizing */ private init; /** * Deinitilazes the resizing */ deinit(): void; /** * Handles the mousedown event */ private onMouseDown; /** * Handles the mousemove event */ private onMouseMove; /** * Handles the mouseup event */ private onMouseUp; /** * Adds the touch events to fire the actions */ private addTouchEvents; /** * Removes the touch events */ private removeTouchEvents; /** * Sets the active edge when resizing. If there is no edge it returns null */ private setEdge; /** * Checks if the element you are trying to resize has already position relative or absolute set, so it doesn't overwrite them */ private checkPosition; /** * Creates the edge elements and appends them to the resizable element */ private addEdges; /** * Removes the edge elements */ private removeEdges; /** * Registers actions */ private registerActions; /** * Removes the registered actions */ private removeActions; } export { resize_2 as resize } declare interface ResizeOptions { element: string; edgeWidth?: number; onWidthChange?: (width: number) => void; onHeightChange?: (height: number) => void; widthMin?: number; widthMax?: number; heightMin?: number; heightMax?: number; } /** * Allows for an element to be rotated */ declare class rotate_2 { private options; rotatingElement: HTMLElement | null; elementPosition: { x: number; y: number; }; angle: number; enabled: boolean; initalAngle: number; readonly actionName: string; private touchEvents; private _touchEnabled; constructor(options: RotateOptions); /** * Enables or disabled touch events */ set touchEnabled(enabled: boolean); /** * Initializes the rotation */ private init; /** * Deinitilizes the rotation */ deinit(): void; /** * Handles the mousedown event */ private onMouseDown; /** * Handles the mousemove event */ private onMouseMove; /** * Handles the mouseup event */ private onMouseUp; /** * Registers the actions */ private registerAction; /** * Removes the action */ private removeActions; /** * Add rotate touch events */ private addTouchEvents; /** * Removes the touch events */ private removeTouchEvents; /** * Finds the angle from the mouse coordinates based on the center of the element that is rotating */ private getAngle; } export { rotate_2 as rotate } declare interface RotateOptions { element: string; /** Snaps the rotating element to increments of that angle */ snapAngle?: number; onRotation?: (angle: number) => void; } /** * Spatial Navigation for keyboard and controller */ declare class SpatialNavigation { enabled: boolean; areas: Record; registeredKeys: Set<"ALT" | "ARROW_DOWN" | "ARROW_LEFT" | "ARROW_RIGHT" | "ARROW_UP" | "BACKSPACE" | "CAPS_LOCK" | "CTRL" | "DELETE" | "END" | "ENTER" | "ESC" | "F1" | "F2" | "F3" | "F4" | "F5" | "F6" | "F7" | "F8" | "F9" | "F10" | "F11" | "F12" | "HOME" | "INSERT" | "NUM_LOCK" | "NUMPAD_ENTER" | "NUMPAD_DASH" | "NUMPAD_STAR" | "NUMPAD_DOT" | "NUMPAD_FORWARD_SLASH" | "NUMPAD_PLUS" | "NUMPAD_0" | "NUMPAD_1" | "NUMPAD_2" | "NUMPAD_3" | "NUMPAD_4" | "NUMPAD_5" | "NUMPAD_6" | "NUMPAD_7" | "NUMPAD_8" | "NUMPAD_9" | "PAGE_DOWN" | "PAGE_UP" | "PAUSE" | "PRINT_SCRN" | "SCROLL_LOCK" | "SHIFT" | "SPACEBAR" | "TAB" | "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" | "J" | "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" | "S" | "T" | "U" | "V" | "W" | "X" | "Y" | "Z" | "QUOTE" | "DASH" | "COMMA" | "DOT" | "FORWARD_SLASH" | "SEMI_COLON" | "SQUARE_BRACKET_LEFT" | "SQUARE_BRACKET_RIGHT" | "BACKWARD_SLASH" | "BACKTICK" | "EQUAL" | "SYSTEM" | "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9">; private clearCurrentActiveKeys; private overlapPercentage; lastFocusedElement: HTMLElement | undefined | null; paused: boolean; activeKeys: { [K in Direction]: KeyName[]; }; /** * Initializes the spatial navigation * @param {string[]|Object[]|HTMLElement[]} navigableElements - Array of selector strings, objects with area/elements, or HTMLElement references * @param {string} navigableElements[].area - Name of the navigation area * @param {(string|HTMLElement)[]} navigableElements[].elements - Array of selector strings or HTMLElement references * @param {number} overlap - Overlap percentage (0-1) for determining if elements are on the same axis * @example * // Using selector strings * spatialNavigation.init(['.menu-item', '#header']); * * // Using HTMLElement references * spatialNavigation.init([element1, element2]); * * // Using object syntax with mixed selectors and HTMLElements * spatialNavigation.init([ * { area: 'menu', elements: ['.item', element1, '#button'] } * ]); */ init(navigableElements?: NavigationInput, overlap?: number): void; /** * Deinitialize the spatial navigation */ deinit(): void; /** * Add new elements to area or new area * @param {string[]|Object[]|HTMLElement[]} navigableElements - Array of selector strings, objects with area/elements, or HTMLElement references * @param {string} navigableElements[].area - Name of the navigation area * @param {(string|HTMLElement)[]} navigableElements[].elements - Array of selector strings or HTMLElement references * @example * // Add selector strings to default area * spatialNavigation.add(['.new-item']); * * // Add HTMLElement references to default area * spatialNavigation.add([element1, element2]); * * // Add to named area with mixed types * spatialNavigation.add([ * { area: 'sidebar', elements: ['.link', element1] } * ]); */ add(navigableElements: NavigationInput): void; /** * Remove an area from the focusable groups * @param area area to be removed */ remove(area?: string): void; /** * Gets the last focused element from the specified area * @param area */ getLastFocused(area?: string): HTMLElement | undefined; /** * Returns the structure of the default area */ private createDefaultAreaState; private syncLastFocused; /** * Get elements from selector and save them to the default group * @param navArea */ private handleString; /** * Gets elements from object and saves them to a focusable group * @param {Object} navArea - Navigation area configuration * @param {string} navArea.area - Name of the navigation area * @param {(string|HTMLElement)[]} navArea.elements - Array of selector strings or HTMLElement references */ private handleObject; /** * @param area - The area to set the properties for * @param domElements - The elements to be added to the area */ private setNavigationAreaProperties; /** * Sets the tabindex of the element that needs to be focused * @param element */ private makeFocusable; /** * Returns the valid focusable elements in the navigable area * @param {HTMLElement} targetElement * @param {HTMLElement[]} elements */ private getFocusableGroup; /** * Checks if the passed element is within a group and returns the rest of the elements in the group * @param {HTMLElement} targetElement * @returns {NavigationObject[]} */ private getCurrentArea; /** * Gets the element closest to the opposite edge of the navigation direction * @param {string} direction * @param {NavigationObject[]} elements * @param {Object} focusedElement * @param {number} focusedElement.x * @param {number} focusedElement.y */ private getClosestToEdge; /** * Moves the focus in the desired direction * @param {string} direction */ private moveFocus; /** Filters the focusable group by the relevant axis by chacking for same axis overlap */ private filterGroupByCurrentAxis; /** Compares the Y coordinates of two elements and checks for overlap by the specified overlap value */ private isOverlappingX; /** Compares the X coordinates of two elements and checks for overlap by the specified overlap value */ private isOverlappingY; /** Returns the next element to focus within the group */ private findNextElement; /** * Get the angle range for the direction */ private getDirectionAngle; /** * Registers actions and adds them to the keyboard and gamepad objects */ private registerKeyActions; /** * Resets to the original keys state */ resetKeys(): void; /** * Adds or override default direction keys with the specified ones * @param {Object} customDirections - { up: 'W', left: 'A', right: 'D', down: 'S' } * @param options.clearCurrentActiveKeys - If true, overrides all keys. Defaults to false. */ changeKeys(customDirections: CustomKeysInput, options?: { clearCurrentActiveKeys: boolean; }): void; /** * Removes the added actions */ private removeKeyActions; /** * Focuses on the first element in a focusable area */ focusFirst(area?: string): void; /** * Focuses on the last element in a focusable area */ focusLast(area?: string): void; /** * Changes focus to another area by focusing on the last focused element in that area. If no element has previously been focused, it will focus the first available element. */ switchArea(area: string): void; /** * Checks if a given element is in a focusable area */ private isElementInGroup; /** * Checks if the currently active element is in a focusable area */ private isActiveElementInGroup; /** * Removes the focus from a focused element in a group */ clearFocus(): void; /** * Pauses the spatial navigation functionality */ pause(): void; /** * Resumes the spatial navigation functionality */ resume(): void; } declare const spatialNavigation_2: SpatialNavigation; export { spatialNavigation_2 as spatialNavigation } /** * TouchGestures class that handles all of the touch interactions and gestures */ declare class TouchGestures { activeTouches: Map; /** * Hold gesture - triggers after holding for specified time * @param {Object} options * @param {HTMLElement | string} options.element - Element you want to attach the touch event to * @param {function} options.callback - Function to be executed on touch * @param {number} [options.time=1000] - Time in milliseconds for the press */ hold(options: { element: HTMLElement | string; callback: Function; time: number; }): void | { /** * Removes the event listeners */ remove(): void; }; /** * Tap gesture - single or multi-tap detection * @param {Object} options * @param {HTMLElement | string} options.element - Element you want to attach the touch event to * @param {function} options.callback - Function to be executed on touch * @param {number} [options.tapsNumber=1] - Number of taps necessary for the callback to be executed * @param {number} [options.tapTime=200] - Time in milliseconds between putting down the finger and lifting it up * @param {number} [options.betweenTapsTime=500] - Time in milliseconds between two sequential taps */ tap(options: { element: HTMLElement | string; callback: Function; tapsNumber: number; tapTime: number; betweenTapsTime: number; }): void | { /** * Removes the event listeners */ remove(): void; }; /** * Drag gesture - tracks touch movement * @param {Object} options * @param {HTMLElement | string} options.element - Element you want to attach the touch event to * @param {function} options.onDragStart - Function to be executed on drag start * @param {function} options.onDrag - Function to be executed on drag * @param {function} options.onDragEnd - Function to be executed on drag end */ drag(options: { element: HTMLElement | string; onDragStart: (event: GestureEventData) => void; onDrag: (position: { x: number; y: number; }) => void; onDragEnd: (position: { x: number; y: number; }) => void; }): void | { /** * Removes the event listeners */ remove(): void; }; /** * Swipe gesture - detects directional swipes * @param {Object} options * @param {HTMLElement | string} options.element - Element you want to attach the touch event to * @param {function} options.callback - Function to be executed on touch- Directions of the swipe * @param {number} options.touchNumber - Number of fingers necessary for the swipe */ swipe(options: { element: HTMLElement | string; callback: (direction?: GestureDirection) => void; touchNumber: number; }): void | { /** * Removes the event listeners */ remove(): void; }; /** * Pinch gesture - two-finger pinch zoom * @param {Object} options * @param {HTMLElement | string} options.element - Element you want to attach the touch event to * @param {function} options.callback - Function to be executed on touch */ pinch(options: { element: HTMLElement | string; callback: ({ pinchDelta, midpoint }: { pinchDelta: number; midpoint: Point; }) => void; }): void | { /** * Removes the event listeners */ remove(): void; }; /** * * @param {Object} options * @param {HTMLElement | string} options.element - Element you want to attach the touch event to * @param {function} options.callback - Function to be executed on touch */ rotate(options: { element: HTMLElement | string; callback: (angle: number) => void; }): void | { /** * Removes the event listeners */ remove(): void; }; } declare const touchGestures_2: TouchGestures; export { touchGestures_2 as touchGestures } /** * Pan and zoom */ declare class zoom_2 { private options; enabled: boolean; readonly actionName: string; offset: { x: number; y: number; }; transform: { x: number; y: number; scale: number; }; private touchEvents; zoomableElement: HTMLElement; private _touchEnabled; constructor(options: ZoomOptions); /** * Enables or disabled touch events */ set touchEnabled(enabled: boolean); /** * Initialize the pan and zoom */ private init; /** * Deinitilize the pan and zoom */ deinit(): void; /** * Handles the wheel event */ private onWheel; /** * Registers the actions for the pan and zoom */ private registerActions; /** * Removes the registered actions */ private removeActions; /** * Add pinch and stretch touch events */ private addTouchEvents; /** * Removes the touch events */ private removeTouchEvents; /** * Calculates the mouse coordinates inside the element */ private calculateOffsets; } export { zoom_2 as zoom } declare interface ZoomOptions { element: string; minZoom: number; maxZoom: number; zoomFactor: number; onZoom: Function; } export { }