@@ -51,29 +51,34 @@ export function createObjectForNestedModel(model, parentView) {
51
51
} ;
52
52
}
53
53
54
+ // based on https://stackoverflow.com/a/58416333/5397207
55
+ function pickSerializable ( object , depth = 0 , max_depth = 2 ) {
56
+ // change max_depth to see more levels, for a touch event, 2 is good
57
+ if ( depth > max_depth )
58
+ return 'Object' ;
59
+
60
+ const obj = { } ;
61
+ for ( let key in object ) {
62
+ let value = object [ key ] ;
63
+ if ( value instanceof Node )
64
+ // specify which properties you want to see from the node
65
+ value = { id : value . id } ;
66
+ else if ( value instanceof Window )
67
+ value = 'Window' ;
68
+ else if ( value instanceof Object )
69
+ value = pickSerializable ( value , depth + 1 , max_depth ) ;
70
+
71
+ obj [ key ] = value ;
72
+ }
73
+
74
+ return obj ;
75
+ }
76
+
54
77
export function eventToObject ( event ) {
55
78
if ( event == null ) {
56
79
return event ;
57
80
}
58
- let props ;
59
- switch ( event . constructor ) {
60
- case MouseEvent :
61
- props = [ 'altKey' , 'ctrlKey' , 'metaKey' , 'shiftKey' , 'offsetX' , 'offsetY' , 'clientX' , 'clientY' , 'pageX' , 'pageY' , 'screenX' , 'screenY' , 'shiftKey' , 'x' , 'y' ] ;
62
- break ;
63
- case WheelEvent :
64
- props = [ 'altKey' , 'ctrlKey' , 'metaKey' , 'shiftKey' , 'offsetX' , 'offsetY' , 'clientX' , 'clientY' , 'pageX' , 'pageY' , 'screenX' , 'screenY' , 'shiftKey' , 'x' , 'y' , 'wheelDelta' , 'wheelDeltaX' , 'wheelDeltaY' ] ;
65
- break ;
66
- // TODO: More events
67
- default :
68
- return event ;
69
- }
70
-
71
- return props . reduce (
72
- ( result , key ) => {
73
- result [ key ] = event [ key ] ; // eslint-disable-line no-param-reassign
74
- return result ;
75
- } , { } ,
76
- ) ;
81
+ return pickSerializable ( event ) ;
77
82
}
78
83
79
84
export function vueRender ( createElement , model , parentView , slotScopes ) {
0 commit comments