diff --git a/src/compiler/compile/render_dom/wrappers/shared/add_event_handlers.ts b/src/compiler/compile/render_dom/wrappers/shared/add_event_handlers.ts index 588611de60..4ef4593c0a 100644 --- a/src/compiler/compile/render_dom/wrappers/shared/add_event_handlers.ts +++ b/src/compiler/compile/render_dom/wrappers/shared/add_event_handlers.ts @@ -1,6 +1,9 @@ import Block from '../../Block'; import EventHandler from '../../../nodes/EventHandler'; -import { x } from 'code-red'; +import { x, p } from 'code-red'; + +const TRUE = x`true`; +const FALSE = x`false`; export default function add_event_handlers( block: Block, @@ -13,33 +16,24 @@ export default function add_event_handlers( if (handler.modifiers.has('stopPropagation')) snippet = x`@stop_propagation(${snippet})`; if (handler.modifiers.has('self')) snippet = x`@self(${snippet})`; - // let opts_string = ''; - - // if (block.renderer.options.dev) { - // if (handler.modifiers.has('stopPropagation')) { - // opts_string = ', true'; - // } - - // if (handler.modifiers.has('preventDefault')) { - // opts_string = ', true' + opts_string; - // } else if (opts_string) { - // opts_string = ', false' + opts_string; - // } - // } + const args = []; - // const opts = ['passive', 'once', 'capture'].filter(mod => handler.modifiers.has(mod)); - // if (opts.length) { - // opts_string = (opts.length === 1 && opts[0] === 'capture') - // ? ', true' - // : `, { ${opts.map(opt => `${opt}: true`).join(', ')} }`; - // } else if (opts_string) { - // opts_string = ', false' + opts_string; - // } + const opts = ['passive', 'once', 'capture'].filter(mod => handler.modifiers.has(mod)); + if (opts.length) { + args.push((opts.length === 1 && opts[0] === 'capture') + ? TRUE + : x`{ ${opts.map(opt => p`${opt}: true`)} }`); + } else if (block.renderer.options.dev) { + args.push(FALSE); + } - // TODO modifiers + if (block.renderer.options.dev) { + args.push(handler.modifiers.has('stopPropagation') ? TRUE : FALSE); + args.push(handler.modifiers.has('preventDefault') ? TRUE : FALSE); + } block.event_listeners.push( - x`@listen(${target}, "${handler.name}", ${snippet})` + x`@listen(${target}, "${handler.name}", ${snippet}, ${args})` ); }); }