@@ -5,22 +5,18 @@ import { cached, isUndef } from 'shared/util'
55
66const normalizeEvent = cached ( ( name :string ) :{
77name :string ,
8- plain :boolean ,
98once :boolean ,
109capture :boolean ,
11- passive :boolean ,
12- handler ?:Function
10+ passive :boolean
1311} = > {
1412const passive= name . charAt ( 0 ) === '&'
1513name = passive ?name . slice ( 1 ) :name
1614const once = name . charAt ( 0 ) === '~' // Prefixed last, checked first
1715name = once ?name . slice ( 1 ) :name
1816const capture = name . charAt ( 0 ) === '!'
1917name = capture ?name . slice ( 1 ) :name
20- const plain = ! ( passive || once || capture )
2118return {
2219name ,
23- plain,
2420 once,
2521 capture,
2622 passive
@@ -44,11 +40,6 @@ export function createFnInvoker (fns: Function | Array<Function>): Function {
4440return invoker
4541}
4642
47- // #6552
48- function prioritizePlainEvents ( a , b ) {
49- return a . plain ?- 1 :b . plain ?1 :0
50- }
51-
5243export function updateListeners (
5344on :Object ,
5445oldOn :Object ,
@@ -57,13 +48,10 @@ export function updateListeners (
5748vm :Component
5849) {
5950let name , cur , old , event
60- const toAdd = [ ]
61- let hasModifier = false
6251for ( name in on ) {
6352cur = on [ name ]
6453old = oldOn [ name ]
6554event = normalizeEvent ( name )
66- if ( ! event . plain ) hasModifier = true
6755if ( isUndef ( cur ) ) {
6856process . env . NODE_ENV !== 'production' && warn (
6957`Invalid handler for event "${ event . name } ": got ` + String ( cur ) ,
@@ -73,20 +61,12 @@ export function updateListeners (
7361if ( isUndef ( cur . fns ) ) {
7462cur = on [ name ] = createFnInvoker ( cur )
7563}
76- event . handler= cur
77- toAdd . push ( event )
64+ add ( event . name , cur , event . once , event . capture , event . passive )
7865} else if ( cur !== old ) {
7966old . fns = cur
8067on [ name ] = old
8168}
8269}
83- if ( toAdd . length ) {
84- if ( hasModifier ) toAdd . sort ( prioritizePlainEvents )
85- for ( let i = 0 ; i < toAdd . length ; i ++ ) {
86- const event = toAdd [ i ]
87- add ( event . name , event . handler , event . once , event . capture , event . passive )
88- }
89- }
9070for ( name in oldOn ) {
9171if ( isUndef ( on [ name ] ) ) {
9272event = normalizeEvent ( name )