| 191 | }; |
| 192 | |
| 193 | const dispose: EventManager['dispose'] = () => { |
| 194 | if (disposed) return; |
| 195 | disposed = true; |
| 196 | |
| 197 | tapCandidate = null; |
| 198 | suppressNextLostPointerCaptureId = null; |
| 199 | |
| 200 | canvas.removeEventListener('pointermove', onPointerMove); |
| 201 | canvas.removeEventListener('pointerleave', onPointerLeave); |
| 202 | canvas.removeEventListener('pointercancel', onPointerCancel); |
| 203 | canvas.removeEventListener('lostpointercapture', onLostPointerCapture); |
| 204 | canvas.removeEventListener('pointerdown', onPointerDown); |
| 205 | canvas.removeEventListener('pointerup', onPointerUp); |
| 206 | |
| 207 | listeners.mousemove.clear(); |
| 208 | listeners.click.clear(); |
| 209 | listeners.mouseleave.clear(); |
| 210 | }; |
| 211 | |
| 212 | return { canvas, on, off, updateGridArea, dispose }; |
| 213 | } |