@@ -17,6 +17,19 @@ const prefixLen = (a, b) => {
1717 return i
1818}
1919
20+ const eventDefaults = type => ( {
21+ pointerover : { bubbles : true , cancelable : true , composed : true } ,
22+ pointerenter : { bubbles : false , cancelable : false , composed : false } ,
23+ pointerdown : { bubbles : true , cancelable : true , composed : true } ,
24+ pointermove : { bubbles : true , cancelable : true , composed : true } ,
25+ pointerup : { bubbles : true , cancelable : true , composed : true } ,
26+ pointerout : { bubbles : true , cancelable : true , composed : true } ,
27+ pointerleave : { bubbles : false , cancelable : false , composed : false } ,
28+ pointercancel : { bubbles : true , cancelable : true , composed : true } ,
29+ gotpointercapture : { bubbles : true , cancelable : false , composed : true } ,
30+ lostpointercapture : { bubbles : true , cancelable : false , composed : true } ,
31+ } ) [ type ] ?? { bubbles : true , cancelable : true , composed : true }
32+
2033export class Pointer {
2134 static id = ( ) => {
2235 const { crypto } = globalThis
@@ -136,11 +149,11 @@ export class Pointer {
136149 release ( target ) {
137150 if ( ! this . #captureTarget) return
138151
152+ this . #captureTarget = null
153+
139154 this . #dispatch( 'lostpointercapture' , target , this . #lastPoint ?? null , {
140155 bubbles : true ,
141156 } )
142-
143- this . #captureTarget = null
144157 }
145158
146159 touch ( target , point ) { return null }
@@ -195,6 +208,8 @@ export class Pointer {
195208 if ( typeof Event !== 'function' )
196209 throw new Error ( 'PointerEvent is not available in this environment' )
197210
211+ const defaults = eventDefaults ( type )
212+
198213 const base = {
199214 pointerId : this . #id,
200215 pointerType : this . type ,
@@ -216,13 +231,16 @@ export class Pointer {
216231 const props = this . props ( i , total )
217232
218233 const movement =
219- type === 'pointermove' && this . type === 'mouse'
234+ type === 'pointermove'
220235 ? this . #movement( point )
221236 : { }
222237
223- const init = { ...base , ...coords , ...props , ...movement , ...extra }
238+ const init = { ...defaults , ... base , ...coords , ...props , ...movement , ...extra }
224239
225240 target . dispatchEvent ( new Event ( type , init ) )
241+
242+ if ( point )
243+ this . #lastPoint = point
226244 }
227245
228246 #movement( point ) {
0 commit comments