( eventType: string, region: any, callback?: (pointer: Pointer) => boolean | void, )
| 762 | * me.input.releasePointerEvent('pointerdown', this); |
| 763 | */ |
| 764 | export function releasePointerEvent( |
| 765 | eventType: string, |
| 766 | region: any, |
| 767 | callback?: (pointer: Pointer) => boolean | void, |
| 768 | ): void { |
| 769 | if (pointerEventList.indexOf(eventType) === -1) { |
| 770 | throw new Error(`invalid event type : ${eventType}`); |
| 771 | } |
| 772 | |
| 773 | // convert to supported event type if pointerEvent not natively supported |
| 774 | const eventTypes = findAllActiveEvents( |
| 775 | activeEventList, |
| 776 | pointerEventMap[eventType], |
| 777 | ); |
| 778 | |
| 779 | const handlers = eventHandlers.get(region); |
| 780 | if (typeof handlers !== "undefined") { |
| 781 | for (let i = 0; i < eventTypes.length; i++) { |
| 782 | const eventType = eventTypes[i]; |
| 783 | if (handlers.callbacks[eventType]) { |
| 784 | if (typeof callback !== "undefined") { |
| 785 | remove(handlers.callbacks[eventType], callback); |
| 786 | } else { |
| 787 | while (handlers.callbacks[eventType].length > 0) { |
| 788 | handlers.callbacks[eventType].pop(); |
| 789 | } |
| 790 | } |
| 791 | // free the array if empty |
| 792 | if (handlers.callbacks[eventType].length === 0) { |
| 793 | delete handlers.callbacks[eventType]; |
| 794 | } |
| 795 | } |
| 796 | } |
| 797 | if (Object.keys(handlers.callbacks).length === 0) { |
| 798 | eventHandlers.delete(region); |
| 799 | } |
| 800 | } |
| 801 | } |
| 802 | |
| 803 | /** |
| 804 | * allows the removal of all registered event listeners from the object target. |
no test coverage detected