@@ -6,12 +6,19 @@ export const eventCallbacks = new WeakMap()
66export const eventSubjects = new WeakMap ( )
77export const eventDebouncer = new WeakMap ( )
88
9- function executeEvent ( callback , subject , event , data ) {
10- if ( typeof callback === 'object' ) {
11- Object . assign ( subject . source , callback )
12- } else {
13- callback ( { ...subject , event, data } )
9+ export function generateSubject ( selector , attributes , name ) {
10+ if ( Array . isArray ( attributes [ name ] ) ) {
11+ for ( let i = 0 ; i < attributes [ name ] . length ; i ++ ) {
12+ if ( typeof attributes [ name ] [ i ] === 'object' ) {
13+ let changeset = attributes [ name ] [ i ]
14+ attributes [ name ] [ i ] = ( ) => Object . assign ( attributes . source , changeset )
15+ }
16+ }
17+ } else if ( typeof attributes [ name ] === 'object' ) {
18+ let changeset = attributes [ name ]
19+ attributes [ name ] = ( ) => Object . assign ( attributes . source , changeset )
1420 }
21+ eventSubjects . set ( selector , attributes )
1522}
1623
1724function debounce ( selector , name , time , callback ) {
@@ -60,17 +67,23 @@ export function generateCallback(selector, name) {
6067 object [ property ] = event . target [ valueName ] === 'true'
6168 } else if ( typeof object [ property ] === 'number' ) {
6269 object [ property ] = + event . target [ valueName ] || 0
70+ } else if ( object [ property ] instanceof Date ) {
71+ const [ yyyy , mm , dd ] = event . target [ valueName ] . split ( '-' )
72+ object [ property ] . setFullYear ( yyyy )
73+ object [ property ] . setMonth ( + mm - 1 )
74+ object [ property ] . setDate ( dd )
75+ object [ property ] = object [ property ]
6376 } else {
6477 object [ property ] = event . target [ valueName ]
6578 }
6679 }
6780 if ( subject [ name ] === noop ) return
6881 if ( Array . isArray ( subject [ name ] ) ) {
6982 for ( const subcallback of subject [ name ] ) {
70- executeEvent ( subcallback , subject , event , data )
83+ subcallback ( { ... subject , event, data } )
7184 }
7285 } else {
73- executeEvent ( subject [ name ] , subject , event , data )
86+ subject [ name ] ( { ... subject , event, data } )
7487 }
7588 } )
7689 }
0 commit comments