Files
JiboOs/docs/rendering/gui/TouchManager.js
2026-03-16 13:53:01 +02:00

282 lines
7.7 KiB
JavaScript

/**
* @typedef jibo.face.views~GESTURE
* @description Static class with static members that describe possible types of gestures
* @prop TAP Gesture type for a single tap
* @prop SWIPE_DOWN Gesture type for a swipe down
* @prop SWIPE Old name for SWIPE_DOWN
* @prop SWIPE_UP Gesture type for a swipe up
* @prop PAN Gesture type for a pan.
*/
/**
* Gets singleton instance of TouchManager.
* @name jibo.face.views.TouchManager#instance
* @type {jibo.face.views.TouchManager}
* @readonly
*/
/**
* Instance used for singleton.
* @name jibo.face.views.TouchManager._instance
* @type {jibo.face.views.TouchManager}
* @private
*/
/**
* Threshold of movemnent between gesture types.
* @type {number}
* @name jibo.face.views.TouchManager.THRESHOLD
* @readOnly
* @private
*/
/**
* Pixi interaction manager reference.
* @type {PIXI.interation.TouchManager}
* @name jibo.face.views.TouchManager#_interactionManager
* @private
*/
/**
* Reference to canvas element.
* @type {Object}
* @name jibo.face.views.TouchManager#_canvas
* @private
*/
/**
* Reference to GestureManager instance.
* @type {jibo.face.GestureManager}
* @name jibo.face.views.TouchManager#_gestureManager
* @private
*/
/**
* Reference to ViewManager instance.
* @type {jibo.face.views}
* @name jibo.face.views.TouchManager#_viewManager
* @private
*/
/**
* Reference to the tap gesture.
* @name jibo.face.views.TouchManager#_tapGesture
* @type {HammerJS.Tap}
* @private
*/
/**
* Reference to the swipe down gesture.
* @name jibo.face.views.TouchManager#_swipeDownGesture
* @type {HammerJS.Swipe}
* @private
*/
/**
* Reference to the swipe up gesture.
* @name jibo.face.views.TouchManager#_swipeUpGesture
* @type {HammerJS.Swipe}
* @private
*/
/**
* Reference to the pan horizontal gesture.
* @name jibo.face.views.TouchManager#_panHorizontalGesture
* @type {HammerJS.Pan}
* @private
*/
/**
* Object (PIXI.interaction.InteractionEvent) used to pass input position for PIXI hit testing.
* @name jibo.face.views.TouchManager#_interactionEvent
* @type {any}
* @private
*/
/**
* Holds reference to element most recently hit.
* @name jibo.face.views.TouchManager#_elementHit
* @type {jibo.face.views.Element}
* @private
*/
/**
* Flag for whether in simulator or not.
* @name jibo.face.views.TouchManager#_isSim
* @type {boolean}
* @private
*/
/**
* Value holding the latest X coordinate when emulating panning.
* @name jibo.face.views.TouchManager#_prevX
* @type {Number}
* @private
*/
/**
* Value holding the latest Y coordinate when emulating panning.
* @name jibo.face.views.TouchManager#_prevY
* @type {Number}
* @private
*/
/**
* Flag indicating current state of pan emulation.
* @name jibo.face.views.TouchManager#_isEmulatingPan
* @type {boolean}
* @private
*/
/**
* Flag indicating whether user has his finger on the screen
* This flag is set only on real Jibo and only by core event listener
* @name jibo.face.views.TouchManager#_isMouseDown
* @type {boolean}
* @private
*/
/**
* Remove gesture by type.
* @method jibo.face.views.TouchManager#addGesture
* @param {jibo.face.views.GESTURE} [gesture = 'tap'] - type of gesture to remove.
* @param {Function} [gestureEventCallback] - For use with Pan gesture, handler called on each pan event.
*/
/**
* Remove gesture by type.
* @method jibo.face.views.TouchManager#removeGesture
* @param {jibo.face.views.GESTURE} [gesture = 'tap'] - type of gesture to remove.
*/
/**
* Remove all possible TouchManager gestures.
* @method jibo.face.views.TouchManager#removeAllGestures
*/
/**
* Create gestures required by Component tree.
* NOTE :: Does not create pan gesture, must be created by Component that requires it.
* @method jibo.face.views.TouchManager#createRequiredGestures
* @param view {jibo.face.views.View} View to create gestures for.
*/
/**
* Destroy.
* @method jibo.face.views.TouchManager#destroy
*/
/**
* Add listener for input exiting viewport.
* @method jibo.face.views.TouchManager#addViewportOut
* @private
*/
/**
* Remove listener for input exiting viewport.
* @method jibo.face.views.TouchManager#removeViewportOut
* @private
*/
/**
* Create listener for input exiting viewport.
* @method jibo.face.views.TouchManager#createViewportOut
* @private
*/
/**
* Add listeners that will track core mouse events.
* We need them to emulate panning in those cases when user started panning outside of the touch screen.
* @method jibo.face.views.TouchManager#addCoreTouchEvents
* @private
*/
/**
* Remove listeners for core mouse events.
* @method jibo.face.views.TouchManager#removeCoreTouchEvents
* @private
*/
/**
* Listener of mouse core events that we might need to determine if user
* has started panning outside of the screen
* @method jibo.face.views.TouchManager#onCoreTouchEvent
* @private
*/
/**
* Set the input coordinates and clear the target.
* @method jibo.face.views.TouchManager#resetInput
* @param {Number} x - x poisition
* @param {Number} y - y position
* @private
*/
/**
* Create a gesture for tap.
* Refer to HammerJS documentation for Tap values {@link http://hammerjs.github.io/recognizer-tap}
* @method jibo.face.views.TouchManager#createTapGesture
* @returns {boolean} `true` if a new gesture was created.
* @private
*/
/**
* Handler for tap complete event.
* @method jibo.face.views.TouchManager#tapHandler
* @param gestureEvent {any}
* @private
*/
/**
* Find Element within View whose display was tapped.
* @param {jibo.face.views.View} currentView - View to check.
* @returns {boolean}
* @private
*/
/**
* Function required by PIXI processInteractive method, create method to speed up process
* @method jibo.face.views.TouchManager#checkElementHit
* @param {any} event - PIXI.interactive.InteractionEvent passed from Pixi's hit test
* @param {PIXI.DisplayObject} displayObject - dis
* @param {boolean} hit - Flag for hit test against display object
* @private
*/
/**
* Create a gesture for swipe down.
* @method jibo.face.views.TouchManager#createSwipeDownGesture
* @returns {boolean} `true` if a new gesture was created.
* @private
*/
/**
* Handler for swipe down complete event.
* Currently only activates for Views.
* @method jibo.face.views.TouchManager#swipeDownHandler
* @param gestureEvent {any}
* @private
*/
/**
* Create a gesture for swipe up.
* @method jibo.face.views.TouchManager#createSwipeUpGesture
* @returns {boolean} `true` if a new gesture was created.
* @private
*/
/**
* Handler for swipe up complete event.
* Currently only activates for Views.
* @method jibo.face.views.TouchManager#swipeUpHandler
* @param gestureEvent {any}
* @private
*/
/**
* Create a gesture for horizontal pan.
* @method jibo.face.views.TouchManager#createPanHorizontalGesture
* @param {Object} gestureEventCallback
* @returns {boolean} `true` if a new gesture was created.
* @private
*/